Skip to content

Http Rest API

Harlan edited this page Nov 29, 2022 · 6 revisions

注意

  • 在使用此功能之前,请确保软件的最下面有地址,如果出现 "restapi初始化失败" 的问题,可以使用管理员重新打开一般就不会报错了
  • 如果你使用的“无需运行库版本”可能会无解,所以如果想使用此功能请安装运行库

通过发送请求地址下载或合并

  • URL/downloadbyurl
  • MethodPOST

请求参数

参数 中文名称 是否必须 类型 详细说明
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如果不设置则使用默认值

实例代码(python代码)

当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编码你可能需要特别处理一下


通过content下载或合并

  • URL/downloadbycontent
  • MethodPOST

请求参数

参数 中文名称 是否必须 类型 详细说明
content 内容 string m3u8文件中的内容字符串
baseurl 基础地址 string 如果m3u8的ts地址相对路径 这里需要指明是http地址或者磁盘地址
name 名称 string 最终的视频名称
plugin 插件名称 string 同上面的plugin用法一致
headers 请求头 string 此参数只在下载时有用,合并时无效
savepath 保存地址 string 最终视频保存的路径,路劲中使用 \ 时请转义成 \\

实例代码(python代码)

这里的操作跟在界面上通过直接拖拽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 此项不用

响应错误的msg

  • baseuri为空 说明ts是相对路径只要改成绝对路径即可或者给参数baseurl指明相对与ts的路径 只要改成绝对路径即可或者给参数baseurl指明相对与ts的路径

注意事项

💡 post的数据必须是json类型 同时utf-8编码 中文如果不是utf-8编码会导致乱码


通过json下载

  • URL/downloadbyjsoncontent
  • MethodPOST

功能描述

通过发送json结构化的内容下载或者合并

请求参数

参数 中文名称 是否必须 类型 详细说明
content json数据 string 发送json结构话的字符串
name 名称 string 最终的视频名称
plugin 插件名称 string 同上面的plugin用法一致
headers 请求头 string 此参数只在下载时有用
savepath 保存地址 string 最终视频保存的路径,路劲中使用 \ 时请转义成 \\

实例代码(python代码)

特别要注意的是 这里传入的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 此项不用

响应错误的msg

  • This operation is not supported for a relative URI. 说明ts是相对路径 只要改成绝对路径即可 只要改成绝对路径即可

注意事项

💡 post的数据必须是json类型 中文需要采用utf-8编码,如果你采用的语言默认不是utf-8编码你可能需要特别处理一下


通过content获取json数据

  • URL/getm3u8data
  • MethodPOST

功能描述

此函数的作用主要就是为了获取内部的结构体,当你第一次使用不知道这个结构体是啥的时候可能需要。 通过发送m3u8的文件内容获取结构化后的json内容

请求参数

参数 中文名称 是否必须 类型 详细说明
content json数据 string m3u8的文件内容
baseurl 名称 string 如果m3u8的ts地址是相对路径 这里需要指明是http地址或者磁盘地址

实例代码(python代码)

#合并或者下载是根据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为空。