新增项目详情与开发文档网页

This commit is contained in:
HapeLee
2026-05-27 01:00:58 +08:00
parent 65d5c84b56
commit b7826b54a7
35 changed files with 3499 additions and 15 deletions
+193
View File
@@ -0,0 +1,193 @@
# 源字段速查 (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": ""
}
}
```