# hm3u8dl python m3u8视频下载器
python version ≥ 3.7
推荐在终端中使用,在pycharm中使用时请设置 `在输出控制台中模拟终端`
视频介绍:
一款功能强大的m3u8下载器 hm3u8dl : https://www.bilibili.com/video/BV1hP4y1975u
<iframe src="//player.bilibili.com/player.html?aid=903264758&bvid=BV1hP4y1975u&cid=911754111&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
## 1 特性
解密类:
1. 支持AES-128-CBC , AES-128-ECB , SAMPLE-AES-CTR , cbcs , SAMPLE-AES,copyrightDRM解密
1. 对部分链接支持魔改,自动出key
实用类:
1. 支持多线程下载,断点续传,自动解密
2. 支持多方式加载m3u8文件:链接、本地文件链接,文件夹
3. 自带ffmpeg 等必要文件,无需配置环境变量
4. 支持master 列表选择
5. 支持日志记录
6. 支持在终端中使用
7. 输出彩色信息,且只有一行,方便批量爬取视频
8. 支持 windows mac linux,全平台通用
9. 支持下载出错自动跳过
9. 随机请求头
9. GUI 版本正在测试
## 2 参数介绍
```
必填参数:
m3u8url m3u8网络链接、本地文件链接、本地文件夹链接、txt文件内容
非必填参数:
-h, --help show this help message and exit
-title 视频名称
-method 解密方法
-key key
-iv iv
-nonce nonce 可能用到的第二个key
-enable_del 下载完删除多余文件
-merge_mode 1:二进制合并,2:二进制合并完成后用ffmpeg转码,3:用ffmpeg转码
-base_uri 解析时的baseuri
-threads 线程数
-headers 请求头
-work_dir 工作目录
-proxy 代理:{'http':'http://127.0.0.1:8888','https:':'https://127.0.0.1:8888'}
```
## 3 GUI 版使用
按照界面提示输入即可
<img src="https://gitee.com/hecoter/blog/raw/master/imags/QQ%E6%88%AA%E5%9B%BE20221207202346.png" style="zoom:50%;" />
<img src="https://gitee.com/hecoter/blog/raw/master/imags/QQ%E6%88%AA%E5%9B%BE20221207202404.png" style="zoom:50%;" />
<img src="https://gitee.com/hecoter/blog/raw/master/imags/QQ%E6%88%AA%E5%9B%BE20221207202410.png" style="zoom:50%;" />
<img src="https://gitee.com/hecoter/blog/raw/master/imags/0.png" style="zoom:50%;" />
## 4 CLI版 使用
安装:
```
pip install --upgrade hm3u8dl_cli
```
```
m3u8download('https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8',title='132')
```
或者采用实例化对象的方法进行使用:
```
from hm3u8dl_cli.util import M3U8InfoObj
from hm3u8dl_cli import m3u8download
m3u8InfoObj = M3U8InfoObj() # 示例化一个m3u8Info对象
m3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
m3u8InfoObj.title = '标题'
m3u8download(m3u8InfoObj) # 只需填一个参数
```
#### m3u8url 示例(必填)
```
from hm3u8dl_cli import m3u8download
m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8' # 网络链接
# m3u8url = r"C:\Users\hecot\Desktop\m3u8文件夹" # 文件夹
# m3u8url = r"C:\Users\hecot\Downloads\4adf37ccc0342e919fef2de4d02b473a_3 (3).m3u8" # 本地文件
# m3u8url = r"C:\Users\hecot\Desktop\新建 文本文档.txt" # txt 文件
""" txt 文件内容格式: title,m3u8url,key
文件标题1,C:\Users\hecot\Desktop\m3u8文件夹\1.m3u8
文件标题2,C:\Users\hecot\Desktop\m3u8文件夹\1.m3u8
"""
m3u8download(m3u8url,merge_mode=3)
```
#### title 示例(选填)
```
from hm3u8dl_cli import m3u8download
m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
title = '标题'
m3u8download(m3u8url)
```
#### method 示例(选填)
一般可自动识别
```
None、AES-128、AES-128-ECB、CHACHA、copyrightDRM、FakeImage、Widevine
```
#### key (选填)
一般可自动识别,用于自定义key
支持base64,hex,字节各类格式
```
from hm3u8dl_cli import m3u8download
m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
key = 'kQ2aSmyG1FDSmzpqTso/0w=='
# key = b'\x91\r\x9aJl\x86\xd4P\xd2\x9b:jN\xca?\xd3'
# key = '910d9a4a6c86d450d29b3a6a4eca3fd3'
m3u8download(m3u8url,key=key)
```
#### iv(选填)
一般可自动识别,用于自定义iv
同Key
#### nonce (选填)
CHACHA 解密需使用此参数,用法同key
#### enable_del(选填)
下载完成后删除多余文件,`bool`型,默认`True`
```
from hm3u8dl_cli import m3u8download
from hm3u8dl_cli.util import M3U8InfoObj
m3u8InfoObj = M3U8InfoObj()
m3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
m3u8InfoObj.enable_del = False
m3u8download(m3u8InfoObj)
```
#### merge_mode (选填)
视频合并类型,`int `型
1:二进制合并,2:二进制合并完成后用ffmpeg转码,3:用ffmpeg转码
推荐使用3,鉴于你的电脑可能没有配置ffmpeg 环境,因此默认为 1
FFmpeg 环境配置 : [FFmpeg 环境配置 · Discussion #23 · hecoter/hm3u8dl_cli (github.com)](https://github.com/hecoter/hm3u8dl_cli/discussions/23)
```
from hm3u8dl_cli import m3u8download
from hm3u8dl_cli.util import M3U8InfoObj
m3u8InfoObj = M3U8InfoObj()
m3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
m3u8InfoObj.merge_mode = 3
m3u8download(m3u8InfoObj)
```
#### threads (选填)
下载线程数,`int `型,自动读取电脑配置,默认为 cpu核数
#### headers (选填)
请求头,`dict` 型,默认随机请求头
```
from hm3u8dl_cli import m3u8download
from hm3u8dl_cli.util import M3U8InfoObj
m3u8InfoObj = M3U8InfoObj()
m3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
m3u8InfoObj.headers = {
'User-Agent':'iphone',
'Referer':'https://ntp.msn.cn/',
'Cookie':None
}
m3u8download(m3u8InfoObj)
```
#### work_dir (选填)
工作目录,默认 ./Downloads
```
from hm3u8dl_cli import m3u8download
from hm3u8dl_cli.util import M3U8InfoObj
m3u8InfoObj = M3U8InfoObj()
m3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
m3u8InfoObj.work_dir = r'C:\Users\hecot\Desktop'
m3u8download(m3u8InfoObj)
```
#### proxy (选填)
代理,`dict` 型,默认使用系统代理
```
from hm3u8dl_cli import m3u8download
from hm3u8dl_cli.util import M3U8InfoObj
m3u8InfoObj = M3U8InfoObj()
m3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'
m3u8InfoObj.proxy = {'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080', 'ftp': 'ftp://127.0.0.1:8080'}
# m3u8InfoObj.proxy = {'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080', 'ftp': 'ftp://127.0.0.1:8080'}
m3u8download(m3u8InfoObj)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/hecoter/hm3u8dl_cli",
"name": "hm3u8dl-cli",
"maintainer": "hecoter",
"docs_url": null,
"requires_python": "",
"maintainer_email": "hecoter12138@gmail.com",
"keywords": "m3u8 AES decrypt download parse",
"author": "hecoter",
"author_email": "hecoter12138@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/af/0b/2bce908db01d357349c2f0b095173acdd4ae1f40457f88465f1d1e6f5771/hm3u8dl_cli-0.4.9.tar.gz",
"platform": "all",
"description": "# hm3u8dl python m3u8\u89c6\u9891\u4e0b\u8f7d\u5668\r\n\r\npython version \u2265 3.7\r\n\r\n\u63a8\u8350\u5728\u7ec8\u7aef\u4e2d\u4f7f\u7528\uff0c\u5728pycharm\u4e2d\u4f7f\u7528\u65f6\u8bf7\u8bbe\u7f6e `\u5728\u8f93\u51fa\u63a7\u5236\u53f0\u4e2d\u6a21\u62df\u7ec8\u7aef`\r\n\r\n\u89c6\u9891\u4ecb\u7ecd\uff1a\r\n\r\n\u4e00\u6b3e\u529f\u80fd\u5f3a\u5927\u7684m3u8\u4e0b\u8f7d\u5668 hm3u8dl : https://www.bilibili.com/video/BV1hP4y1975u\r\n\r\n<iframe src=\"//player.bilibili.com/player.html?aid=903264758&bvid=BV1hP4y1975u&cid=911754111&page=1\" scrolling=\"no\" border=\"0\" frameborder=\"no\" framespacing=\"0\" allowfullscreen=\"true\"> </iframe>\r\n\r\n## 1 \u7279\u6027\r\n\r\n\u89e3\u5bc6\u7c7b\uff1a\r\n\r\n1. \u652f\u6301AES-128-CBC , AES-128-ECB , SAMPLE-AES-CTR , cbcs , SAMPLE-AES\uff0ccopyrightDRM\u89e3\u5bc6\r\n1. \u5bf9\u90e8\u5206\u94fe\u63a5\u652f\u6301\u9b54\u6539\uff0c\u81ea\u52a8\u51fakey\r\n\r\n\u5b9e\u7528\u7c7b\uff1a\r\n\r\n1. \u652f\u6301\u591a\u7ebf\u7a0b\u4e0b\u8f7d\uff0c\u65ad\u70b9\u7eed\u4f20\uff0c\u81ea\u52a8\u89e3\u5bc6\r\n\r\n2. \u652f\u6301\u591a\u65b9\u5f0f\u52a0\u8f7dm3u8\u6587\u4ef6\uff1a\u94fe\u63a5\u3001\u672c\u5730\u6587\u4ef6\u94fe\u63a5\uff0c\u6587\u4ef6\u5939\r\n\r\n3. \u81ea\u5e26ffmpeg \u7b49\u5fc5\u8981\u6587\u4ef6\uff0c\u65e0\u9700\u914d\u7f6e\u73af\u5883\u53d8\u91cf\r\n\r\n4. \u652f\u6301master \u5217\u8868\u9009\u62e9\r\n\r\n5. \u652f\u6301\u65e5\u5fd7\u8bb0\u5f55\r\n\r\n6. \u652f\u6301\u5728\u7ec8\u7aef\u4e2d\u4f7f\u7528\r\n\r\n7. \u8f93\u51fa\u5f69\u8272\u4fe1\u606f\uff0c\u4e14\u53ea\u6709\u4e00\u884c\uff0c\u65b9\u4fbf\u6279\u91cf\u722c\u53d6\u89c6\u9891\r\n\r\n8. \u652f\u6301 windows mac linux\uff0c\u5168\u5e73\u53f0\u901a\u7528\r\n\r\n9. \u652f\u6301\u4e0b\u8f7d\u51fa\u9519\u81ea\u52a8\u8df3\u8fc7\r\n\r\n9. \u968f\u673a\u8bf7\u6c42\u5934\r\n\r\n9. GUI \u7248\u672c\u6b63\u5728\u6d4b\u8bd5\r\n\r\n \r\n\r\n## 2 \u53c2\u6570\u4ecb\u7ecd\r\n\r\n```\r\n\u5fc5\u586b\u53c2\u6570:\r\n m3u8url \tm3u8\u7f51\u7edc\u94fe\u63a5\u3001\u672c\u5730\u6587\u4ef6\u94fe\u63a5\u3001\u672c\u5730\u6587\u4ef6\u5939\u94fe\u63a5\u3001txt\u6587\u4ef6\u5185\u5bb9\r\n\r\n\u975e\u5fc5\u586b\u53c2\u6570:\r\n -h, --help show this help message and exit\r\n -title \u89c6\u9891\u540d\u79f0\r\n -method \u89e3\u5bc6\u65b9\u6cd5\r\n -key key\r\n -iv iv\r\n -nonce nonce \u53ef\u80fd\u7528\u5230\u7684\u7b2c\u4e8c\u4e2akey\r\n -enable_del\t\u4e0b\u8f7d\u5b8c\u5220\u9664\u591a\u4f59\u6587\u4ef6\r\n -merge_mode\t1:\u4e8c\u8fdb\u5236\u5408\u5e76\uff0c2\uff1a\u4e8c\u8fdb\u5236\u5408\u5e76\u5b8c\u6210\u540e\u7528ffmpeg\u8f6c\u7801\uff0c3\uff1a\u7528ffmpeg\u8f6c\u7801\r\n -base_uri \u89e3\u6790\u65f6\u7684baseuri\r\n -threads \u7ebf\u7a0b\u6570\r\n -headers \u8bf7\u6c42\u5934\r\n -work_dir \u5de5\u4f5c\u76ee\u5f55\r\n -proxy \u4ee3\u7406\uff1a{'http':'http://127.0.0.1:8888','https:':'https://127.0.0.1:8888'}\r\n```\r\n\r\n## 3 GUI \u7248\u4f7f\u7528\r\n\r\n\r\n\r\n\u6309\u7167\u754c\u9762\u63d0\u793a\u8f93\u5165\u5373\u53ef\r\n\r\n<img src=\"https://gitee.com/hecoter/blog/raw/master/imags/QQ%E6%88%AA%E5%9B%BE20221207202346.png\" style=\"zoom:50%;\" />\r\n\r\n<img src=\"https://gitee.com/hecoter/blog/raw/master/imags/QQ%E6%88%AA%E5%9B%BE20221207202404.png\" style=\"zoom:50%;\" />\r\n\r\n<img src=\"https://gitee.com/hecoter/blog/raw/master/imags/QQ%E6%88%AA%E5%9B%BE20221207202410.png\" style=\"zoom:50%;\" />\r\n\r\n<img src=\"https://gitee.com/hecoter/blog/raw/master/imags/0.png\" style=\"zoom:50%;\" />\r\n\r\n## 4 CLI\u7248 \u4f7f\u7528\r\n\r\n\u5b89\u88c5\uff1a\r\n\r\n```\r\npip install --upgrade hm3u8dl_cli\r\n```\r\n\r\n```\r\nm3u8download('https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8',title='132')\r\n```\r\n\r\n\u6216\u8005\u91c7\u7528\u5b9e\u4f8b\u5316\u5bf9\u8c61\u7684\u65b9\u6cd5\u8fdb\u884c\u4f7f\u7528\uff1a\r\n\r\n```\r\nfrom hm3u8dl_cli.util import M3U8InfoObj\r\nfrom hm3u8dl_cli import m3u8download\r\n\r\nm3u8InfoObj = M3U8InfoObj() # \u793a\u4f8b\u5316\u4e00\u4e2am3u8Info\u5bf9\u8c61\r\n\r\nm3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nm3u8InfoObj.title = '\u6807\u9898'\r\n\r\nm3u8download(m3u8InfoObj) # \u53ea\u9700\u586b\u4e00\u4e2a\u53c2\u6570\r\n```\r\n\r\n#### m3u8url \u793a\u4f8b\uff08\u5fc5\u586b\uff09\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nm3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8' # \u7f51\u7edc\u94fe\u63a5\r\n# m3u8url = r\"C:\\Users\\hecot\\Desktop\\m3u8\u6587\u4ef6\u5939\" # \u6587\u4ef6\u5939\r\n# m3u8url = r\"C:\\Users\\hecot\\Downloads\\4adf37ccc0342e919fef2de4d02b473a_3 (3).m3u8\" # \u672c\u5730\u6587\u4ef6\r\n# m3u8url = r\"C:\\Users\\hecot\\Desktop\\\u65b0\u5efa \u6587\u672c\u6587\u6863.txt\" # txt \u6587\u4ef6\r\n\"\"\" txt \u6587\u4ef6\u5185\u5bb9\u683c\u5f0f\uff1a title,m3u8url,key\r\n\u6587\u4ef6\u6807\u98981,C:\\Users\\hecot\\Desktop\\m3u8\u6587\u4ef6\u5939\\1.m3u8\r\n\u6587\u4ef6\u6807\u98982,C:\\Users\\hecot\\Desktop\\m3u8\u6587\u4ef6\u5939\\1.m3u8\r\n\"\"\"\r\nm3u8download(m3u8url,merge_mode=3)\r\n```\r\n\r\n#### title \u793a\u4f8b\uff08\u9009\u586b\uff09\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nm3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\ntitle = '\u6807\u9898'\r\nm3u8download(m3u8url)\r\n```\r\n\r\n#### method \u793a\u4f8b\uff08\u9009\u586b\uff09\r\n\r\n\u4e00\u822c\u53ef\u81ea\u52a8\u8bc6\u522b\r\n\r\n```\r\nNone\u3001AES-128\u3001AES-128-ECB\u3001CHACHA\u3001copyrightDRM\u3001FakeImage\u3001Widevine\r\n```\r\n\r\n#### key (\u9009\u586b)\r\n\r\n\u4e00\u822c\u53ef\u81ea\u52a8\u8bc6\u522b\uff0c\u7528\u4e8e\u81ea\u5b9a\u4e49key\r\n\r\n\u652f\u6301base64,hex,\u5b57\u8282\u5404\u7c7b\u683c\u5f0f\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nm3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nkey = 'kQ2aSmyG1FDSmzpqTso/0w=='\r\n# key = b'\\x91\\r\\x9aJl\\x86\\xd4P\\xd2\\x9b:jN\\xca?\\xd3'\r\n# key = '910d9a4a6c86d450d29b3a6a4eca3fd3'\r\nm3u8download(m3u8url,key=key)\r\n```\r\n\r\n#### iv\uff08\u9009\u586b\uff09\r\n\r\n\u4e00\u822c\u53ef\u81ea\u52a8\u8bc6\u522b\uff0c\u7528\u4e8e\u81ea\u5b9a\u4e49iv\r\n\r\n\u540cKey\r\n\r\n#### nonce (\u9009\u586b)\r\n\r\nCHACHA \u89e3\u5bc6\u9700\u4f7f\u7528\u6b64\u53c2\u6570\uff0c\u7528\u6cd5\u540ckey\r\n\r\n#### enable_del\uff08\u9009\u586b\uff09\r\n\r\n\u4e0b\u8f7d\u5b8c\u6210\u540e\u5220\u9664\u591a\u4f59\u6587\u4ef6\uff0c`bool`\u578b\uff0c\u9ed8\u8ba4`True`\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nfrom hm3u8dl_cli.util import M3U8InfoObj\r\n\r\nm3u8InfoObj = M3U8InfoObj()\r\n\r\nm3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nm3u8InfoObj.enable_del = False\r\n\r\nm3u8download(m3u8InfoObj)\r\n```\r\n\r\n#### merge_mode \uff08\u9009\u586b\uff09\r\n\r\n\u89c6\u9891\u5408\u5e76\u7c7b\u578b\uff0c`int `\u578b\r\n\r\n1:\u4e8c\u8fdb\u5236\u5408\u5e76\uff0c2\uff1a\u4e8c\u8fdb\u5236\u5408\u5e76\u5b8c\u6210\u540e\u7528ffmpeg\u8f6c\u7801\uff0c3\uff1a\u7528ffmpeg\u8f6c\u7801\r\n\r\n\u63a8\u8350\u4f7f\u75283\uff0c\u9274\u4e8e\u4f60\u7684\u7535\u8111\u53ef\u80fd\u6ca1\u6709\u914d\u7f6effmpeg \u73af\u5883\uff0c\u56e0\u6b64\u9ed8\u8ba4\u4e3a 1 \r\n\r\nFFmpeg \u73af\u5883\u914d\u7f6e : [FFmpeg \u73af\u5883\u914d\u7f6e \u00b7 Discussion #23 \u00b7 hecoter/hm3u8dl_cli (github.com)](https://github.com/hecoter/hm3u8dl_cli/discussions/23)\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nfrom hm3u8dl_cli.util import M3U8InfoObj\r\n\r\nm3u8InfoObj = M3U8InfoObj()\r\n\r\nm3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nm3u8InfoObj.merge_mode = 3\r\n\r\nm3u8download(m3u8InfoObj)\r\n```\r\n\r\n#### threads (\u9009\u586b)\r\n\r\n\u4e0b\u8f7d\u7ebf\u7a0b\u6570\uff0c`int `\u578b,\u81ea\u52a8\u8bfb\u53d6\u7535\u8111\u914d\u7f6e\uff0c\u9ed8\u8ba4\u4e3a cpu\u6838\u6570\r\n\r\n#### headers \uff08\u9009\u586b\uff09\r\n\r\n\u8bf7\u6c42\u5934\uff0c`dict` \u578b\uff0c\u9ed8\u8ba4\u968f\u673a\u8bf7\u6c42\u5934\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nfrom hm3u8dl_cli.util import M3U8InfoObj\r\n\r\nm3u8InfoObj = M3U8InfoObj()\r\n\r\nm3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nm3u8InfoObj.headers = {\r\n 'User-Agent':'iphone',\r\n 'Referer':'https://ntp.msn.cn/',\r\n 'Cookie':None\r\n}\r\nm3u8download(m3u8InfoObj)\r\n```\r\n\r\n#### work_dir \uff08\u9009\u586b\uff09\r\n\r\n\u5de5\u4f5c\u76ee\u5f55\uff0c\u9ed8\u8ba4 ./Downloads \r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nfrom hm3u8dl_cli.util import M3U8InfoObj\r\n\r\nm3u8InfoObj = M3U8InfoObj()\r\n\r\nm3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nm3u8InfoObj.work_dir = r'C:\\Users\\hecot\\Desktop'\r\n\r\nm3u8download(m3u8InfoObj)\r\n```\r\n\r\n#### proxy (\u9009\u586b)\r\n\r\n\u4ee3\u7406\uff0c`dict` \u578b\uff0c\u9ed8\u8ba4\u4f7f\u7528\u7cfb\u7edf\u4ee3\u7406\r\n\r\n```\r\nfrom hm3u8dl_cli import m3u8download\r\nfrom hm3u8dl_cli.util import M3U8InfoObj\r\n\r\nm3u8InfoObj = M3U8InfoObj()\r\n\r\nm3u8InfoObj.m3u8url = 'https://hls.videocc.net/4adf37ccc0/a/4adf37ccc0342e919fef2de4d02b473a_3.m3u8'\r\nm3u8InfoObj.proxy = {'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080', 'ftp': 'ftp://127.0.0.1:8080'}\r\n# m3u8InfoObj.proxy = {'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080', 'ftp': 'ftp://127.0.0.1:8080'}\r\n\r\nm3u8download(m3u8InfoObj)\r\n```\r\n",
"bugtrack_url": null,
"license": "MulanPSL2",
"summary": "m3u8\u89c6\u9891\u89e3\u6790\uff0c\u4e0b\u8f7d\uff0c\u89e3\u5bc6\uff0c\u5408\u5e76\u7684python\u7a0b\u5e8f\uff0c\u652f\u6301\u5168\u5e73\u53f0",
"version": "0.4.9",
"split_keywords": [
"m3u8",
"aes",
"decrypt",
"download",
"parse"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "56a88525d86ddf14b4a36827dbc854b0",
"sha256": "f32d44b7ec2afc64789c35897f6a40ec963d41fbb6b2fbe696b085f60aad0c01"
},
"downloads": -1,
"filename": "hm3u8dl_cli-0.4.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "56a88525d86ddf14b4a36827dbc854b0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6671189,
"upload_time": "2022-12-14T13:04:17",
"upload_time_iso_8601": "2022-12-14T13:04:17.804257Z",
"url": "https://files.pythonhosted.org/packages/91/6c/92533a7089f1ab1161b1930ca59980bc2fbcf804d981740c42788b9fc71f/hm3u8dl_cli-0.4.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "2de75472d158e8f7923d18e9531a8363",
"sha256": "90631481ef61ec352e2114308936fac60676f58249014c5e76aa8f96aab967a4"
},
"downloads": -1,
"filename": "hm3u8dl_cli-0.4.9.tar.gz",
"has_sig": false,
"md5_digest": "2de75472d158e8f7923d18e9531a8363",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6637215,
"upload_time": "2022-12-14T13:04:20",
"upload_time_iso_8601": "2022-12-14T13:04:20.964872Z",
"url": "https://files.pythonhosted.org/packages/af/0b/2bce908db01d357349c2f0b095173acdd4ae1f40457f88465f1d1e6f5771/hm3u8dl_cli-0.4.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-14 13:04:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "hecoter",
"github_project": "hm3u8dl_cli",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "hm3u8dl-cli"
}