阅读书源指南

本指南参考了喵公子的规则说明和阅读仓库的jshelp等文档,需要有一定基础。

url附加参数

工具箱

常用内置变量及函数

参见jsHelp.mdJsExtensions.kt

url附加参数

https://www.baidu.com,{
    "charset": "这里是编码",
    "method": "POST",
    "body": "......",
    "headers": {......},
    "js": "解析完url参数时执行,结果会赋值给url",
    "webView": true,
    "proxy": "socks5://127.0.0.1:1080@用户名@密码"
}

配置需要的项目即可,完整参数见data class UrlOption()

{{}}的使用

搜索URL与发现URL中只能使用js,且有page和key变量,前者为页数,从1开始,后者为搜索关键词。

其他地方应该在对应规则前加标识,Default规则需要以@@开头,XPath需要以@xpath://开头,JSONPath需要以@json:$.开头,CSS需要以@css:开头。

任何与url相关的地方都可以返回'{{这里是代码}}',阅读会解析url并执行

变量put与get

只有使用JSONPath不需要加引号:

@put:{bid:"@@class.pid@text"}
@get:{bid}

调用java函数

可以如io.legado.app.utils.htmlFormat(str)以包名开头,或导入包,以Packages开头:

var javaImport = new JavaImporter();
javaImport.importPackage(Packages.java.lang);
with(javaImport) { ...... }

发现页url可以为

首页::/

[{"title": "首页",
  "url": "/",
  "style": {
     "layout_flexGrow": 0,
     "layout_flexShrink": 1,
     "layout_alignSelf": "auto",
     "layout_flexBasisPercent": -1,
     "layout_wrapBefore": true
  }
}]

一些有用的代码片段和思路

  • 对于某些视频源,希望直接弹出浏览器观看,可以用这个(设置了静音自动播放):
  • 正文规则:

    [包含视频链接的元素]@html
    @js:const regex = /url=(.*?)"/;
    const url = result.match(regex)[1];
    const html = `data:text/html;charset=utf-8,<html><head><meta name="viewport" content="width=device-width"><style>body {display: flex;justify-content: center;align-items: center;background-color: black;margin: 0;}video {max-width: 100%;max-height: 100%;}</style></head><body><video controls autoplay muted><source src="${url}"></video></body></html>`;
    java.startBrowser(html, java.get('t'));
    ' 【刷新正文】或【点击章节链接】跳转播放\n🔗直链:\n' + url
        
  • 对于某些搜索或发现下一页url位于页面中,可以用这个:
  • //将搜索或发现url改为
    {{page == 1 ? '这里是原本的url' + key : cache.getFromMemory('url')}}
    //在书籍列表规则后加上
    @js:cache.putMemory('url', java.getElement('这里是下一页链接所在元素的规则')); result
  • 如果目录下一页变化比较多,不好写,可以获取总共有多少页,构造所有页的url并返回url数组。