Skip to content

Http Rest API

Harlan-H edited this page Sep 30, 2022 · 9 revisions

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

  • 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开头
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 最终的视频名称
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 最终的视频名称
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为空。

Clone this wiki locally