添加自定义下载源 - ZayrexDev/ACGPicDownload GitHub Wiki
在默认的 sources.json
中已有几个配置完成的下载源. 你可以参照他们来创建你的自定义下载源.
一个正常的 sources.json
应当包含以下的参数:
参数名 | 参数类型 | 描述 | 补充说明 |
---|---|---|---|
name | 字符串 | 下载源的名称 | 需要. 请确保不同的下载源具有不同的名字 |
description | 字符串 | 下载源的描述 | 可选 |
returnType | 字符串 | 下载源的返回类型 | json 或redirect ,当为空时,将会尝试自动判断 |
url | 字符串 | 下载URL | 需要 |
defaultArgs | JSON | URL中的参数 | 当url中使用参数时需要 |
sourceKey | 字符串 | 返回值中指向每张图片数据的路径 | 可选,当为空时,将会直接尝试解析返回值 |
picUrl | 字符串 | 每张图片数据中指向每下载链接的路径 | 需要 |
nameRule | 字符串 | 下载的命名规则 | 可选 |
url
你可以通过形如 {sometext=$varname}
的参数块在url中自定义参数,并且你需要在 defaultArgs
中进行声明。
如果程序没有在某一个参数块中找到变量对应的值,那么就会将整个参数块从url中暂时移除。
举个栗子,如果 url
是 https://someurl/pic?{mode=$mode}{&num=$num}{&keyword=$tag}
,那么在命令行传入 --arg num=5
并且设置了 mode
的默认值为 a
时,实际上程序访问的url会是 https://someurl/pic?mode=a&num=5
defaultArgs
当在使用 url
中的参数时需要指定。
所有参数都有以下的设置值:
名称 | 类型 | 描述 |
---|---|---|
type | 字符串 | 需要,指定参数的种类, string (字符串)或 int (数字) |
value | 字符串 | 可选,指定参数的默认值 |
对于 string
类型的参数,有以下的设置值:
名称 | 类型 | 描述 |
---|---|---|
from | 数组 | 可选,规定参数可选的值 |
对于 int
类型的参数,有以下的设置值:
名称 | 类型 | 描述 |
---|---|---|
max | 数字 | 可选,规定参数的最大值 |
min | 数字 | 可选,规定参数的最小值 |
step | 数字 | 可选,规定可选参数的步距 |
在 url
的例子中,defaultArgs
可以是:
{
"defaultArgs": {
"num": {
"type": "int",
"min": 1,
"max": 100,
"value": 1
},
"mode": {
"type": "string",
"from": ["a","b","c"],
"value": "a"
},
"tag": {
"type": "string"
}
}
}
nameRule
你可以使用形如 {可选的其它文字 $变量名}
来使用返回值的json里的值来为每个文件命名
例如,如果一个json返回值是 :
{
"ext": "png",
"urls": {
"original": "....."
},
"author": "some_author",
"id": 6969,
"title": "some_title"
}
那么如果 nameRule
是 {ID:$id }{$title}{ by $author}{.$ext}
,
下载下来的文件名就会是 ID:6969 some_title by some_author.png
。
如果 nameRule
是空的, 程序将会尝试从返回的下载链接自动获取文件名。
sourceKey
因为某些返回值是由某些值嵌套图片数据的,所以需要指定图片数据的位置。例如:
{
"images": {
"data": [
{
"ext": "png",
"urls": {
"original": "....."
},
"author": "some_author",
"id": 6969,
"title": "some_title"
},
{
"ext": "png",
"urls": {
"original": "....."
},
"author": "more_author",
"id": 1145,
"title": "more_title"
}
]
}
}
对于以上的返回值 sourceKey
应是 images/data
picUrl
就如 sourceKey
, 在返回值中指向下载连接的路径也应该在此被提前告知。
例如,以下返回值的 sourceKey
应该为 urls/original
。
{
"urls": {
"original": "....."
},
"id": 6969,
"title": "some_title"
}
returnType
不同的下载源可能会有不同的返回值类型,目前仅支持 json 返回和重定向。