阅读3.0书源制作记录

前言

    使用「阅读」这个app也有2到3年了,找的许多书源慢慢就失效了;于是趁着过年这段时间研究一下这个阅读的书源到底怎么制作和修复。

根据我自己这几天的实践总结来看,一般的书源制作还是不难的。我自己是做后端的,对前端也就是了解一些基础的知识,用这些基础知识就足够写书源了,大家不要有畏难情绪!

一、软件及下载地址

    「阅读」这是一个开源软件,开源地址在「https://github.com/gedoor/legado」;如果没有魔法上网的手段,大家可以通过国内「源仓库」的链接进行下载使用。

我使用的版本是「正式版3.23.110211.apk」。

二、阅读的使用

    书源有许多获取渠道,最简单就是从「源仓库」里面的书源列表获取,「3.X一键导入」即可!其他的方法就是在获取到网络链接之后从「我的-书源管理-右上角三点-网络导入」。

书源添加好了之后直接返回到主页搜索想看的书籍,接着就可以愉快地看书了。

对编写书源不感兴趣的到此为止,接下来的部分就可以不看了。

三、书源编写

开始编写书源(以在手机编写书源举例):

「我的-书源管理-右上角三点-新建书源」点击之后弹出一个帮助,但是仔细看了这个帮助之后,我发现它的作用并不大,聊胜于无!

所以我自己上网一顿找,才找到了几份相关的教程(这方面的资料确实比较少,我会把链接贴到后面)。

随便找一个你常看的小说站,现在开始编写书源。

1、点击「基本」这个tab,其中【源URL】就是小说站的网址,【源名称】自己给书源起的名称,【登录URL】网站的登录链接,其他的暂时先不用填。

2、点击「搜索」这个tab,【搜索地址】搜索分两类,一类网站使用get方法,另一类使用post方法;

从你常看的小说网站随便发起一次搜索,从浏览器的地址栏复制一下,如果看到形如「?q=%E5%87%A1%E4%BA%BA,?keyword=%E5%87%A1%E4%BA%BA,……」可以判断它使用的是get方法;如果没有这种,就使用F12从网络请求里面找,找到post方法,body里面都含有关键词;

①如果是get方法,就把链接复制下来,用{{key}}替换掉%E5%87%A1%E4%BA%BA,形成「?q={{key}},?keyword={{key}},……」

例如:https://cn.ttkan.co/novel/search?q={{key}}

填好之后可以调试一下,看看是不是能访问到内容,

「右上角中间的虫按钮-填写关键词-点击箭头」可以看到能搜索。

 再看看是否访问到了内容,点击「右上角三个点-搜索源码」

 可以看到是能显示查找到的结果。

还有翻页参数可以用{{page}}替换

②如果是post方法,就在搜索链接后面添加「,{'method':'POST','body':'searchkey={{key}}'}」

例如:https://www.83kk.net/ss/,{'method':'POST','body':'searchkey={{key}}'}

 通过「右上角三个点-搜索源码」往下面滚动发现它也搜索成功了

 【书籍列表规则】这里填写解析规则,「阅读」支持多种解析规则(如Jsoup、JSONPath、XPath还可以直接用Js解析),我以前接触过XPath就直接用XPath了。在规则前面写「@XPath:」表明使用XPath规则。「XPath教程快速XPath教程全面、实在不会就问Deepseek

搜索成功之后可以从搜索源码里面把html内容复制出来,丢到html在线格式化工具中去格式化(也可以直接在复制保存成html文件,再到浏览器用F12直接检查)找到中间的书,比如第3到第4本书,然后观察它们的结构,找到能把每本书都包起来的结构体,确保经过你的解析产生的是一个list。

如图,可以看到上一本书结尾的</div>和下一本书开头的<div>。所以可以使用红框里的div来定位,写成 @XPath://div[contains(@class, 'novel_cell')] 

 如图已经得到列表了。

【书名规则】由于刚才我们已经获得了列表,包含了每个书籍的XPath结构,所以现在div是顶点,在div下面解析书名。写成@XPath:ul/li[1]/a/h3/text()

 如图,正确获得到了书名。(注: XPath的序号是从1开始)

用同样的方法获取到简介、作者、分类、字数、最新章节、封面、详情等内容;其中【书籍列表】、【书名】、【详情页URL】是必填的,其他没有的可以空置。

填写好详情页URL的规则之后,就可以进入下一步了。

3、点击「目录」这个tab,其中【目录列表规则】、【章节名称】、【章节URL规则】是必填的,其他没有的可以空置。

【目录列表规则】填写的是和上面(书籍列表规则)类似的解析,解析成一个list,我们调试然后通过「右上角三个点-目录源码」查看内容,然后分析。

 这里直接动用观察法,看到full_chapters下面,每一个a标签就是一章,所以【目录列表规则】就是 @XPath://div[@class=full_chapters][1]/a

同时【章节名称】就是 @XPath:text(),【章节URL规则】就是 @XPath:@href。

4、点击「正文」这个tab,其中【正文规则】是必填的,其他没有的可以空置。

调试然后通过「右上角三个点-正文源码」查看内容,解析结构可以分析出是 @XPath://div[@class=“content”]//p/text(),同时【标题】是 @XPath://div[@class=title]/h1/text()

如图,正文已经顺利加载出来了,目前这个书源就已经完成了整体的框架,完成了80%的功能了。现在就可以保存试用了。

5、试用

返回到搜索栏搜索

 搜索结果如图。

 点击其中一本书,如图

等待目录加载完,就可以点击阅读,然后

 如图,正文加载完成

•「发现」这个tab主要是填写一些分类和排行榜之类的内容,【发现地址规则】必填,其他可以空置。

格式 「玄幻::/novel/class/xuanhuan」分类名称::路径,它会自动先调用当前页面的规则,没有则调用搜索页面的解析规则。

 

如果遇到各种奇奇怪怪的问题,上述的简单教程无法解决,请看下面的。

 四、高级教程

 实际上并不是每个源都像上面那样简单,有些源有各种限制、加解密,想自己去处理,怎么办?

1、文本替换 ##regex##新内容

在书源的任何规则框都支持通过 ##regex##新内容 替换新内容,如果替换成空就直接 ##regex

2、js的使用 <js></js>

在书源的任何规则框都支持使用这种方式加载js,js引擎使用的是Rhino;任何上一步的结果都将会赋给内置的result变量,可以在js代码中直接使用。

例如:

<js>
var url = result;
url = 'http://www.xxx.com' + url;
url;
</js>

内置的js变量有许多,如java(java变量指向已经被阅读修改)、baseUrl、result、book、source等。详情见jsHelp.md

例如:打印日志

<js>
java.log("结果是:"+result);
</js>

这就是一个日志打印语句,可以在调试的时候打印日志(注:在「我的-其他设置-记录日志」开启之后,阅读每一章的过程中,就会记录到日志里面,在阅读正文时右上角3点可以查看日志)

而java的许多内置函数可以通过JsExtensions.kt查看。

3、遇到奇怪的问题 链接后加##$##,{"webView":true}

这是在链接后追加webView参数,采用webView加载,url参数还有很多,具体可以参考AnalyzeUrl.kt

五、相关资料

1、破冰源教程(详细且简单、Jsoup)

2、视频教程,B站UP 关耳001125第十三只黑鸟

3、官方规则说明

4、「阅读」开源代码,我就是把代码下载下来大致浏览了一下,比较有助于写书源的就是\app\src\main\java\io\legado\app\data、app\src\main\java\io\legado\app\help这两个路径下的东西。

5、语雀文档库

6、一些资源获取(喵公子订阅源源仓库XIU2aoaostar、……)

六、致谢

    感谢「阅读」的开发者开发的这个app,方便了我好几年的小说阅读。

现在生活的压力越来越大,节奏越来越快。有时候一忙起来,一天一下子就过去了,拖着疲惫的身躯,洗完澡躺倒床上,连手机都不想打开,需要挤出时间来才能写一篇博文。希望大家支持一下,多多评论,点赞,阅读!

posted @   MoZQ  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 本地部署 DeepSeek:小白也能轻松搞定!
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
点击右上角即可分享
微信分享提示