ONE阅读书源规则说明

作者:swcode

更新时间:2025-03-04

描述:本说明适用于ONE阅读APP。

语法说明

基础说明

1、类名:class.className调用的方法:

// 用于获取多个标签
node.getElementsByClassName("className");

2、元素:tag.a调用的方法:

// 用于获取多个标签
node.getElementsByTagName("a");

3、ID:id.nextPage调用的方法:

// 用于获取一个标签
node.getElementById("nextPage");

4、子元素:children

// 用于获取多个标签
node.children;

5、元素:text.下一页

if (element.innerText == '下一页') {
// 当且仅当内容等于指定时返回标签
return element;
}

6、元素:name.下一页

if (element.getAttribute('name') == '下一页') {
// 当且仅当name属性等于指定时返回标签
return element;
}

7、文本:text、textNode、textNodes

textNode和textNodes,通常用于元素内既有标签也有文本的情况,其中textNodes用于获取多行文本。

// 用于获取标签内部文本,通常元素内容只是文本
element.innerText

8、属性:href、src

// 用于获取标签的属性
element.getAttribute('href')

符号说明

1、规则分隔符:@,用于分割多个规则。规则层级对应标签层级,通常用于获取最后一段规则对应的数据

// 先获取id为nextPage的标签,再获取其中的第一个a标签,最后获取a标签的href
id.nextPage@tag.a.0@href

2、或连接符:||,从连接的第一个规则开始获取数据,如果获取到数据则停止获取

当同一类页面出现HTML标签不同、或者列表数据的第一个展示方式不同

// 先获取class.main@tag.li规则对应的数据,如果没获取到再获取class.mainPage@tag.li对应的数据
class.main@tag.li||class.mainPage@tag.li

// 先尝试获取当前标签内第一个a标签的href属性,如果获取不到,直接获取当前标签的href属性
tag.a.0@href||href

3、且连接符:&&,合并所有规则获取到的数据,可以是文本或者多个标签

多用于获取资源详情页的kind数据

// 将class.sort@tag.span@text获取的文本和id.book_detail@tag.li.2@text获取的文本合并
class.sort@tag.span@text&&id.book_detail@tag.li.2@text

4、选择符号:.0,用于选择多个标签中的一个,当规则只能获取到一个标签时可省略选择符号

序号从0开始,-1表示最后一个

选择当前标签中的第一个a标签,若tag.a只能获取到一个标签,则可省略.0

tag.a.0 

选择当前标签中的第二个p标签

tag.p.2 

5、排除符号:!0:-1,用于排除列表中的第一个和最后一个。正数从前面数、负数从后面数。

只作用于列表

// 先获取id为sectionList的标签,再获取其中所有的p标签,最后排除第一个和最后一个
id.sectionList@tag.p!0:-1

6、倒序符号:-,将列表倒序

只作用于章节列表的获取

// 将p标签列表倒序
-id.sectionList@tag.p

正则表达式

正则在线测试网站:https://www.jyshare.com/front-end/854/

用于消除某些文本或者生成指定内容

##正则表达式##替换内容
// 或者
##正则表达式##替换内容###

替换/消除

// 第一段:将第三个p标签的文本中的“作者:”替换为空白,即消除“作者:”
// 第二段:消除标签的文本内容中的“/”,使用textNode意味着当前标签内同时包含文本和标签
// 上述两段使用 || 连接符,只有规则段匹配到数据时才会执行对应段的正则表达式
tag.p.2@text##作者:###||textNode##/

生成指定内容

// 使用正则:/s/(\\d+)(\\d{3}).html,匹配img标签的src属性
// 使用匹配到的内容生成/files/article/image/$1/$1$2/$1$2s.jpg
tag.img@src##/s/(\\d+)(\\d{3}).html##/files/article/image/$1/$1$2/$1$2s.jpg###

对于上述规则的实际应用说明:

<img src="/s/57679.html"></img>
<!-- 使用 /s/(\\d+)(\\d{3}).html 匹配的结果 $1=57,$2=679 -->
<!-- 生成的结果 /files/article/image/57/57679/57679s.jpg -->

可使用正则表达式在线测试网站进行测试,注意测试时将\\d+改为\d+,在编制书源时需要将\d+写为\\d+

书源字段说明

基本字段

字段说明:

字段名 含义 必要性 说明
sourceName 源名称 必填 用于辨识源
sourceGroup 源分组 选填 用于过滤源
sourceUrl 源URL 必填 唯一标识,不可重复
sourceType 源类型 必填 0:书籍、1:漫画、2:听书、3:视频
charset 编码 选填 默认为utf-8,乱码时使用GBK
order 排序 选填 自定义排序
enabled 启用 必填 是否启用源
header 网络请求头 选填 软件默认设置了User-Agent,如无需要,建议删除该字段

字段JSON数据

{
"sourceName": "源名称",
"sourceGroup": "源分组",
"sourceUrl": "https://源URL",
"sourceType": "1",
"charset": "GBK",
"order": 1,
"enabled": true,
"header": {
"User-Aget": "XXX"
}
}

发布页字段(rulePublishPage)

字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
url 发布页链接规则 选填 当网站拥有发布页时,可填写
list 网址列表规则 选填 一个或多个链接
customList 自定义网页链接 选填 手动置顶多个链接地址

字段JSON数据

"rulePublishPage": {
"url": "https://",
"list": "tag.li||class.block",
"customList": "https://aa.com,https://bb.com"
},

首页字段(ruleHome)

字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
tileList 分组列表规则 必填 对应首页多个分组规则
customTitles 自定义分组名称 选填 当无法通过规则获取分组名称时指定,必须和分组长度对应
title 分组名称规则 必填 每个分组的标题规则
list 资源列表规则 必填 每个分组内的资源列表规则
name 资源名称规则 必填 资源列表中资源的名称规则
author 资源作者规则 必填 资源列表中资源的作者规则
url 资源URL规则 必填 资源列表中资源的URL规则
coverUrl 资源封面规则 必填 资源列表中资源的封面规则
score 资源分数/热度规则 选填 用于显示资源评分规则

字段JSON数据

"ruleHome": {
"tileList": "class.article",
"customTitles": "最新电影,最新剧集,国产剧集,港台剧集,动漫,欧美剧集,日韩剧集",
"list": "tag.li||class.block",
"title": "class.title@tag.span@text",
"author": "tag.p.2@text##作者:###||textNode##/",
"name": "tag.h2@text||tag.a.0@text",
"coverUrl": "tag.img@src@href##/s/(\\d+)(\\d{3}).html##/image/$1/$1$2/$1$2s.jpg###",
"url": "tag.a.0@href"
},

搜索字段(ruleSearch)

搜索链接字段说明:

字段名 含义 必要性 说明
searchUrl 搜索链接 必填 对应首页多个分组

1、GET请求:搜索关键词使用{{key}}占位

"/book.php?action=search&searchtype=novelname&searchkey={{key}}"

2、POST请求:搜索关键词使用{{key}}占位,多个参数使用&链接

逗号后的内容会被解析为JSON,其中body为formdata中的一个字段

{
"method": "POST",
"body": {
"searchkey": "剑来",
"submit": ""
}
}
"/search.php,{\n\"method\" :\"POST\",\n\"body\": \"searchkey={{key}}&submit=\"}"

搜索结果字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
list 资源列表规则 必填 资源列表
name 资源名称规则 必填 资源列表中资源的名称规则
author 资源作者规则 必填 资源列表中资源的作者规则
url 资源URL规则 必填 资源列表中资源的URL规则
coverUrl 资源封面规则 必填 资源列表中资源的封面规则
intro 资源简介规则 选填 资源列表中资源的简介规则
lastSection 最新章节规则 必填 资源列表中资源的最新章节规则
kind 分类规则 选填 资源列表中资源的分类规则
wordCount 字数规则 选填 资源列表中资源的字数规则

字段JSON数据

"searchUrl": "wap.xshuquge.net/search.php?searchkey={{key}}&submit=",
"ruleSearch": {
"list": "class.bookbox",
"name": "tag.a.1@text",
"author": "class.author@text##作者:",
"url": "tag.a.0@href",
"coverUrl": "tag.img@src",
"intro": "class.intro_line@textNode",
"lastSection": "tag.a.2@text",
"kind": "",
"wordCount": ""
},

探索字段(ruleExplore)

探索字段说明:

字段名 含义 必要性 说明
exploreUrl 探索属性 必填 对应首页的探索列表

字段JSON数据

"exploreUrl": {
"分类": {
"玄幻奇幻": "/qihuan/{{page}}.html",
"仙侠修真": "/xiuzhen/{{page}}.html",
"都市现代": "/xiandai/{{page}}.html",
"青春校园": "/qingchun/{{page}}.html",
"言情总裁": "/yanqing/{{page}}.html",
"科幻未来": "/weilai/{{page}}.html",
"网游竞技": "/wangyou/{{page}}.html",
"军事历史": "/junshi/{{page}}.html",
"恐怖悬疑": "/xuanyi/{{page}}.html",
"穿越重生": "/chuanyue/{{page}}.html"
},
"点击榜单": {
"总点击榜": "/novel/allvisit.html",
"月点击榜": "/novel/monthvisit.html",
"周点击榜": "/novel/weekvisit.html"
},
"推荐榜单": {
"总推荐榜": "/novel/allvote.html",
"月推荐榜": "/novel/monthvote.html",
"周推荐榜": "/novel/weekvote.html"
},
"其他榜单": {
"总收藏榜": "/novel/marknum.html",
"总字数榜": "/novel/fontsize.html",
"评分人数": "/novel/starnum.html",
"打赏人数": "/novel/rewardnum.html",
"评分": "/novel/star.html",
"打赏": "/novel/reward.html"
},
"最新": {
"新书入库": "/novel/postdate.html",
"最近更新": "/novel/lastupdate.html"
}
},

1、分页说明:链接中使用{{page}}占位

2、层级说明:最多为2层。下面的层级为3层,不被支持。

{
"分类": {
"玄幻奇幻": {
"玄幻奇幻1": "/qihuan/{{page}}.html"
}
}
}

搜索结果字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
list 资源列表规则 必填 资源列表
name 资源名称规则 必填 资源列表中资源的名称规则
author 资源作者规则 必填 资源列表中资源的作者规则
url 资源URL规则 必填 资源列表中资源的URL规则
coverUrl 资源封面规则 必填 资源列表中资源的封面规则
intro 资源简介规则 选填 资源列表中资源的简介规则
lastSection 最新章节规则 选填 资源列表中资源的最新章节规则
kind 分类规则规则 选填 资源列表中资源的分类规则
wordCount 字数规则规则 选填 资源列表中资源的字数规则

字段JSON数据

"ruleExplore": {
"list": "id.newscontent@class.l@tag.li||class.novelslist2@tag.li!0",
"name": "tag.a.0@text",
"author": "class.s4@text||class.s5@text",
"url": "tag.a.0@href",
"coverUrl": "tag.img.0@href",
"intro": "",
"lastSection": "",
"kind": "",
"wordCount": ""
},

详情字段(ruleInfo)

字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
name 资源名称规则 选填 资源的名称规则
author 资源作者规则 选填 资源的作者规则
coverUrl 资源封面规则 选填 资源的封面规则
intro 资源简介规则 必填 资源详情页的简介规则
kind 资源分类规则 必填 资源详情页的标签规则,通常为多个使用&&拼接
lastSection 资源最新章节规则 选填 作为标签显示,可以直接使用&&拼接到kind
sectionUrl 章节列表URL规则 必填 所有章节列表的链接地址规则,可以是本页面URL

字段JSON数据

"ruleInfo": {
"name": "class.block_txt2@tag.a.1@text",
"author": "class.block_txt2@tag.p.2@text##作者:",
"coverUrl": "class.block_img2@tag.img@src",
"intro": "class.intro_info@text",
"kind": "class.block_txt2@tag.a.2@text&&class.block_txt2@tag.p.4@text",
"lastSection": "class.block_txt2@tag.p.6@tag.a@text",
"sectionUrl": "class.block_txt2@tag.a.0@href"
},

目录字段(ruleToc)

字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
lineList 线路列表规则 选填 多线路规则,一般用于视频源
sectionList 小节列表规则 必填 资源目录/视频剧集小节列表规则,APP需要的是倒序,根据实际情况使用-将列表倒置
sectionName 小节名称规则 必填 小节的名称规则
sectionUrl 章节URL规则 必填 小节的URL规则,用于获取资源内容
nextTocUrl 下一部分目录URL规则 选填 当小节需要分页跳转时,填写;页面已经显示了全部小节,不填

字段JSON数据

"ruleToc": {
"lineList": "class.module-play-list",
"sectionList": "class.chapter.1@tag.a||class.chapter@tag.a",
"sectionName": "text",
"sectionUrl": "href",
"nextTocUrl": "class.right@class.onclick@href"
},

正文字段(ruleContent)

字段说明,可根据页面显示数据和必要性填写:

字段名 含义 必要性 说明
content 内容规则 必填 章节的内容规则
nextContentUrl 下一页的URL规则 必填 网站将章节分页时,填写
purifyRule 净化正则规则 必填 净化规则,使用列表,效率高
enabledSniff 是否开启嗅探 选填 只有视频资源时可用。如果是视频源,建议直接开启嗅探

字段JSON数据

"ruleContent": {
"content": "id.nr1@textNodes",
"nextContentUrl": "id.pb_next@text.下一页@href",
"enabledSniff": false,
"purifyRule": [
".+第.*页",
".+下一页继续阅读.+"
]
},

书源案例

空书源

{
"sourceName": "源名称",
"sourceGroup": "源分组",
"sourceUrl": "https://源URL",
"sourceType": "1",
"charset": "网页编码,乱码填GBK,否则删除该字段",
"order": 1,
"enabled": true,
"rulePublishPage": {
"url": "发布页网址",
"list": "网址列表规则",
"customList": "自定义网址, 英文逗号分隔"
},
"ruleHome": {
"tileList": "组列表规则",
"customTitles": "自定义组标题, 英文逗号分隔",
"title": "组标题规则",
"list": "资源列表规则",
"name": "资源名称规则",
"author": "资源作者规则",
"coverUrl": "资源封面规则",
"url": "资源网址规则"
},
"ruleInfo": {
"name": "资源名称规则",
"author": "资源作者规则",
"coverUrl": "资源封面规则",
"intro": "资源简介规则",
"kind": "资源分类规则",
"lastSection": "最新节规则,不填,或者使用&&和kind合并",
"sectionUrl": "小节网址规则,缺省表示本书籍网址"
},
"ruleToc": {
"lineList": "线路列表源,用于视频源",
"sectionList": "小节列表规则",
"sectionName": "小节名称",
"sectionUrl": "小节网址",
"nextTocUrl": "下一部分目录网址,没有可不填"
},
"exploreUrl": {
"类别": {
"名称": "网址"
},
"名称": "网址"
},
"ruleExplore": {
"list": "资源列表规则",
"name": "资源名称规则",
"author": "资源作者规则",
"coverUrl": "资源封面规则",
"url": "资源网址规则",
"intro": "资源简介规则",
"lastSection": "最新节规则",
"kind": "资源分类规则",
"wordCount": "资源字体规则"
},
"searchUrl": "搜素网址",
"ruleSearch": {
"list": "资源列表规则",
"name": "资源名称规则",
"author": "资源作者规则",
"coverUrl": "资源封面规则",
"url": "资源网址规则",
"intro": "资源简介规则",
"lastSection": "最新节规则",
"kind": "资源分类规则",
"wordCount": "资源字体规则"
},
"ruleContent": {
"content": "资源正文",
"nextContentUrl": "下一部分正文规则,适用于章节被分页显示",
"enabledSniff": false,
"purifyRule": ["正则", "净化", "规则"]
}
}