热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

m3u8转换到mp4python_Python下载m3u8到整合mp4

importrequestsimportrefromCrypto.CipherimportAESdefm3u8(url):header{‘Host’:‘audiblecdns3pr

import requests

import re

from Crypto.Cipher import AES

def m3u8(url):

header = {

‘Host’: ‘audiblecdns3prod-vh.akamaihd.net’,

‘Connection’: ‘keep-alive’,

‘Origin’: ‘https://XXX.com’,

‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36’,

‘Accept’: ‘*/*’,

‘Referer’: ‘https://XXX.com/’,

‘Accept-Encoding’: ‘gzip, deflate, br’,

‘Accept-Language’: ‘zh-CN,zh;q=0.9,en;q=0.8’,

}

# 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(“没有加密”)

# 使用re正则得到key和视频地址

#jiami = re.findall(‘#EXT-X-KEY:(.*)\n’, content)

#key = re.findall(‘URI=”(.*)”‘, jiami[0])

# 得到每一个ts视频链接

tslist = re.findall(‘EXTINF:(.*),\n(.*)\n#’, content)

newlist = []

for i in tslist:

newlist.append(i[1])

# 先获取URL/后的后缀,再替换为空

urlkey = url.split(‘/’)[-1]

url2 = url.replace(urlkey, ”) # 这里为得到url地址的前面部分,为后面key的链接和视频链接拼接使用

# 得到key的链接并请求得到加密的key值

keyurl = url2 #+ key[0]

keycontent = requests.get(keyurl, headers=header).text

# 得到每一个完整视频的链接地址

tslisturl = []

for i in newlist:

tsurl = url2 + i

tslisturl.append(tsurl)

# 得到解密方法,这里要导入第三方库 pycrypto

# 这里有一个问题,安装pycrypto成功后,导入from Crypto.Cipher import AES报错

# 找到使用python环境的文件夹,在Lib文件夹下有一个 site-packages 文件夹,里面是我们环境安装的包。

# 找到一个crypto文件夹,打开可以看到 Cipher文件夹,此时我们将 crypto文件夹改为 Crypto 即可使用了

#cryptor = AES.new(keycontent, AES.MODE_CBC, keycontent)

# for循环获取视频文件

for i in tslisturl:

res = requests.get(i, header)

# 使用解密方法解密得到的视频文件

cont = res.content#cryptor.decrypt(res.content)

# 以追加的形式保存为mp4文件

with open(‘xx.mp4’, ‘ab+’) as f:

f.write(cont)

return True

if __name__ == ‘__main__’:

url = “https://XXX.net/i/295897/audiblewords/content/ro/a144/000012/V$7432621$V/files/ro_a144_000012_22_32.mp4/index_0_a.m3u8”

pd = m3u8(url)

if pd:

print(‘视频下载完成!’)



推荐阅读
  • Python爬取豆瓣数据实现过程解析
    这篇文章主要介绍了Python爬取豆瓣数据实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值, ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 博主使用代理IP来自于网上免费提供高匿IP的这个网站用到的库frombs4importBeautifulSoupimportrandomimporturllib.re ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了正则表达式python相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
  • IamgettingaUnicodeerror:UnicodeEncodeError:charmapcodeccantencodecharacteru\xa9in ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • Scrapy 爬取图片
    1.创建Scrapy项目scrapystartprojectCrawlMeiziTuscrapygenspiderMeiziTuSpiderhttps:movie.douban.c ... [详细]
  • 之前我曾经写过一篇关于CSS的border-image属性的文章。现在几乎所有的现代浏览器都支持这个属性——除了IE10及以下IE版本。看起来这是一个非常 ... [详细]
  • SpringBoot简单日志配置
     在生产环境中,只打印error级别的错误,在测试环境中,可以调成debugapplication.properties文件##默认使用logbacklogging.level.r ... [详细]
  • canvas画图经常发现他是模糊的。解决这个问题主要从两个方面下手。改变canvas渲染的像素情况:画1像素的线条看起来模糊不清,好像更宽的样子。解决方 ... [详细]
author-avatar
禎冬魔_784
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有