先森一直以为自己之前导入的1300+的书源是从源仓库导入的,然后就开始了各种研究。
导入书源无反应
书源同步

书源同步:一直转圈
先森从源仓库随便找一个书源链接导入,发现一直在转圈,没有任何反应,没有网络请求完成项,也没报错。
先森以为是源仓库的网站客户端访问有问题,专门把json文件拉到服务器,结果发现获取书源配置依旧转圈,且查看服务器日志,根本没有该URL的请求项。
然后先森以为是爱阅书香与阅读APP的3.X书源不兼容,专门找了2.X的书源测试,结果还是一样的。
此时先森懵逼了,因为此时先森坚信以前导入的1300+书源就是从源仓库导入的,现在为什么导入不成功了呢?客户端APP早就下架了,不可能有更新,源仓库书源更新了么?但是2.X版本的也无法使用又是为什么?而且为什么先森下载到自己web服务器上也不行,甚至根本没有请求。
根据先森询问大模型的答复,大模型回复可能是先森网站证书啥的不兼容问题,或者爱阅书香太久没更新,一些网络请求API被苹果禁止了,研究陷入停滞。
软件下架之后,官方的帮助文档也被删除了,相关的资料真的太少了。

书源导入提示
先森注意到填写书源地址的默认信息中有一些提示,先森打算照做试试。
由于怀疑自己的网站证书有问题,导致不发起请求,先森专门把json文件上传到新建的github项目中,然后拉取,不行。
然后先森使用第三条,ifreetime://config/开头的方式,在浏览器直接输入然后跳转到爱阅书香

用Scheme跳转导入

信息不支持
结果在软件中提示不支持,此时先森还是坚信以前的书源是从源仓库导入的。
处理剪切板
然后先森发现爱阅书香还有一个“处理剪切板”的操作,直接复制json链接后,点击按钮后确实有反应:

剪切板导入json
结果满心欢喜的点击导入,结果发现爱阅书香是当做一本新书来操作,此时先森依然坚信...

导入文本文件
然后先森直接去源仓库复制json内容,结果软件还是提示没有可以处理的数据:

复制json内容,剪切板导入
研究json格式
虽然大模型早就提示我阅读和爱阅书香的json格式不一样,但是先森一直不予理会,毕竟先森认为以前都能成功导入嘛。
但是接连的挫折也让先森不得不研究起json的格式来,得想办法导入成功才行。
让大语言帮先森转换了N次适配爱阅书香的json格式还是失败后,先森觉得要先找些能导入爱阅书香的json案例才行了。
这里不得不说当一个软件失去更新,讨论减少后,相关信息是真的难找。
先森本来是想把软件内的书源导出来研究一下,结果发现导出来的是.ibs格式的,直接打开还是十六进制数据,无法使用,但看数据开头是50 4B 03 04,此文件属于zip压缩包,不过解压需要密码,没办法通过ibs拿到json。
最终通过搜索,找到了可以把json内容通过“处理剪切板”导入的文件,不过更新时间确实太老了。
https://github.com/y7478729/BookConfig/tree/master

爱阅书香json书源
对比了一下,爱阅书香和阅读的JSON差距真的很大,字段可以说完全不同:

json字段对比
不仅字段名称不同,两个软件解析小说网站的方式也不一样,比如先森自己校准的一个“篱笆好文”网站,书籍搜索的规则解析代码就不一样,同样是作者,爱阅书香是.//div[@class='book-author']/text(),阅读是.book-list a,可以看出来,爱阅书香是用的XPath格式,而阅读使用的是CSS选择器语法。
自己调整配置书源也挺麻烦的,估计先森还需要另外一些篇记录,避免以后搞忘。

解析方式对比
以前导入的书源
先森在寻找爱阅书香的json规则时,发现能找到的书源大多都是.ibs格式的,然后先森发现了1300+个书源的真正来源:
https://github.com/shidahuilang/shuyuan
所以先森的书源真的不是从源仓库导入的,为了导入白折腾那么久。
书源地址:
https://github.com/shidahuilang/shuyuan/raw/shuyuan/aiyueshuxiang.ibs

书源更新记录
不过这个书源也是自提交之后就再没更新过了,其他软件的书源更新都还是非常活跃的😮💨。
正确URL导入的方式
先森偶然间发现,从网络导入书源时,如果URL不带json是可以发起网络请求的,但是当URL以 .json、.txt等格式结尾时,网络请求都不会发起,.ibs结尾时可以的。
这应该是爱阅书香的限制,但是没有提示就过分了。

可以发起网络请求的URL
先森测试了一下,直接把.json重命名为.ibs是不行的, 不过把json文件压缩一下,把压缩包设置为.ibs格式是可以成功导入的。

制作.ibs压缩包
总结一下,爱阅书香可以导入json的方式有两种:
1、复制json内容,从“处理剪切板”导入;
2、把json文件压缩,修改压缩包后缀为.ibs,然后通过网络地址导入。
通过json导入的书源编辑有密码?
比较奇怪的事,明明是自己导入的json书源,结果打开竟然有密码,在json中又没看到明显的密码字段。
使用的json如下:
{
"homeUrl": "http://www.77wxw.com",
"enable": true,
"authorId": "f6c7b3b2e24e10542d9fb490b46c4752",
"bookDetail":
{
"forGetMethod": true,
"parser":
{
"coverUrl": "img[@title].@src",
"statusText": "li[@class=col-md-6][2]#[\\s\\S]*: @=>",
"lastUpdateDate": "li[@class=col-md-6][3]",
"typeText": "li[@class=col-md-6][1].a",
"desc": "div[@class==panel-body][0]"
},
"params":
{},
"url": "@dyn:u=source.helpId; check(!u, return nil); format('%@', u)"
},
"bookWorld":
{},
"chapterDetail":
{
"forGetMethod": true,
"parser":
{
"content": "div[@id=content]"
},
"params":
{}
},
"weight": 1,
"priorityEncoding": 4,
"needSupportDynTask": true,
"sourceDetail":
{
"forGetMethod": true,
"parser":
{
"_1":
{
"_list": "ul[@class=list][1].li",
"title": "a",
"url": "@href"
}
},
"params":
{}
},
"lastModifyTime": "2019-03-12 00:59:33",
"responseType": 4,
"searchBook":
{
"forGetMethod": true,
"parser":
{
"_1":
{
"dirURL": "a[0].@href#\\.html @=>/contents.html",
"helpId": "a[0].@href"
},
"author": "a[1]",
"bookName": "a[0]",
"_list": "div[@class=row].li"
},
"params":
{},
"url": "http://www.77wxw.com/novel/search?s1=0&keyword=%@"
},
"name": "88文学"
}
因为77文学已经导入了,先森改成88文学导入,有密码:

限制编辑的书源
最后发现把authorId置空就可以编辑了,"authorId": "f6c7b3b2e24e10542d9fb490b46c4752"改为"authorId": ""。
这个value看着是32位的,像是MD5值,但是先森测试过,把123456的MD5值填进去,然后输入123456还是密码错误,所以这个值到底是什么,先森无从得知了。
问题是,有些authorId相同的书源,一个可以编辑,一个不能编辑,先森是真搞不懂为什么了。

可编辑的书源
爱阅书香的软件结构
爱阅书香书源配置可参考的资源还是太少了,先森希望把已经导入的书源导出为json,但是发现在软件层面实现不了,导出的只有.ibs格式文件,先森就想着软件黑盒中总保存着解压后的文件吧?
本来想在iPhone上直接查看,但是通过爱思助手看不到黑盒内容。
还好先森用的是Mac,找到之前导出的爱阅书香ipa安装包,直接在电脑上安装。
然后先森就研究爱阅书香的资料库文件,开始以为在persistentStore这种sqlite数据库里存着,结果发现数据库中并没有存书源信息,最后发现作者是个狠人啊,在软件内都不解压,直接存ibs文件。
本来想着逆向,但是先森没接触过Mac软件的逆向,踩进去估计又是一个大坑,不知道研究多久才能有结果,还是算了。

爱阅书香数据目录文件结构
其他软件

千阅APP
先森在研究爱阅书香的时候,无意间发现了另一款IOS的看书软件——千阅。
这个软件的好处是可以直接导入阅读APP的书源,类似的IOS软件还有读不舍手、书香之家(更新为全民阅读后不能设置书源)。
其他的软件感觉都不好用,但是这个千阅是先森觉得最接近爱阅书香的了。

书源和过滤
首先是书源,上面已经说了,可以直接从源仓库导入书源,而且导入后可以编辑,可以用来了解json中每个key的含义,但是不太方便的是,不能像爱阅书香一样测试规则。
然后是读书的时候可以设置过滤,可以文本过滤,也可以正则过滤,爱阅书香也可以,但是感觉爱阅书香的比较复杂,以前没有AI的时候写规则让先森头疼的不行。

听书配置
唯一让先森不满意的就是听书了,虽然有先森最喜欢用的在线语音“晓晓”,但是这个TTS是软件内置的,且没法像爱阅书香那样自定义声音源,所以这个在线读书经常卡顿、漏字,先森还拿它没有丝毫办法,要用这个软件听书最好就只用自带声音了。
为了爱阅书香听书稳定,先森是自己部署了TTS的,如果千阅这个软件能自定义TTS,那先森觉得千阅就真的能完全替代爱阅书香了,毕竟大环境没有讨论的软件玩起来实在是太难了。
历史上的今天:
- 2017: Nginx日志切割(2)
转载请注明出处来自https://www.capjsj.cn/ifreetime.html

川公网安备 51011202000104号