3步让ReadCat读遍全网小说:手把手学会自定义书源插件
【免费下载链接】read-cat一款免费、开源、简洁、纯净、无广告的小说阅读器项目地址: https://gitcode.com/gh_mirrors/re/read-cat
如果你是个爱看小说的人,大概经历过这样的场景:某本热书只在某个小网站独家连载,手机里装了三四个阅读App,翻来覆去就是找不到想看的那一本;偶尔找到了,又被满屏的弹窗广告、强制下载提醒劝退。今天要介绍的 ReadCat,就是为解决这类"书荒+广告轰炸"问题而生的——一款免费、开源、无广告的小说阅读器。它最核心的武器,就是高度自由的书源插件机制:想读哪个网站的书,自己接一条"管道"就行。
把"找书"这件事,拆成三个动作
很多新手一听到"开发插件"四个字就打退堂鼓,其实大可不必。书源插件说白了,就是告诉 ReadCat 三件事:去哪搜书、详情长什么样、正文在哪。
先看这张图,ReadCat 的图标本身就像一本翻开的书,暗合它"纯粹阅读"的定位:
对应的三个动作分别是:
- 搜书:输入关键词后,向目标网站发起请求,把书名、作者、封面整理成列表返回。
- 看详情:点进一本书,需要拿到简介、目录、章节列表这些信息。
- 读正文:这是每天用得最多的环节,按章节地址抓取正文内容,交给阅读器排版渲染。
用大白话讲,一个书源插件就是一张"藏宝图",图上标清楚了书在哪里、怎么打开、正文在哪个抽屉里。ReadCat 在代码层面把这三个动作定义为search、getDetail、getTextContent三个方法,每个插件只需按约定实现它们即可。
动手写你的第一个书源:比想象中简单
真正写起来你会发现,基础骨架非常朴素:一个类,声明好自己的名字、版本、作者,再补上那三个方法。核心步骤可以归纳成三步:
第一步,定"身份"。给插件起个能识别的名字,声明版本号和归属分组。ReadCat 对插件 ID 有 16 到 32 位的长度校验,主要是为了避免插件之间冲突。
第二步,写搜索。用 ReadCat 提供的this.request.get发请求,拿到页面后用内置的解析工具(比如项目里集成的 cheerio,能把网页当作结构化的 DOM 来操作)提取书名和链接。这一步是整条流水线的入口,搜得到书,后面的一切才有意义。
第三步,补全详情与正文。详情页要抠出简介、作者、章节列表;正文页则需要过滤掉脚本、广告、无关导航这类噪音。有意思的是,ReadCat 在导入书源时会对正文做一道 HTML 消毒处理,自动剔除危险标签和空段落,等于帮插件开发者兜了一层底。
整个过程中你甚至不需要理解 Vue、Electron 这些框架细节,因为插件运行在 ReadCat 内置的独立沙箱环境里(项目使用的是 vm2),它只关心你导出的那个插件类本身。
别急着上线,先用内置工具台调试
插件写完后最怕什么?怕脚本报错却不知道错在哪。ReadCat 专门为开发者准备了一套插件开发工具:在设置里导入插件开发工具包后,就能打开一个独立的调试窗口(对应源码里的electron/plugin-devtools.ts)。控制台日志、错误堆栈一目了然,你可以像调试普通网页一样逐行检查插件行为。
调试时有两个小习惯值得养成:
- 单测每个方法:先把
search单独跑通,再依次验证getDetail和getTextContent,别一口气写完再回头找 bug。 - 善用 console:在关键节点打印返回数据,确认拿到的 HTML 结构和你预想的一致。网站改版导致插件失效,九成都是选择器没跟上。
从"能用"到"好用"的四个细节
一个刚能跑的书源,距离"顺手"还有几步。日常使用中,下面四点会明显提升体验:
| 细节 | 做什么 | 收益 |
|---|---|---|
| 分页搜索 | 结果多时分页拉取,而不是一次抓完 | 首屏更快,避免请求超时 |
| 缓存结果 | 对详情页、目录做本地缓存 | 二次打开秒开,省流量 |
| 代理支持 | 部分站点需要代理才能访问,插件可声明走代理 | 特殊网络环境也能用 |
| 封面处理 | 对图片地址做统一适配 | 书架显示整齐美观 |
另外,ReadCat 为每个插件提供了独立的存储空间(getStoreValue/setStoreValue),可以把搜索历史、上次阅读位置这类轻量数据存进去,下次运行接着用。
写好的插件怎么分享给别人
开发完成不等于结束,让更多人用上你的书源才算完整。流程同样不复杂:
- 在设置面板的书源管理里,把插件导出成文件。
- 朋友拿到文件后,在 ReadCat 里选择"导入插件",一键加载。
- 插件导入后需要手动启用,之后就能在搜索、书架、阅读等所有环节看到它的身影。
ReadCat 的插件体系并不只有书源一种——它还预留了书城插件和朗读引擎插件的扩展位。目前项目内置了一个基于 Edge 服务的 TTS 朗读引擎,支持多种中文音色,可以边看边听;未来书城能力补齐后,插件生态会更完整。
最后说两句
书源插件的价值,在于把"读哪本书"的选择权彻底交还给你自己。与其被动接受某个平台的内容池,不如亲手为喜欢的网站写一条管道。从最简单的一个搜索方法开始,跑通第一个书源,你会发现后面的一切都是水到渠成。
如果你感兴趣,可以直接获取项目源码研究插件系统的实现,接口定义在src/core/plugins/defined/booksource.d.ts,插件加载与校验逻辑在src/core/plugins/index.ts,插件状态管理则集中在src/store/plugins.ts。仓库地址是 https://gitcode.com/gh_mirrors/re/read-cat ,clone 下来运行npm install即可开始探索。
ReadCat 目前还处于内测阶段,功能在快速迭代中,现在正是参与共建的好时机。动起手来,为它写你的第一个书源插件,让更多读者用上你的作品吧。🚀
【免费下载链接】read-cat一款免费、开源、简洁、纯净、无广告的小说阅读器项目地址: https://gitcode.com/gh_mirrors/re/read-cat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考