背景
博主打算造一个能从 Telegram 自动下载文件/媒体并自动上传至 Google Drive 的轮子,自动上传的功能已经有现成的轮子可以拼上了,生成直链的轮子也找到了,就差联动Aria2 JSON-RPC
和Python
了,但是无奈找了半天都没有解决,最后还是问了大佬才搞定,遂记录。
其实本来看着JSON-RPC
就比较复杂,相比之下XML-RPC
就显得善良许多,但是不知道是版本问题还是什么原因,XML-RPC
似乎不能使用,最后只好投奔复杂的JSON-RPC
了。😭
说实话,我确实找到了不少现成的 Python 库可用,但是想着我只需要下个文件,没必要引入那么多不必要的代码,就想着自己写一小段了。🤔
还有一点就是,我看了好几个PyPI
上的相关包,有的不支持新加入的rpc-secret
属性,就没法用了。😒
依赖
依赖很少,甚至很多人早就安装好了。😂
$ pip install requests #Windows
$ pip3 install requests #MacOS or Linux
代码实现
import json, requests
data = {
"jsonrpc": "2.0",
"method": "aria2.addUri", #操作为添加下载链接
"id": "1", #这个 id 没什么用,随便填一个就行,重复也无所谓
"params": ["token:<Your rpc-secret>",["url"]] #有设置 rpc-secret 参数的将此处 <Your rpc-secret> 替换为自己的 rpc-secret
}
dl_url = 'https://dl.example.com/example.file'
data['params'][0][1] = dl_url #自定义下载文件链接
url = '' #你的 Aria2 服务器完整链接,使用 HTTP(S) 协议,包含端口
#例如 http://aria2.example.com:6800/jsonrpc
response = requests.post(url, data=json.dumps(data))
print(response.text) #显示请求结果
返回结果示例:
{"id":"1","jsonrpc":"2.0","result":"a68bf66b2db28041"}
"result"
中即为该下载链接对应的 GID