# uni-polymerize **Repository Path**: xian-xian-wang/uni-polymerize ## Basic Information - **Project Name**: uni-polymerize - **Description**: 基于uni-app 聚合资源的app - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 12 - **Created**: 2024-05-09 - **Last Updated**: 2024-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #应用介绍 * 1、该项目为聚合资源APP,暂只支持安卓APP * 2、聚合资源包括小说、漫画、视频、直播、文章、论坛、音乐等 * 3、该项目支持加载外部来源,也支持内置来源 * 4、如果想要自己制作来源,建议先以内置来源的方式制作来源,制作完成后在来源设置中选择导出来源 * 5、为了方便调试请求,可以在设置页面 => 通用设置 => 打开调试模式,会在全局生成一个调试按钮,点击可以查看请求信息 * 6、为避免版权问题,该项目已不提供内置源 * 7、[1.0版本的好用聚合库链接](https://gitee.com/yingbing-developer/uni-polymerize_1.git) * 8、有什么不懂的,可以加群 1087735942 聊 #免责声明 * 本免责声明(以下简称“免责声明”或“本声明”)适用于好用聚合项目(以下简称"好用聚合"),在使用人及组织(以下简称"使用者")阅读本声明后若不同意此声明中的任何条款,或对本声明存在质疑,请立刻停止使用此项目。若您已经开始或正在使用此项目,则表示您已阅读并同意本声明的所有条款之约定。 * 1.使用者通过任何形式或方式使用好用聚合即表示您已经同意本声明,本声明立即自动生效。 * 2.使用者使用好用聚合自行承担风险,作者不做任何形式的保证, 因代码质量、系统BUG等任何技术原因而引起的问题,作者也不承担任何法律责任。 * 3.使用者保证好用聚合不用于任何违法犯罪行为,如传播色情、赌博等。 * 4.使用者保证好用聚合所展示内容不涉及版权或隐私等问题。 * 5.使用者保证好用聚合不用于任何商业或盈利等行为。 * 6.使用者使用好用聚合违反上述任何行为所造成的一切后果均由使用者承担。 #添加内置源 * 第一步、将写好的来源JS文件放在/assets/api/source/文件夹下,文件名不能为中文 (注意APP导出的来源文件为JSON文件,不能用来添加内置来源) * 第二步、在/assets/api/source.js文件中引入新添加来源JS文件即可 #添加外部源 * 添加本地来源 - 将来源JSON文件放入手机存储 => 在来源设置页面点击右上角按钮 => 在选项列表中选择导入本地来源 => 找到手机存储中的来源JSON文件 => 单击选择单个文件/长按选择多个文件 => 等待来源导入完成 * 添加网络来源 - 在来源设置页面点击右上角按钮 => 在选项列表中选择导入网络来源 => 在弹出框中输入接口地址 => 点击确定 => 等待来源导入完成 #源文件结构 ```javascript { "id": "",//来源ID 必填 "title": "",//名称 必填 "logo": "",//图标 "href": "",//域名 必填 "dynamic": "",//动态域名规则 "security": "",//防盗链域名,多个以逗号分割 "isAdult": false,//是否包含敏感内容 必填 "fnc": {},//自定义方法,对于一些实在复杂的请求可以写入这里,然后在规则里调用, "search": [],//搜索 "find": [],//发现 "random": [],//随机 "detail": [],//详情 "catalog": [],//目录 "character": [],//用户 "recome": [],//推荐 "context": [],//正文 "barrage": [],//弹幕 "lyric": [],//歌词 "comment": []//评论 } ``` # 源规则内置方法 * HTMLParser - 说明:解析HTML文本,用于获取HTML文本中的数据 详情[HTMLParser HTML 文本解析器](https://ext.dcloud.net.cn/plugin?id=263) - 使用:new HTMLParser('HTML字符串') * Base64 - 说明:Base64加密解密 - 使用:Base64.encode('dankogai'); Base64.decode('ZGFua29nYWk='); * CryptoJS - 说明:CryptoJS工具 * Xhr - 说明:请求方法 基于plus.net.XMLHttpRequest 详情[plus.net.XMLHttpRequest](https://www.html5plus.org/doc/zh_cn/xhr.html) - 使用:Xhr.get(url,options); Xhr.post(url,options); * Http - 说明:请求方法 基于uni.request 详情[uni.request](https://uniapp.dcloud.net.cn/api/request/request.html) - 使用:Http.get(url,options); Http.post(url,options); * GBK - 说明:将UTF-8的字符转化为GBK字符串 - 使用:GBK('关键词') * HtmlDecode - 说明:转义HTML字符串中的一些转义序列 - 使用:HtmlDecode('html字符串') * DecodeUnicode - 说明:将16进制转为字符(主要用于小说自定义字体) - 使用:DecodeUnicode('16进制') * DateFormat - 说明:时间格式化工具 - 使用:DateFormat(时间戳) * TimeToseconds - 说明:时间转秒数工具 - 使用:TimeToseconds('01:20') == 80 * Zeroize - 说明:补零 - 使用:Zeroize(1) == '01' * ConvertUrlQueryObject - 说明:获取href链接中的参数,返回对象 - 使用:ConvertUrlQueryObject('https://www.baidu.com?keyword=关键词&page=1') == {keyword: '关键词', page: 1} # 源规则内置变量 * page - 请求页数(仅限分页请求) * keyword - 搜索请求关键词(仅限搜索请求) * lastResult - 继承上个规则的结果 * baseUrl - 请求源基础域名(即源文件填写的href) * requestUrl - 当前请求的url(实际请求链接,但不包含params中的参数) * response - 当前请求返回内容(只有res.data部分) * detailUrl - 当前资源的详情url(仅限资源请求) * catalogUrl - 当前资源的目录url(仅限资源请求) * characterUrl - 当前资源的用户url(仅限资源请求) * recomeUrl - 当前资源的推荐url(仅限资源请求) * contextUrl - 当前资源的正文url(仅限资源请求) * barrageUrl - 当前资源的弹幕url(仅限资源请求) * lyricUrl - 当前资源的歌词url(仅限资源请求) * commentUrl - 当前资源的评论url(仅限资源请求) # 源规则声明符(所有声明符都是@开头:结尾) * @text: - 说明:字符串声明符(该声明符优先级最高,当出现时表明该段规则全部以字符串的形式输出) - 通常形式:@text:玄幻小说(输出 '玄幻小说') - 可省略:玄幻小说(输出 '玄幻小说') - 当前不可省略:@text:@sync:return '玄幻小说'(输出 "@sync:return '玄幻小说'") - 使用<js>包裹需要执行的规则:这是一本<js>@sync:return '玄幻小说'</js>(输出 '玄幻小说') * @json: - 说明:JSON数据声明符 - 通常形式:@json:data.tag.list(:['玄幻','科幻','古风'])(输出 ['玄幻','科幻','古风']) - 选中数组中的某一项:@json:data.tag[0](:['玄幻','科幻','古风'])(输出 '玄幻') * @sel: - 说明:selector选择器声明符 - id:ID选择器 - class:类选择器 - tag:标签选择器 - attr:标签属性 - text:标签文本内容 - content:标签全部内容 - >>:选择器连接符号 - 通常形式:@sel:class.item>>class.style>>text(:玄幻小说)(输出 '玄幻小说') - 指定多个选择器的第一项:@sel:class.list[0]>>class.style>>text(:玄幻小说)(输出 '玄幻小说') - 指定多个选择器的第一项(省略):@sel:class.list>>class.style>>text(:玄幻小说)(输出 '玄幻小说') - ID选择器:@sel:id.content>>class.style>>text(:玄幻小说)(输出 '玄幻小说') - 标签选择器:@sel:tag.ul>>tag.li>>text(:玄幻小说)(输出 '玄幻小说') - 标签属性:@sel:tag.img>>attr.src(:https://image.baidu.com/18293810932.jpg)(输出 'https://image.baidu.com/18293810932.jpg') - 标签文本内容:@sel:class.result>>text(:<div>这是一段文本</div>)(输出 '这是一段文本') - 标签全部内容:@sel:class.result>>content(:<div>这是一段文本</div>)(输出 '<div>这是一段文本</div>') * @sync: - 说明:同步方法声明符 - lastResult:上类规则的结果 - attributes:当上类规则结果为selector选择器时可以通过调用此属性 - innerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - outerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - 通常形式:@sync:return '玄幻小说'(输出 '玄幻小说') - 继承上类规则的结果:@sel:class.item>>class.style>>text(:玄幻小说)@sync:return lastResult.replace('小说','')(输出 '玄幻') - 调用attributes:@sel:class.item>>class.style(:<div title="玄幻小说">玄幻小说</div>)@sync:return lastResult.attributes.title.replace('小说','')(输出 '玄幻') - 调用innerHTML:@sel:class.item>>class.style(:<div title="玄幻小说">玄幻小说</div>)@sync:return lastResult.innerHTML.trim().replace('小说','')(输出 '玄幻') - 调用outerHTML:@sel:class.item>>class.style(:<div title="玄幻小说">玄幻小说</div>)@sync:return lastResult.outerHTML.trim()(输出 '<div title="玄幻小说">玄幻小说</div>') * @async: - 说明:异步方法声明符 - lastResult:上类规则的结果 - attributes:当上类规则结果为selector选择器时可以通过调用此属性 - innerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - outerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - 通常形式:@async:return await Http.get('https://www.baidu.com/category/1.html')(输出 '请求结果') - 继承上类规则的结果:@json:data.result.list[0].url(:https://www.baidu.com/category/1.html)@async:return await Http.get(lastResult)(输出 '请求结果') - 调用attributes:@sel:class.item>>class.style(:<a href="https://www.baidu.com/book/1231">玄幻小说</a>)@sync:return await Http.get(lastResult.attributes.href)(输出 '请求结果') * @for: - 说明:for遍历数据声明符 - item:遍历数据的值 - key:遍历数据的索引 - result:返回的结果参数 - attributes:当上类规则结果为selector选择器时可以通过调用此属性 - innerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - outerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - 通常形式:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@for:result.push(item)(输出 ['玄幻','科幻','古风']) - 调用attributes:@sel:class.item>>tag.span(:<a title="玄幻">玄幻</a><a title="科幻">科幻</a><a title="古风">古风</a>)@for:result.push(item.attributes.title)(输出 ['玄幻','科幻','古风']) - 调用innerHTML:@sel:class.item>>tag.span(:<span>玄幻</span><span>科幻</span><span>古风</span>)@for:result.push(item.innerHTML.trim())(输出 ['玄幻','科幻','古风']) - 调用outerHTML:@sel:class.item>>tag.span(:<span>玄幻</span><span>科幻</span><span>古风</span>)@for:result.push(item.outerHTML)(输出 '<span>玄幻</span><span>科幻</span><span>古风</span>) * @map: - 说明:map遍历数据声明符 - item:遍历数据的值 - key:遍历数据的索引 - 通常形式:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@map:item.name(输出 ['玄幻','科幻','古风']) - 复杂情况下:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@map:{ var name = item.name;return name; }(输出 ['玄幻','科幻','古风']) - 调用attributes:@sel:class.item>>tag.span(:<a title="玄幻">玄幻</a><a title="科幻">科幻</a><a title="古风">古风</a>)@map:item.attributes.title(输出 ['玄幻','科幻','古风']) - 调用innerHTML:@sel:class.item>>tag.span(:<span>玄幻</span><span>科幻</span><span>古风</span>)@map:item.innerHTML.trim()(输出 ['玄幻','科幻','古风']) - 调用outerHTML:@sel:class.item>>tag.span(:<span>玄幻</span><span>科幻</span><span>古风</span>)@map:item.outerHTML(输出 '<span>玄幻</span><span>科幻</span><span>古风</span>) * @filter: - 说明:筛选声明符 - item:遍历数据的值 - key:遍历数据的索引 - attributes:当上类规则结果为selector选择器时可以通过调用此属性 - innerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - outerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - 通常形式:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@filter:item.name != '古风'(输出 ['玄幻','科幻']) - 复杂情况下:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@filter:{ var name = item.name;return name != '古风'; }(输出 ['玄幻','科幻']) - 调用attributes:@sel:class.item>>tag.span(:<a title="玄幻">玄幻</a><a title="科幻">科幻</a><a title="古风">古风</a>)@filter:item.attributes.title != '古风'(输出 ['玄幻(selector选择器)','科幻(selector选择器)']) - 调用innerHTML:@sel:class.item>>tag.span(:<span>玄幻</span><span>科幻</span><span>古风</span>)@filter:item.innerHTML.trim() != '古风'(输出 ['玄幻(selector选择器)','科幻(selector选择器)']) * @sort: - 排序声明符 - a:第一个对比项 - b:第二个对比项 - attributes:当上类规则结果为selector选择器时可以通过调用此属性 - innerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - outerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - 通常形式:@json:data.chapter.list(:[{chapter: 2,name:'第二章'},{chapter: 1,name:'第一章'},{chapter: 3,name:'第三章'}])@sort:a.chapter - b.chapter(输出 [{chapter: 1,name:'第一章'},{chapter: 2,name:'第二章'},{chapter: 3,name:'第三章'}]) - 复杂情况下:@json:data.chapter.list(:[{chapter: 2,name:'第二章'},{chapter: 1,name:'第一章'},{chapter: 3,name:'第三章'}])@sort:{var aChapter = a.chapter;var bChapter = b.chapter;return aChapter - bChapter}(输出 [{chapter: 1,name:'第一章'},{chapter: 2,name:'第二章'},{chapter: 3,name:'第三章'}]) - 调用attributes:@sel:class.item>>tag.span(:<a index="3">玄幻</a><a index="1">科幻</a><a index="2">古风</a>)@sort:a.attributes.index - b.attributes.index(输出 ['科幻(selector选择器)','古风(selector选择器)','玄幻(selector选择器)']) * @find: - 说明:查找声明符 - item:遍历数据的值 - key:遍历数据的索引 - attributes:当上类规则结果为selector选择器时可以通过调用此属性 - innerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - outerHTML:当上类规则结果为selector选择器时可以通过调用此属性 - 通常形式:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@find:item.name == '古风'(输出 {name:'古风'}) - 复杂情况下:@json:data.tag.list(:[{name: '玄幻'},{name:'科幻'},{name:'古风'}])@map:{ var name = item.name;return name == '古风'; }(输出 {name:'古风'}) - 调用attributes:@sel:class.item>>tag.span(:<a title="玄幻">玄幻</a><a title="科幻">科幻</a><a title="古风">古风</a>)@filter:item.attributes.title == '古风'(输出 古风(selector选择器)) - 调用innerHTML:@sel:class.item>>tag.span(:<span>玄幻</span><span>科幻</span><span>古风</span>)@filter:item.innerHTML.trim() == '古风'(输出 古风(selector选择器)) * @replace: - 说明:单个替换声明符 - >>:指向需要替换的内容 - 通常形式:@sync:return '玄幻小说'@replace:小说>>漫画(输出:玄幻漫画) - 替换为空:@sync:return '玄幻小说'@replace:小说>>(输出:玄幻) * @replaceAll: - 说明:全体替换声明符 - >>:指向需要替换的内容 - 通常形式:@sync:return '玄幻小说科幻小说'@replaceAll:小说>>漫画(输出:玄幻漫画科幻漫画) - 替换为空:@sync:return '玄幻小说科幻小说'@replaceAll:小说>>(输出:玄幻科幻) * @split: - 说明:字符串切割为数组声明符 - >>:指向数组第几项 - 通常形式:@sync:return '玄幻,科幻,古风'@split:,(输出:['玄幻','科幻','古风']) - 指定第二项:@sync:return '玄幻,科幻,古风'@split:,>>1(输出:科幻) * @string: - 说明:转换字符串声明符 - 通常形式:@sync:return ['玄幻','科幻','古风']@string:(输出:'玄幻,科幻,古风') * @dateFormat: - 说明:时间格式化声明符 - 通常形式:@sync:return 1695608527060@dateFormat:(输出:'2023-09-25 10:23:21') - 只要日期:@sync:return 1695608527060@dateFormat:yyyy-mm-dd(输出:'2023-09-25') - 只要时间:@sync:return 1695608527060@dateFormat:hh:mm:ss(输出:'10:23:21') * @join: - 说明:数组切割为字符串声明符 - 通常形式:@sync:return ['玄幻','科幻','古风']@join:;(输出:'玄幻;科幻;古风') * @trim: - 说明:去除首尾空格声明符 - 通常形式:@sync:return ' 这是一段2边有空格的文本 '@trim:(输出:'这是一段2边有空格的文本') * @have: - 说明:判断字符串是否包含指定字符串声明符 - 通常形式:@sync:return '这本小说已完结'@have:已完结(输出:true) * @equal: - 说明:判断相等声明符 - 通常形式:@sync:return 500@equal:50(输出:false) * @unequal: - 说明:判断不等声明符 - 通常形式:@sync:return 500@unequal:50(输出:true) * @eval: - 说明:字符串转函数声明符 - 通常形式:@sync:return 'function () { return ['玄幻','科幻','古风'] }'@eval:(输出:['玄幻','科幻','古风']) * @match: - 说明:取指定字符之间值声明符 - >>:2个指定字符之间的连接符号 - 通常形式:@sync:return '你看过这本小说吗这是一本不错的小说'@match:小说>>小说(输出:'吗这是一本不错的') * @reverse: - 说明:数组取反声明符 - 通常形式:@sync:return ['玄幻','科幻','古风']@reverse:(输出:['古风','科幻','玄幻']) * @relation: - 说明:url指定请求声明符 - 通常形式:detailUrl:"https://www.baidu.com/book/1231@relation:0" - 指向第二个详情规则:detailUrl:"https://www.baidu.com/book/1231@relation:1" * @type: - 说明:url指定资源类型声明符 - novel:小说 - comic:漫画 - picture:图片 - video:视频 - short:短视频 - music:音乐 - audible:有声书 - broadcast:广播 - article:文章 - live:直播 - character:角色 - gather:合集 - 通常形式:catalogUrl:"https://www.baidu.com/book/1231@type:novel" * @method: - 说明:url指定请求方式声明符 - get: GET请求 - post: POST请求 - 通常形式:url:"https://www.baidu.com/category/1@method:post" * @header: - 说明:url指定请求头部声明符 - Charset:请求格式(utf-8 | gbk) - 通常形式:url:"https://www.baidu.com/category/1@header:Host:'www.baidu.com'" - 修改请求格式:url:"https://www.baidu.com/category/1@header:Host:'www.baidu.com',Charset:'gbk'" * @params: - 说明:url指定请求参数声明符 - 通常形式:url:"https://www.baidu.com/category@method:post@params:page:1,sort:'hot'" * 示例: ```javascript { //这是一段获取标签得示例规则 tag: "@sel:class.list>>class.tag@map:item.attributes.name@string:" } ``` # 源规则特殊符号 * {{}} - 说明:表示这是一个变量或方法,用于URL请求 - 使用:"https://www.baidu.com?searchkey={{keyword}}&p={{page}}" * <js></js> - 说明:表示这是一段需要执行的规则(需要与@text:声明符配合使用) - 使用:"@text:你好啊这是一段链接<js>@sync:return 123</js>" * :: - 说明:用于对地址命名 - 使用:"仙侠::https://www.baidu.com/1" * +: - 说明:用于对地址进行分隔 - 使用:"仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2" * ?: - 说明:用于对地址分类 - 使用:"小说分类?:仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2" * $: - 说明:用于对分类进行分隔 - 使用:"小说分类?:仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2$:漫画分类?:热血::https://www.baidu.com/3+:都市::https://www.baidu.com/4" * &es; - 说明:转义字符\(为了方便转义字符的存储,对一些转义字符做了命名) - 使用:"@sync:var str = 'n你好n';return str.match(/n(&es;S*)n/)" * &wrap; - 说明:转义字符\n - 使用:"@sync:return ['这是一段文本内容','这是一段文本内容', '这是一段文本内容']@join:&wrap;&wrap;" * &nbsp; - 说明:转义字符空格 * &tabu; - 说明:转义字符\t * &quot; - 说明:转义字符\" * &apos; - 说明:转义字符\' * &lt; - 说明:转义字符< * &gt; - 说明:转义字符> * &oe; - 说明:转义字符{ * &ce; - 说明:转义字符} # 源规则之动态域名 * 1、部分网站的域名会每天变更,为了避免经常去更改源文件的域名(href),因此可以填写动态域名规则(dynamic) * 2、动态域名规则(dynamic)会导致每次请求都会去获取当前最新域名 * 3、当填写了动态域名规则(dynamic)后,基础域名(href)会作为请求动态域名规则的请求连接使用,可以像规则url那样填写基础域名(href) * 示例如下: ```javascript { href: "https://www.baidu.com@method:post@params:timestamp:16896915",//填写动态域名规则(dynamic)后,可以按照规则url方式填写基础域名(href) dynamic: "@sel:tag.script>>content@replace:location.href=>>"//返回新域名,如果失败则返回基础域名(href) } ``` # 源规则之URL请求 * 1、一般形式如下: ```javascript { url: "https://www.baidu.com?searchkey={{keyowrd}}&p={{page}}" } ``` * 2、@params:声明符(添加参数): ```javascript { url: "https://www.baidu.com@params:searchkey:keyowrd,p:page" } ``` * 3、@method:声明符(POST请求): ```javascript { url: "https://www.baidu.com@method:post@params:searchkey:keyowrd,p:page" } ``` * 4、@header:声明符(返回结果为GBK格式): ```javascript { url: "https://www.baidu.com?searchkey={{keyowrd}}&p={{page}}&header:Charset:'gbk'" } ``` * 5、@sync:同步声明符(复杂情况下可使用): ```javascript { url: "@sync:var url = 'https://www.baidu.com';var params = {searchkey:keyowrd,p:page};var method = 'post';var header = {Charset:'gbk'};return{url,params,method,header}" } ``` * 6、非常复杂情况下: ```javascript { Fnc: { requestSearch: function () { var url = 'https://www.baidu.com'; var params = {searchkey:keyowrd,p:page}; var method = 'post'; var header = {Charset:'gbk'}; return{url,params,method,header} } }, search: [{ url: "@sync:return Fnc.requestSearch()" }] } ``` * 7、设置UA(当源网站分手机站和PC站时使用,因为手机访问,一般会跳到手机站,导致获取数据错误): ```javascript { ua: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",//设置UA,表示从电脑端访问 url: "https://www.baidu.com?searchkey={{keyowrd}}&p={{page}}" } ``` # 源规则之搜索 * 类型(type) - novel 小说 - comic 漫画 - picture 图片 - video 视频 - short 短视频 - music 音乐 - audible 有声书 - broadcast 广播 - article 文章 - live 直播 - character 角色 - gather 合集 * UA(ua) - User-Agent * 地址(url) - keyword为关键字标识,通常形态为{{keyword}},运行时会替换为搜索关键字 - page为关键字标识,通常形态为{{page}},page的初值为1也可以对page进行计算,如:{{(page-1)*20}} * 列表规则(list) - 只能是数组 * ID(id) - 资源唯一ID、非必填 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 * 下一页链接(nextUrl) - 一些网站的分页请求并不依靠页码,而是请求一次再生成下一页链接,这时便需要用到该属性 # 源规则之发现 * 类型(type) - novel 小说 - comic 漫画 - picture 图片 - video 视频 - short 短视频 - music 音乐 - audible 有声书 - broadcast 广播 - article 文章 - live 直播 - character 角色 - gather 合集 * UA(ua) - User-Agent * 地址(url) - page为关键字标识,通常形态为{{page}},page的初值为1也可以对page进行计算,如:{{(page-1)*20}} - ::为关键字标识,用于对地址命名,如:"仙侠::https://www.baidu.com/1" - +:为关键字标识,用于对地址进行分隔,如:"仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2" - ?:为关键字标识,用于对地址进行分类,如:"小说分类?:仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2" - $:为关键字标识,用于对地址分类进行分隔,如:"小说分类?:仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2$:漫画分类?:热血::https://www.baidu.com/3+:都市::https://www.baidu.com/4" * 列表规则(list) - 只能是数组 * ID(id) - 资源唯一ID、非必填 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 * 下一页链接(nextUrl) - 一些网站的分页请求并不依靠页码,而是请求一次再生成下一页链接,这时便需要用到该属性 # 源规则之随机 * 类型(type) - novel 小说 - comic 漫画 - picture 图片 - video 视频 - short 短视频 - music 音乐 - audible 有声书 - broadcast 广播 - article 文章 - live 直播 - character 角色 - gather 合集 * UA(ua) - User-Agent * 地址(url) - page为关键字标识,通常形态为{{page}},page的初值为1也可以对page进行计算,如:{{(page-1)*20}} - ::为关键字标识,用于对地址命名,如:"仙侠::https://www.baidu.com/1" - +:为关键字标识,用于对地址进行分隔,如:"仙侠::https://www.baidu.com/1+:科幻::https://www.baidu.com/2" * 列表规则(list) - 只能是数组 * ID(id) - 资源唯一ID、非必填 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 * 下一页链接(nextUrl) - 一些网站的分页请求并不依靠页码,而是请求一次再生成下一页链接,这时便需要用到该属性 # 源规则之详情 * UA(ua) - User-Agent * 处理返回数据(response) - 处理一下返回数据 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 # 源规则之角色 * UA(ua) - User-Agent * 列表规则(list) - 只能是数组 * ID(id) - 资源唯一ID、非必填 * 名称(title) * 封面(cover) * 头像(avatar) * 简介(desc) * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 # 源规则之推荐 * UA(ua) - User-Agent * 列表规则(list) - 只能是数组 * ID(id) - 资源唯一ID、非必填 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 * 下一页链接(nextUrl) - 一些网站的分页请求并不依靠页码,而是请求一次再生成下一页链接,这时便需要用到该属性 # 源规则之目录 * UA(ua) - User-Agent * 列表规则(list) - 只能是数组 * ID(id) - 资源唯一ID、非必填 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 * 下一页链接(nextUrl) - 一些网站的分页请求并不依靠页码,而是请求一次再生成下一页链接,这时便需要用到该属性 # 源规则之正文 * UA(ua) - User-Agent * 处理返回数据(response) - 处理一下返回数据 * 名称(title) * 封面(cover) * 创建者(creator) * 头像(avatar) * 简介(desc) * 最新更新(latest) * 风格(style) * 标签(tag) * 是否完结(isEnd) * 是否VIP资源(isEnd) * 更新时间(updateTime) * 资源请求来源(referer) - 主要用于漫画和图片的referer验证 * 三方字体文件链接(fontSrc) - 主要用于小说内容的自定义字体 * 资源路径 图片、音频、视频链接(src) * 阅读内容(content) - 小说为文本内容只能是字符串 - 漫画为图片列表只能是数组 如:['https://image.baidu/com/12381928391.jpg','https://image.baidu/com/12381928391.jpg'] - 文章为HTML文本只能是字符串 如:'<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>' * 自定义内容 阅读自定义页面(custom) - 用于小说自定义页面展示只能是数组 如:['<div><span>这是一段文本</span><img src="https://image.baidu/com/12381928391.jpg" width="100%"></div>'] * 分享链接(shareUrl) - 用于分享海报生成二维码的链接、不填默认取详情链接为分享链接 * 详情链接(detailUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID时,将该链接生成ID * 目录链接(catalogUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 正文链接(contextUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 - 不指定ID和详情链接时,将该链接生成ID * 评论链接(commentUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 推荐链接(recomeUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 角色链接(characterUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 弹幕链接(barrageUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 歌词链接(lyricUrl) - @relation: 指向第几个请求 通常为@relation:0、表示指向请求第一个请求、不填默认请求第一个 * 额外字段(extra) - 部分资源需要一些特殊字段才能请求,可以将这些字段储存在这个属性中,方便取用 * 下一页链接(nextUrl) - 一些小说网站或者漫画网站可能存在一个章节的内容还会分页,将当前页的下一页放入该属性则继续请求下一页内容 # 源规则之评论 * UA(ua) - User-Agent * 列表规则(list) - 只能是数组 * 名称(title) * 头像(avatar) * 二级标题(subtitle) * 评论内容(content) * 别人回复该发言列表(subComments) - 只能是数组结构和评论结构一样 * 该发言回复评论列表(masterComments) - 只能是数组结构和评论结构一样 * 下一页链接(nextUrl) - 一些小说网站或者漫画网站可能存在一个章节的内容还会分页,将当前页的下一页放入该属性则继续请求下一页内容 # 源规则之弹幕 * UA(ua) - User-Agent * 列表规则(list) - 只能是数组 * 发送人名称(name) * 头像(avatar) * 发送内容(text) * 发送内容颜色(color) * 弹幕显示时间(time) # 源规则之歌词 * UA(ua) - User-Agent * 列表规则(list) - 只能是数组 * 歌词文本(title) * 歌词显示时间(time)