-
Notifications
You must be signed in to change notification settings - Fork 850
develop define site config
fzlins edited this page Jan 18, 2024
·
12 revisions
- 由于
config.json
中的内容可能会随着软件升级而不断变化,如果没有找到对应的说明,请以实际config.json
中可用的内容为准,我们会尽量保持该文档同步更新; - 在编写
config.json
文件时,请多参考已存在的站点config.json
文件;
属性 | 类型 | 说明 |
---|---|---|
name | string | 站点名称;例:MySite ; |
url | string | 完整的网站地址,如果网站支持 https ,请优先考虑填写 https 的地址;例:https://abc.com/ ; |
icon | string | 网站图标地址;例:https://abc.com/favicon.ico ; |
host | string | 站点的域名;例:abc.com ;注意,host 必需和站点的目录名称相同 |
schema | string | 对应的网站架构,例:NexusPHP ;如果没有对应的 schema ,则填写 host 相同内容 |
属性 | 类型 | 说明 |
---|---|---|
description | string | 站点描述;例:这是一个神奇的网站 ; |
tags | array | 用于描述站点的标签,多个之间以 , 分隔;例:["综合", "音乐"]
|
plugins | array | 支持的插件列表,具体格式见 plugins; |
searchEntryConfig | object | 搜索入口配置,主要用于配置搜索的页面及一些基本参数;如果不指定则以网站架构定义的为准,具体格式见 searchEntryConfig; |
searchEntry | array | 具体搜索入口,可定义多个如果不指定则以网站架构定义的为准,具体格式见 searchEntry; |
torrentTagSelectors | array | 种子标签选择器列表;具体格式见 torrentTagSelectors; |
categories | array | 站点对应搜索入口的种子分类信息定义列表;具体格式见 categories; |
selectors | array | 获取用户站点数据、指定页面数据的选择器列表; 具体格式见 selectors; |
collaborator | string|array | 当前站点适配参与人员名称列表,请附上您的大名; |
以下属性如果未定义,则以对应 schema
已定义的内容为准
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
name | string | 是 | 插件的名称 |
pages | array | 是 | 表示该插件在哪些页面加载 |
scripts | string | 是 | 插件对应的脚本文件,JavaScript 文件 |
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
page | string | 是 | 搜索的入口页面,如:/torrents.php
|
queryString | string | 是 | 追加到搜索页面的查询字符串 ,如:search=$key$ 可用关键字: $key$ : 搜索的关键字 |
resultType | string | 是 | 搜索页面返回的类型,可用类型为:html ,json
|
parseScriptFile | string | 是 | 用于解析原始结果的脚本文件地址,如:/schemas/NexusPHP/getSearchResult.js
|
resultSelector | string | 当 resultType 类型为 html 时,表示定位种子列表的 jQuery 查询表达式;当 resultType 类型为 json 时,可省略; |
|
area | array | 搜索区域定义,可在此定义一些自动匹配的规则,当搜索特定关键字时,使用指定的规则,具体格式见 searchEntryConfig.area ; | |
headers | object | 发送搜索请求时需要特别指定的 http 请求头,以 key: value 格式定义,如:{"x-requested-with": "XMLHttpRequest"}
|
|
fieldSelector | object | 用于定义解析搜索结果的字段,以 key: value 格式定义;特定字段参考:searchEntryConfig.fieldSelector 特定字段说明 格式定义参考:selectors.item.fields ; |
|
dataRowSelector | string |
1.4.5 + 数据行选择器,默认为 > tbody > tr
|
|
dataCellSelector | string |
1.5.2.0c04091+ 数据格子选择器,默认为 > td
|
|
firstDataRowIndex | number |
1.4.5 + 指定数据表格中第一行数据索引,默认为 1
|
|
fieldIndex | object |
1.4.5 + 数据字段在表格中的列索引,默认都为 -1 ,表示字段不可用。允许的字段列表:title, time, size, seeders, leechers, completed, comments, author, category, url, link, progress, status ; 例: {"title": 1, "url": 1} |
|
loggedRegex | string |
1.4.5 + 用于验证是否已登录的正则表达式 |
|
skipIMDbId | boolean | 用于是否跳过IMDb搜索 | |
skipNonLatinCharacters | boolean | 用于是否跳过非拉丁字符搜索 |
字段名称 | 类型 | 说明 |
---|---|---|
progress | number | 种子当前进度,可用范围 0-100 ,如果不指定表示不支持进度;不匹配的情况下要返回null,否则种子会被标记为有状态 |
status | number | 种子当前状态,和 progress 属性配合使用,可用状态值如下:1: 正在下载 2: 正在做种 3: 未活动(曾经下载过,但未完成) 255: 已完成,未做种 |
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
name | string | 是 | 入口名称 |
enabled | boolean | 是 | 默认是否启用该入口,可用值:true , false
|
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
name | string | 是 | 标签名称 |
selector | string | 是 | 匹配该标签的选择器 |
color | string | 是 | 标签颜色,可以使用 颜色名称 或以十六进制表示,如:blue , #aabbcc
|
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
entry | string | 是 | 需要匹配的入口;例:* 表示适用于所有入口;torrents.php 表示只适用于 torrents.php 的入口页面 |
result | string | 是 | 分类配置返回信息,其中 $id$ 会被替换为具体的分类编号,最终会追加到 searchEntryConfig.queryString 最后,如:&cat$id$=1 最终输出的值可能为 &cat11=1
|
category | array | 是 | 站点的分类信息,每个 item 表示一个分类,如:[{id: 11, name: "电影"}, {id: 22, name: "音乐"}]
|
选择器可用于:
- 站点数据获取;
- 指定页面特殊字段内容获取;
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
userBaseInfo | object | 用户基本信息表达式定义,如用户ID、名称等; | |
userExtendInfo | object | 用户扩展信息表达式定义,如上传量、下载量等; | |
userSeedingTorrents | object | 正在上传的种子信息,如做种数量等; | |
<page_name> |
object | 指定页面需要获取的表达式定义; 如: /details.php 表示助手工具栏获取 /details.php 页面内容时,可使用该配置来获取指定字段的信息; |
|
common | object | 当 <page_name> 未定义或不能匹配时,会尝试从 common 选择器中获取信息; |
由于可能需要从不同页面获取数据,所以单独定义不同的
selector
;如果可以在同一页面获取,所有字段定义在userBaseInfo
下即可;
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
page | string | 获取指定信息的页面文件地址,如:user.php ;用于获取站点数据时,该内容必需指定 |
|
dataType | string | 返回的数据类型,可用值:html ,json ;默认为 html
|
|
fields | object | 是 | 当前规则需要获取的数据字段列表;以 key: value 格式定义,如:{"name": {"selector": ["a[href*='userdetails.php']:first"]}} ;格式定义参考:selectors.item.fields ; 可用字段参考:common.ts 的 UserInfo 接口定义; |
prerequisites | string | 执行该规则的前提条件(条件表达式),合法的 js 语句;可用关键字: user :表示已获取的用户信息对象;例: "!user.id"
|
|
requestMethod | string | 请求使用的方法,可用值:GET , POST ;默认为 GET
|
|
requestData | object |
POST 时需要额外附加的数据,可用关键字:$user.id$ :当前用户id;$user.name$ :当前用户名称;例: {"userid": "$user.id$", "type": "seeding"}
|
|
merge | boolean | 是否合并 schema 已定义的内容,默认为 false
|
|
parser | string |
1.1.2 新增 用于解析数据的脚本文件路径;当指定该内容时,则执行该解析器,由解析器处理指定页面返回的内容,可用于请求多个页面等操作; |
|
topElement | string |
1.3.2 新增 指定用于获取内容的顶级 DOM 对象,默认为 body
|
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
selector | string|array | 是 | 获取目标数据的查询表达式,如果是数组,则依次查询,直到获取目标数据为止;如果目标格式为:html 则返回 jQuery 对象;json 则返回 js 对象; |
filters | array | 目标数据获取后执行的过滤器,合法的 js 语句;每个过滤器按顺序逐个执行;可用关键字及函数: query :执行 selector 后获取到的目标数据,通常为 jQuery 对象或 js 对象;dateTime :一个 dayjs 实例,可用于验证和格式化时间;_self :当前 InfoParser 实例;可用方法参考 infoParser.ts 类定义; |
|
attribute | string | 仅 dataType=html 时可用,指定要返回的属性,如果该属性被定义,在执行 filters 之前会先从该属性获取内容并返回给 query 对象,如:{"attribute": "value"} ,则会执行 query = query.attr('value')
|
|
switchFilters | array | 按已匹配的 selector 的 index 值来进行过滤选择,如 selector 定义为两个 {"selector": ["S1", "S2"]} ,已匹配到数据的表达式为 S2 ,那么 {"switchFilters": [["F1", "F2"], ["F3", "F4"]]} 在执行时,会依次执行 F3 , F4 过滤器; |
当
filters
、attribute
、switchFilters
都没有定义时,默认返回:html
:query.text().trim()
;json
:query
如果
switchFilters
和filters
都被定义,则执行switchFilters
;
属性 | 类型 | 必选 | 说明 |
---|---|---|---|
name | string | 是 | 当前规则名称 |
keyAutoMatch | string | 自动匹配关键的正则表达式,如果匹配成功则使用该规则 | |
queryString | string | 如果该字段被定义,将直接替换 searchEntryConfig.queryString
|
|
appendQueryString | string | 当前规则需要追加的 查询表达式 ; |
|
replaceKey | array | 替换关键映射条件,用两个元素表示,第一个为需要匹配的关键字,第二个为目标值,如:["tt", ""] 表示将搜索关键中的 "tt" 替换为 "" 空字符串 |
{
"name": "MySite",
"description": "我的站点",
"url": "https://abc.com/",
"icon": "https://abc.com/favicon.ico",
"tags": ["综合", "音乐"],
"schema": "NexusPHP",
"host": "abc.com",
"plugins": [
{
"name": "特殊插件",
"pages": ["/torrents.php"],
"scripts": ["/libs/album/album.js", "torrents.js"],
"styles": ["/libs/album/style.css"]
}
],
"searchEntryConfig": {
"page": "/torrents.php",
"queryString": "search=$key$¬newword=1",
"area": [{
"name": "IMDB",
"keyAutoMatch": "^(tt\\d+)$",
"appendQueryString": "&search_area=4"
}],
"resultType": "html",
"parseScriptFile": "/schemas/NexusPHP/getSearchResult.js",
"resultSelector": "table.torrents:last"
},
"searchEntry": [{
"name": "全部",
"enabled": true
}],
"torrentTagSelectors": [
{
"name": "Free",
"selector": "img.pro_free",
"color": "blue"
}
],
"categories": [
{
"entry": "*",
"result": "cat$id$=1",
"category": [
{
"id": 20,
"name": "原盘(Full BD)"
}
]
}
]
}