首页 > 编程语言 >利用python下载小鹅通课程视频的方法(已购) 绝对有效2024

利用python下载小鹅通课程视频的方法(已购) 绝对有效2024

时间:2024-08-20 08:56:33浏览次数:16  
标签:小鹅通 视频 python 2024 url 文件夹 print re content

1、先找到视频对应的红框里的地址,网页右键,审查元素。

2、打开地址,下载视频对应文件,使用记事本打开,查看文件内容。

3、使用Python解析文件里的url,进行视频下载。

import requests
import re
from Crypto.Cipher import AES

def m3u8(url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }
    # requests得到m3u8文件内容
    content = requests.get(url,headers=header).text
    if "#EXTM3U" not in content:
        print("这不是一个m3u8的视频链接!")
        return False
    if "EXT-X-KEY" not in content:
        print("没有加密")
        return False

    # 使用re正则得到key和视频地址
    jiami=re.findall('#EXT-X-KEY:(.*)\n',content)
    key=re.findall('URI="(.*)"',jiami[0])
    vi = re.findall('IV=(.*)',jiami[0])[0]
    
    #得到每一个ts视频链接
    tslist=re.findall('EXTINF:(.*),\n(.*)\n#',content)
    newlist=[]
    for i in tslist:
        newlist.append(i[1])
        
    #得到key的链接并请求得到加密的key值
    keyurl=key[0]
    keycontent= requests.get(keyurl,headers=header).content

    #得到每一个完整视频的链接地址
    base_url = url.replace(url.split('/')[-1],'')
    #print(base_url)
    tslisturl=[]
    for i in newlist:
        tsurl = base_url + i
        tslisturl.append(tsurl)

    #得到解密方法,这里要导入第三方库  pycrypto
    #这里有一个问题,安装pycrypto成功后,导入from Crypto.Cipher import AES报错
    #找到使用python环境的文件夹,在Lib文件夹下有一个 site-packages 文件夹,里面是我们环境安装的包。
    #找到一个crypto文件夹,打开可以看到 Cipher文件夹,此时我们将 crypto文件夹改为 Crypto 即可使用了
    # 必须添加b'0000000000000000',防止报错ValueError: IV must be 16 bytes long
    cryptor = AES.new(keycontent, AES.MODE_CBC, b'0000000000000000')

    #for循环获取视频文件
    for i in tslisturl:
        print(i)
        res = requests.get(i, header)
        #使用解密方法解密得到的视频文件
        cont=cryptor.decrypt(res.content)
        #以追加的形式保存为mp4文件,mp4可以随意命名,这里命名为小鹅通视频下载测试
        with open('小鹅通视频下载测试.mp4', 'ab+') as f:
            f.write(cont)
    return True

4、传入网络地址,下载视频。

if __name__ == '__main__':
    # 这个是网页上查到的小鹅通的卖u8地址
    url = "https://1252524126.vod2.myqcloud.com/9764a7a5vodtransgzp1252524126/91c29aad5285890807164109582/drm/v.f146750.m3u8"
    pd = m3u8(url)
    if pd:
      print('视频下载完成!')

5、搞不定的话,点击这里:

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/11eC_wChltMuM-v7sh5Cv3g?pwd=wtiz 

标签:小鹅通,视频,python,2024,url,文件夹,print,re,content
From: https://blog.csdn.net/qwe1q2a3z/article/details/141341841

相关文章

  • 实战教程:Python实现高校爬虫,运用协同过滤与k-means算法进行专业评分分析
    ......
  • unbuntu更新Python3版本到最新,安装依赖手动编译
    安装依赖sudoaptupdatesudoaptinstallbuild-essentialzlib1g-devlibffi-devlibssl-dev下载安装包,手动配置编译官网查找对应linux版本tgz包wgethttps://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgztar-xzvfPython-3.11.0.tgzcdPython-3.11.0......
  • 3142:练23.4 首字母(C、C++、python)
    3142:练23.4 首字母信息学奥赛一本通-编程启蒙(C++版)在线评测系统C源码:#include<stdio.h>#include<stdlib.h>intmain(){ charb; scanf("%c",&b); if(b=='a'){ printf("apple"); } elseif(b=='b'){ printf("ba......
  • 数据炼金术:用Python爬虫精炼信息
    标题:数据炼金术:用Python爬虫精炼信息在数据泛滥的互联网时代,Python爬虫不仅是搜集信息的利器,更是清洗和格式化数据的炼金术。本文将带你走进数据清洗和格式化的世界,展示如何使用Python爬虫从海量网络信息中提取、清洗并重塑数据,最终转化为有价值的信息资产。一、数据清洗......
  • 变频器的python用法
    案例以串口发送485指令实现硬件需求:USB转485接口、变频器(由三科变频提供测试产品)这里写的是一些常用的功能,计划要完成一个全功能的参数设置程序,貌似工作量不小呢。【特别声明】:代码测试所使用的485通讯是三科SKI90型号的机器,其他品牌型号变频器用本代码调试时务必请先查阅......
  • [Python学习日记-10] Python中的流程控制(if...else...)
    简介        假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动作的。你要判断那条岔路是你真正要走的路,如果我们想让程序也能处理这样的判断怎么办?很简单,只需要在程序里预设一些条件判断......
  • Python 加载 TensorFlow 模型
    1.SavedModel和HDF5加载TensorFlow模型为了加载一个TensorFlow模型,我们首先需要明确模型的格式。TensorFlow支持多种模型格式,但最常见的两种是SavedModel和HDF5(对于Keras模型)。这里,我将分别给出加载这两种模型格式的示例代码。1.1加载SavedModel格式的TensorFlow模型SavedModel......
  • 2024.8.19随笔
    关于迟到这么多天就迟到一次就被抓了个正着/jk今天刚好错过地铁,后来在地铁上碰见了int08,本来他和我都坐的上一班结果今天都迟到了,然后在路上就一直讨论李老和hfu抓住我们的概率。本来我想今天迟到就算了,毕竟刚好错过地铁下一班要等好一会没办法,但int08认为他有很大概率被抓......
  • Python Lambda 用法大全
    PythonLambda用法大全一、Lambda表达式基础Lambda的组成分为三部分Lambda表达式是Python中的一种匿名函数,它可以在一行代码中定义函数并立即调用它。与普通函数不同的是,Lambda函数通常不需要使用def关键字去定义,而是在需要时直接使用lambda关键字来创建。Lambda函数可以接受......
  • 【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语
    前言:    觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)   如果觉得有帮助,或者觉得我写的好,......