194 lines
7.8 KiB
Markdown
194 lines
7.8 KiB
Markdown
# 源字段速查 (Source Fields)
|
||
|
||
[[toc]]
|
||
|
||
本文档列出源 JSON 中各部分(搜索、发现、详情页、目录、正文)的所有可用字段。
|
||
|
||
## 1. 基本字段
|
||
|
||
| 字段 | 必须 | 说明 |
|
||
|:--------------------|:---|:------------------------------------------|
|
||
| `bookSourceUrl` | 是 | 源 URL,唯一标识,不可重复。与其他源相同会覆盖 |
|
||
| `bookSourceName` | 是 | 源名称,可重复 |
|
||
| `bookSourceGroup` | 否 | 源分组,用于整理 |
|
||
| `bookSourceType` | 否 | 源类型:`0`(文本,默认)、`1`(音频) |
|
||
| `bookUrlPattern` | 否 | 书籍 URL 正则,添加网址时用于识别源 |
|
||
| `header` | 否 | 请求头 JSON 字符串,见 [请求头配置](./request-headers) |
|
||
| `loginUrl` | 否 | 登录 URL,见 [认证与登录](./authentication) |
|
||
| `exploreUrl` | 否 | 发现地址,见 [发现 URL 配置](./discovery-url) |
|
||
| `searchUrl` | 否 | 搜索地址 |
|
||
| `weight` | 否 | 源权重,搜索排序时使用 |
|
||
| `enabled` | 否 | 是否启用 |
|
||
| `enabledExplore` | 否 | 是否启用发现 |
|
||
| `customOrder` | 否 | 自定义排序 |
|
||
| `lastUpdateTime` | 否 | 最后更新时间 |
|
||
| `bookSourceComment` | 否 | 源备注 |
|
||
|
||
## 2. 搜索字段 (`ruleSearch`)
|
||
|
||
| 字段 | 说明 |
|
||
|:--------------|:-----------------------------------|
|
||
| `url` | 搜索地址。`{{key}}` 为关键字,`{{page}}` 为页码 |
|
||
| `bookList` | 书籍列表规则 |
|
||
| `name` | 书名规则 |
|
||
| `author` | 作者规则 |
|
||
| `kind` | 分类规则 |
|
||
| `wordCount` | 字数规则 |
|
||
| `lastChapter` | 最新章节规则 |
|
||
| `intro` | 简介规则 |
|
||
| `coverUrl` | 封面规则 |
|
||
| `bookUrl` | 详情页 URL 规则 |
|
||
|
||
## 3. 发现字段 (`ruleExplore`)
|
||
|
||
| 字段 | 说明 |
|
||
|:--------------|:---------------------------------|
|
||
| `url` | 发现地址。`{{page}}` 为页码,支持 JSON 数组格式 |
|
||
| `bookList` | 书籍列表规则 |
|
||
| `name` | 书名规则 |
|
||
| `author` | 作者规则 |
|
||
| `kind` | 分类规则 |
|
||
| `wordCount` | 字数规则 |
|
||
| `lastChapter` | 最新章节规则 |
|
||
| `intro` | 简介规则 |
|
||
| `coverUrl` | 封面规则 |
|
||
| `bookUrl` | 详情页 URL 规则 |
|
||
|
||
## 4. 详情页字段 (`ruleBookInfo`)
|
||
|
||
| 字段 | 说明 |
|
||
|:---------------|:-----------------------------------------|
|
||
| `bookInfoInit` | 预处理规则(仅支持 AllInOne 正则或 JS) |
|
||
| `name` | 书名规则 |
|
||
| `author` | 作者规则 |
|
||
| `kind` | 分类规则 |
|
||
| `wordCount` | 字数规则 |
|
||
| `lastChapter` | 最新章节规则 |
|
||
| `intro` | 简介规则 |
|
||
| `coverUrl` | 封面规则 |
|
||
| `tocUrl` | 目录 URL 规则(仅支持单个 URL) |
|
||
| `canReName` | 允许修改书名作者 |
|
||
| `relatedBooks` | 关联书籍配置,见 [关联书籍配置](../spec/related-books) |
|
||
|
||
### 预处理规则 (`bookInfoInit`)
|
||
|
||
只能使用 AllInOne 正则(以 `:` 开头)或 JS。JS 返回值需为 JSON 对象:
|
||
|
||
```javascript
|
||
(function(){
|
||
return {
|
||
a: "书名",
|
||
b: "作者",
|
||
c: "分类",
|
||
d: "字数",
|
||
e: "最新章节",
|
||
f: "简介",
|
||
g: "封面URL",
|
||
h: "目录URL"
|
||
};
|
||
})()
|
||
```
|
||
|
||
此时各规则字段填对应的 key:`name` → `a`,`author` → `b`,以此类推。
|
||
|
||
### `canReName` 逻辑
|
||
|
||
| 条件 | 行为 |
|
||
|:-----------------|:--------|
|
||
| 规则不为空 且 详情页书名不为空 | 使用详情页书名 |
|
||
| 否则 | 使用搜索页书名 |
|
||
| 规则不为空 且 详情页作者不为空 | 使用详情页作者 |
|
||
| 否则 | 使用搜索页作者 |
|
||
|
||
## 5. 目录字段 (`ruleToc`)
|
||
|
||
| 字段 | 说明 |
|
||
|:--------------|:---------------------------------------------------|
|
||
| `chapterList` | 目录列表规则。首字符 `-` 可使列表反序 |
|
||
| `chapterName` | 章节名称规则 |
|
||
| `chapterUrl` | 章节 URL 规则 |
|
||
| `isVip` | VIP 标识。结果为 `null`、`false`、`0`、`""` 时为非 VIP |
|
||
| `updateTime` | 章节信息(可用 `java.timeFormat(timestamp)` 转换时间戳) |
|
||
| `nextTocUrl` | 目录下一页规则。支持单个 URL、URL 数组,JS 返回 `[]`/`null`/`""` 时停止 |
|
||
|
||
## 6. 正文字段 (`ruleContent`)
|
||
|
||
| 字段 | 说明 |
|
||
|:-----------------|:---------------------------------------|
|
||
| `content` | 正文规则 |
|
||
| `nextContentUrl` | 正文下一页 URL 规则。支持单个 URL、URL 数组 |
|
||
| `sourceRegex` | 资源正则,用于嗅探媒体资源 |
|
||
| `webJs` | WebView JS,用于模拟点击等操作。必须有返回值(不为空表示执行成功) |
|
||
|
||
### WebView JS (`webJs`)
|
||
|
||
用于模拟鼠标点击等操作,返回值不为空表示执行成功(否则会无限循环),返回值用于资源正则或正文。
|
||
|
||
**示例:**
|
||
|
||
```javascript
|
||
getDecode();$('#content').html();
|
||
```
|
||
|
||
### 资源正则 (`sourceRegex`)
|
||
|
||
用于嗅探 WebView 加载的媒体资源。配合章节 URL 的 `{"webView": true}` 使用。
|
||
|
||
一般写 `.*\.(mp3|mp4).*` 即可匹配常见媒体格式。
|
||
|
||
## 7. 完整 JSON 结构
|
||
|
||
```json
|
||
{
|
||
"bookSourceUrl": "https://www.example.com",
|
||
"bookSourceName": "示例源",
|
||
"bookSourceGroup": "分组",
|
||
"bookSourceType": 0,
|
||
"bookUrlPattern": "",
|
||
"header": "",
|
||
"loginUrl": "",
|
||
"searchUrl": "/search?key={{key}}&page={{page}}",
|
||
"exploreUrl": "",
|
||
"enabled": true,
|
||
"enabledExplore": false,
|
||
"weight": 0,
|
||
"ruleSearch": {
|
||
"bookList": "",
|
||
"name": "",
|
||
"author": "",
|
||
"kind": "",
|
||
"wordCount": "",
|
||
"lastChapter": "",
|
||
"intro": "",
|
||
"coverUrl": "",
|
||
"bookUrl": ""
|
||
},
|
||
"ruleExplore": {
|
||
"bookList": "",
|
||
"name": "",
|
||
"author": "",
|
||
"bookUrl": ""
|
||
},
|
||
"ruleBookInfo": {
|
||
"name": "",
|
||
"author": "",
|
||
"kind": "",
|
||
"intro": "",
|
||
"coverUrl": "",
|
||
"tocUrl": ""
|
||
},
|
||
"ruleToc": {
|
||
"chapterList": "",
|
||
"chapterName": "",
|
||
"chapterUrl": "",
|
||
"nextTocUrl": ""
|
||
},
|
||
"ruleContent": {
|
||
"content": "",
|
||
"nextContentUrl": "",
|
||
"sourceRegex": "",
|
||
"webJs": ""
|
||
}
|
||
}
|
||
```
|