-
-
Notifications
You must be signed in to change notification settings - Fork 96
Http Rest API
- 在使用此功能之前,请确保软件的最下面有地址,如果出现 "restapi初始化失败" 的问题,可以使用管理员重新打开一般就不会报错了
- 如果你使用的“无需运行库版本”可能会无解,所以如果想使用此功能请安装运行库
-
URL:
/downloadbyurl
-
Method:
POST
参数 | 中文名称 | 是否必须 | 类型 | 详细说明 |
---|---|---|---|---|
url | 请求地址 | 是 | string | 可以是http/https地址也可以是本地的m3u8地址 |
name | 视频名称 | 否 | string | 最终的视频名称 |
method | 加密方法 | 否 | string | 支持AES-128,AES-192,AES-256 |
key | 密钥 | 否 | string | 可以是十六进制字符串或者base64编码 |
iv | iv | 否 | string | 可以是纯十六进制字符串或0x开头 |
plugin | 插件名称 | 否 | string | M3u8Downloader_H.*.plugin,中间的星号所代表的地址就是,如果还不明白可以看插件开发有具体介绍 |
headers | 请求头 | 否 | string | 此参数只在下载时有用 |
savepath | 保存路径 | 否 | string | 最终视频保存的路径,路径中使用 \ 时请转义成 \\ 当路径中使用/的时候程序会自动转换成\ |
💡 注意,headers和savepath如果不设置则使用默认值
当url是以http或https开头的地址,则自动请求下载,当是本地的m3u8地址时会解析m3u8文件中的地址是否为本地地址或者http/https的地址然后进行下载或者合并,和在界面上操作的功能是一致的,唯一不同的是接口访问是可以加headers和savepath 操作会更灵活 加headers参数的目的: 你可能在操作多个页面进行下载 但是每个页面的referer或者cookie肯定是不一样的 加上这个 你就可以更灵活的使用 而不用受到设置中的请求头的影响
import requests
#下载代码
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
'accept-encoding':'gzip, deflate, br',
'accept-language':'zh-CN,zh;q=0.9',
'sec-ch-ua':'" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
'referer':'https://cn.bing.com/'
}
html = requests.post("http://127.0.0.1:65432/downloadbyurl",json={"url":"http://www.xxx.com/index.m3u8","headers":headers,"savepath":"e:/desktop/download"})
print(html.text)
参数 | 中文名称 | 类型 | 详细说明 |
---|---|---|---|
Code | 成功失败标志 | int | 0成功 1失败 |
Msg | 错误详情 | String | 会报具体的错误信息 |
Data | 返回数据 | null | 此项不用 |
💡 post的数据必须是json类型 中文需要采用utf-8编码,如果你采用的语言默认不是utf-8编码你可能需要特别处理一下
-
URL:
/downloadbycontent
-
Method:
POST
参数 | 中文名称 | 是否必须 | 类型 | 详细说明 |
---|---|---|---|---|
content | 内容 | 是 | string | m3u8文件中的内容字符串 |
baseurl | 基础地址 | 否 | string | 如果m3u8的ts地址相对路径 这里需要指明是http地址或者磁盘地址 |
name | 名称 | 否 | string | 最终的视频名称 |
plugin | 插件名称 | 否 | string | 同上面的plugin用法一致 |
headers | 请求头 | 否 | string | 此参数只在下载时有用,合并时无效 |
savepath | 保存地址 | 否 | string | 最终视频保存的路径,路径中使用 \ 时请转义成 \\ 当路径中使用/的时候程序会自动转换成\ |
这里的操作跟在界面上通过直接拖拽m3u8文件进行下载或者合并的方式是一样的
#合并或者下载是根据m3u8文件中的ts地址来决定
import requests
with open("e:/desktop/index.m3u8","r") as f:
fileData = f.read()
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
'accept-encoding':'gzip, deflate, br',
'accept-language':'zh-CN,zh;q=0.9',
'sec-ch-ua':'" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
'referer':'https://cn.bing.com/'
}
# ts是http的绝对地址或者磁盘绝对地址 用这个方式
html = requests.post("http://127.0.0.1:65432/downloadbycontent",json={"content":fileData,"headers":headers,"savepath":"e:/desktop/download"})
print(html)
# ts相对地址 用这个方式
html = requests.post("http://127.0.0.1:65432/downloadbycontent",json={"content":fileData,"baseurl":"http://www.xxx.com","headers":headers,"savepath":"e:/desktop/download"})
print(html)
参数 | 中文名称 | 类型 | 详细说明 |
---|---|---|---|
Code | 成功失败标志 | int | 0成功 1失败 |
Msg | 错误详情 | String | |
Data | 返回数据 | null | 此项不用 |
- baseuri为空 说明ts是相对路径只要改成绝对路径即可或者给参数baseurl指明相对与ts的路径 只要改成绝对路径即可或者给参数baseurl指明相对与ts的路径
💡 post的数据必须是json类型 同时utf-8编码 中文如果不是utf-8编码会导致乱码
-
URL:
/downloadbyjsoncontent
-
Method:
POST
通过发送json结构化的内容下载或者合并
参数 | 中文名称 | 是否必须 | 类型 | 详细说明 |
---|---|---|---|---|
content | json数据 | 是 | string | 发送json结构话的字符串 |
name | 名称 | 否 | string | 最终的视频名称 |
plugin | 插件名称 | 否 | string | 同上面的plugin用法一致 |
headers | 请求头 | 否 | string | 此参数只在下载时有用 |
savepath | 保存地址 | 否 | string | 最终视频保存的路径,路径中使用 \ 时请转义成 \\ 当路径中使用/的时候程序会自动转换成\ |
特别要注意的是 这里传入的json数据是直接映射到内部结构体上的而且不做任何检查 所以你要确保所有的ts地址都是绝对路径或者绝对http请求地址 不然会报错的
如果不知道json的格式是啥 可以通过下面的【通过content获取json数据】的接口返回程序需要的json结构化数据
正常操作是下载视频,如果你需要下载得是直播 你需要明确注明PlaylistType得值 此值可以是任意值
import requests
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
'accept-encoding':'gzip, deflate, br',
'accept-language':'zh-CN,zh;q=0.9',
'sec-ch-ua':'" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
'referer':'https://cn.bing.com/'
}
html = requests.post("http://127.0.0.1:65432/downloadbyjsoncontent",json={"content":content,"headers":headers,"savepath":"e:/desktop/download"})
print(html.text)
参数 | 中文名称 | 类型 | 详细说明 |
---|---|---|---|
Code | 成功失败标志 | int | 0成功 1失败 |
Msg | 错误详情 | String | |
Data | 返回数据 | null | 此项不用 |
- This operation is not supported for a relative URI. 说明ts是相对路径 只要改成绝对路径即可 只要改成绝对路径即可
💡 post的数据必须是json类型 中文需要采用utf-8编码,如果你采用的语言默认不是utf-8编码你可能需要特别处理一下
-
URL:
/getm3u8data
-
Method:
POST
此函数的作用主要就是为了获取内部的结构体,当你第一次使用不知道这个结构体是啥的时候可能需要。 通过发送m3u8的文件内容获取结构化后的json内容
参数 | 中文名称 | 是否必须 | 类型 | 详细说明 |
---|---|---|---|---|
content | json数据 | 是 | string | m3u8的文件内容 |
baseurl | 名称 | 否 | string | 如果m3u8的ts地址是相对路径 这里需要指明是http地址或者磁盘地址 |
#合并或者下载是根据m3u8文件中的ts地址来决定
import requests
with open("e:/desktop/index.m3u8","r") as f:
fileData = f.read()
#只返回结构化的json
html = requests.post("http://127.0.0.1:65432/getm3u8data",json={"content":fileData})
print(html.text)
参数 | 中文名称 | 类型 | 详细说明 |
---|---|---|---|
Code | 成功失败标志 | int | 0成功 1失败 |
Msg | 错误详情 | String | |
Data | 返回数据 | json | 返回结构化的数据 |
💡 当你使用此功能的时候,如果m3u8文件中的地址是相对地址,同时又没有指明baseurl,则会报错提示baseuri为空。