Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Sep 1, 2025. It is now read-only.

develop define site config

fzlins edited this page Jan 18, 2024 · 12 revisions

站点 config.json 文件描述

前言

  • 由于 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 已定义的内容为准

plugins

属性 类型 必选 说明
name string 插件的名称
pages array 表示该插件在哪些页面加载
scripts string 插件对应的脚本文件,JavaScript 文件

searchEntryConfig

属性 类型 必选 说明
page string 搜索的入口页面,如:/torrents.php
queryString string 追加到搜索页面的查询字符串 ,如:search=$key$
可用关键字:
$key$ : 搜索的关键字
resultType string 搜索页面返回的类型,可用类型为:htmljson
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 用于是否跳过非拉丁字符搜索

searchEntryConfig.fieldSelector 特定字段说明

字段名称 类型 说明
progress number 种子当前进度,可用范围 0-100 ,如果不指定表示不支持进度;
不匹配的情况下要返回null,否则种子会被标记为有状态
status number 种子当前状态,和 progress 属性配合使用,可用状态值如下:
1: 正在下载
2: 正在做种
3: 未活动(曾经下载过,但未完成)
255: 已完成,未做种

searchEntry

属性 类型 必选 说明
name string 入口名称
enabled boolean 默认是否启用该入口,可用值:true , false

torrentTagSelectors

属性 类型 必选 说明
name string 标签名称
selector string 匹配该标签的选择器
color string 标签颜色,可以使用 颜色名称 或以十六进制表示,如:blue#aabbcc

categories

属性 类型 必选 说明
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: "音乐"}]

selectors

选择器可用于:

  • 站点数据获取;
  • 指定页面特殊字段内容获取;
属性 类型 必选 说明
userBaseInfo object 用户基本信息表达式定义,如用户ID、名称等;
userExtendInfo object 用户扩展信息表达式定义,如上传量、下载量等;
userSeedingTorrents object 正在上传的种子信息,如做种数量等;
<page_name> object 指定页面需要获取的表达式定义;
如:/details.php 表示助手工具栏获取 /details.php 页面内容时,可使用该配置来获取指定字段的信息;
common object <page_name> 未定义或不能匹配时,会尝试从 common 选择器中获取信息;

由于可能需要从不同页面获取数据,所以单独定义不同的 selector ;如果可以在同一页面获取,所有字段定义在 userBaseInfo 下即可;

selectors.item

属性 类型 必选 说明
page string 获取指定信息的页面文件地址,如:user.php
用于获取站点数据时,该内容必需指定
dataType string 返回的数据类型,可用值:htmljson ;默认为 html
fields object 当前规则需要获取的数据字段列表;以 key: value 格式定义,如:{"name": {"selector": ["a[href*='userdetails.php']:first"]}}
格式定义参考:selectors.item.fields
可用字段参考:common.tsUserInfo 接口定义;
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

selectors.item.fields

属性 类型 必选 说明
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 按已匹配的 selectorindex 值来进行过滤选择,如 selector 定义为两个 {"selector": ["S1", "S2"]},已匹配到数据的表达式为 S2,那么 {"switchFilters": [["F1", "F2"], ["F3", "F4"]]} 在执行时,会依次执行 F3, F4 过滤器;

filtersattributeswitchFilters 都没有定义时,默认返回:
htmlquery.text().trim()
jsonquery

如果 switchFiltersfilters 都被定义,则执行 switchFilters

searchEntryConfig.area

属性 类型 必选 说明
name string 当前规则名称
keyAutoMatch string 自动匹配关键的正则表达式,如果匹配成功则使用该规则
queryString string 如果该字段被定义,将直接替换 searchEntryConfig.queryString
appendQueryString string 当前规则需要追加的 查询表达式
replaceKey array 替换关键映射条件,用两个元素表示,第一个为需要匹配的关键字,第二个为目标值,如:["tt", ""] 表示将搜索关键中的 "tt" 替换为 "" 空字符串

config.json 文件示例

{
  "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$&notnewword=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)"
        }
      ]
    }
  ]
}
Clone this wiki locally
Morty Proxy This is a proxified and sanitized view of the page, visit original site.