开源阅读源 JS 说明¶
预计阅读时长 : 7 分钟
Legado 使用 Kotlin 语言开发,并内置 Rhino JavaScript 引擎,因此可以使用 JavaScript 脚本大幅增加各个规则配置的功能。除了使用 JavaScript 语法,脚本中还可以调用 Kotlin 支持的 Java 方法。
除了 JavaScript 的原生语法,Legado 中自定义的 JS 方法详见 JavaScript 说明 ⧉
语法要求¶
- 可以在
<js></js>
中 和@js:
后使用,规则结果存在 result 中 @js:
只能放在其他规则的最后使用,或者在{{}}
中内置使用<js></js>
可以在任意位置使用,还能作为其他规则的分隔符,例:tag.li<js>...</js>//a
- result 的值不需要显式返回,会直接把最后一个变量值的值传递给 result
变量使用¶
字符串变量¶
key
: 关键字标识,通常形态为{{key}}
- key为关键字标识,通常形态为{{key}},运行时会替换为搜索关键字
- 也可以对key进行加密等操作,如:{{java.base64Encode(key)}}
page
: 关键字标识,通常形态为{{page}}
,- page 的初值为 1
- 也可以对 page进行计算,如:{{(page-1)*20}}
- 有时会遇到第一页没有页数的情况,有两种方法:
- {{page - 1 == 0 ? "": page}}
- <,{{page}}>
baseUrl
: 当前 urlresult
: 上一步的结果,在组合规则中代表的上一步规则的结果,独立使用则代表当前 baseUrl 的响应内容title
: 当前标题,titlenextChapterUrl
: 下一章节 urlsrc
: 内容,源码
类变量¶
java
: 当前类cookie
: cookie 操作类 ⧉cache
: 缓存操作类 ⧉source
: 基础书源类 ⧉chapter
: 当前目录类 ⧉book
: 书籍类 ⧉
put 与 get¶
java.put 与 java.get 只能用于 JavaScript 语法规则中,实现变量的传递。
java.get 的另外用法
根据传递的参数不同,java.get
还可以用作网络请求,具体用法如下:
在 JavaScript 以外的语法规则中,可以使用 @get 和 @put,注意变量的赋值需要加引号:
{{}}¶
{{}}
可以看做 \
${}`` 的语法糖,用于在字符串中调用变量
- 在搜索 URL 与发现 URL 中的
{{}}
里调用变量时,只能使用 JavaScript,不需要@js:
开头 - 在搜索 URL 与发现 URL 以外的
{{}}
里调用变量时,默认使用 JavaScript,不需要@js:
开头,使用 JSONPath 需要以@json:
或$.
开头,CSS 需要以@css:
开头
通过以上的语法,可以和不同的提取规则配合使用,更加灵活的用在需要使用字符串组合的场景中:
章节信息 | |
---|---|
常用方法¶
JSON.stringify()方法¶
JSON.stringify() 是 JavaScript 最常用的方法之一,它的作用是将一个JavaScript对象转换成一个JSON字符串,这在需要将对象作为字符串传输(例如,通过HTTP请求)时非常有用。
转换后的字符串可以被服务器解析并用来处理请求,根据user-agent、accept-language等信息提供定制化的响应。
示例代码¶
搜索地址 | |
---|---|