添加自定义下载源 - ZayrexDev/ACGPicDownload GitHub Wiki

在默认的 sources.json 中已有几个配置完成的下载源. 你可以参照他们来创建你的自定义下载源.

一个正常的 sources.json 应当包含以下的参数:

参数名 参数类型 描述 补充说明
name 字符串 下载源的名称 需要. 请确保不同的下载源具有不同的名字
description 字符串 下载源的描述 可选
returnType 字符串 下载源的返回类型 jsonredirect,当为空时,将会尝试自动判断
url 字符串 下载URL 需要
defaultArgs JSON URL中的参数 当url中使用参数时需要
sourceKey 字符串 返回值中指向每张图片数据的路径 可选,当为空时,将会直接尝试解析返回值
picUrl 字符串 每张图片数据中指向每下载链接的路径 需要
nameRule 字符串 下载的命名规则 可选

url

你可以通过形如 {sometext=$varname} 的参数块在url中自定义参数,并且你需要在 defaultArgs 中进行声明。 如果程序没有在某一个参数块中找到变量对应的值,那么就会将整个参数块从url中暂时移除。 举个栗子,如果 urlhttps://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 返回和重定向。