BookReader icon indicating copy to clipboard operation
BookReader copied to clipboard

请问能增加一个导出缓存为txt的功能吗?

Open wby238 opened this issue 7 years ago • 15 comments

原本是想自己写一个的,但目前只学了C,还没有学Java…… 追书神器的某些源提供的章节内容很好,我想缓存了之后导出为txt再用kindle看……

wby238 avatar Jan 22 '17 13:01 wby238

缓存本身就是txt形式。在SD根目录/Android/data/com.justwayward...下

smuyyh avatar Jan 22 '17 21:01 smuyyh

额,我的意思是将所有的章节放在同一个txt然后导出…… 不然的话缓存的文件本身没有章节标题,这样即使合并了估计效果也不是很好 发现了一个bug…… 在缓存过程中删除小说的话,缓存是不会停下来的,估计后面的缓存都没有被删除…… 还有,虽然不能换源,但能不能在加入书架前让人自己选择用哪个源? 不然默认的源有时候效果不好……

wby238 avatar Jan 23 '17 05:01 wby238

顺便发现另外一个bug; 如果在安装时不允许应用获取设备信息(IMEI等)的话,安装完之后打开会出现没有网络的提示,也的确连不了网,但事实上我在用着wifi,其他应用也是能正常联网的。手机安卓6.0

wby238 avatar Jan 23 '17 05:01 wby238

刚刚看了看源码,发现ChapterRead.java里面将API获取的JSON里的title当作了标题,然而以前抓包的时候遇到过返回的JSON的title为.,body为正常的章节内容的情况…… 这样的情况下会不会出现标题显示为“.”(小数点)的情况?

wby238 avatar Jan 23 '17 05:01 wby238

刚刚发现你获取的源是混合的…… 最后用fiddler来断点再换成自己当时抓的源来解决了…… 顺便推荐176的源,几乎跟正版源一样

wby238 avatar Jan 23 '17 09:01 wby238

  1. 所有章节放在一个里是可以做,合并一下所有章节就可以。就是怕中间有些缺漏或不完整,这样也会造成合并后的不完整。
  2. 目前缓存的确不会停下来,我后面抽空加上
  3. IMEI权限如果没有开,就无法获取设备id,这样也无法调用接口,提示网络不正常的可能是统一处理请求失败的
  4. 关于换源,之前在抓接口的时候,没有准确区分这些源的关系及对应接口,研究了好一阵子,没怎么明白,所以换源这块没做。你这边好像看的比较透彻了,方便这块的接口整理一下发我麽?我看假期能不能抽出时间来把这些功能补上,谢谢

smuyyh avatar Jan 24 '17 02:01 smuyyh

另外,title为小数点,那标题应该就是小数点了。

smuyyh avatar Jan 24 '17 02:01 smuyyh

OK,以下为对应的接口: 1.有两个获取源的接口: http://api.zhuishushenqi.com/atoc?view=summary&book=http://api.zhuishushenqi.com/btoc?view=summary&book=,其中atoc是可以获取盗版源(详细来说的话追书神器的书籍分为两类,一类是可换源的,一类是不可换源的,第一类会获取到正版源+盗版源,第二类只能获取盗版源,但这两类在btoc都只能获取正版源,提供两个例子:http://api.zhuishushenqi.com/atoc?view=summary&book=510f6d8b59762e945300002fhttp://api.zhuishushenqi.com/atoc?view=summary&book=5667c9a44aa8cc2b1d721f5a对应一二类)的,btoc是只能获取正版源的,book=后面的参数跟你的mix-atoc的参数一样,这里暂且称为bookID。

2.从上面的接口获取到源的信息后,返回的JSON会提供每个源的_id,这个暂时称为sourceID,同一本书下下不同源的sourceID不同。

3.获取目录的接口为http://api.zhuishushenqi.com/btoc/5667cb9bfe53a1b045360d4f?view=chapters,中间的参数为sourceID,这个返回的JSON与mix-atoc返回的基本相同,但少了ChapterCount,但在1.中获取的JSON中给出了每个源的ChapterCount。

4.追书对换源的处理是更换sourceID,例如A书下有两个源BC,在用B源时读取/book/A/B/下的缓存,用C源时读取/book/A/C/下的缓存,换源的话或许可以这样实现。

PS:这是同一本书的mix-atoc和某个源的btoc获取的JSON的例子,差异很小: http://api.zhuishushenqi.com/mix-atoc/530db0cdb082391e770284e9 http://api.zhuishushenqi.com/btoc/570771ba326011945ee87167?view=chapters

IMEI权限禁了的话其他程序是可以联网的,只有这个不可以。

title为小数点的是某些源才会出现的情况,下面是正版源与某盗版源的对比: http://chapter2.zhuishushenqi.com/chapter/http%3a%2f%2fchuangshi.qq.com%2fbk%2fxh%2fAGoEN11pVjQAPlRi-r-1.html http://chapter2.zhuishushenqi.com/chapter/http%3a%2f%2fbook.my716.com%2fgetBooks.aspx%3fmethod%3dcontent%26bookId%3d72281%26chapterFile%3dU_281533_201607020153163891_3116_1.txt 这样的话标题能否用3.中给出的标题来代替而不是用上面两个返回的title?

wby238 avatar Jan 24 '17 06:01 wby238

对了,这是以前看到的关于追书接口的一篇文章,可以参考下: http://www.jianshu.com/p/220f5b444e62

wby238 avatar Jan 24 '17 06:01 wby238

好的谢谢,我晚点再来研究一下🤝

smuyyh avatar Jan 24 '17 08:01 smuyyh

刚刚无意中发现获取目录的接口有3个…… 跟上面提到的3.一样,三个借口分别是atoc,btoc,ctoc,其中atoc比btoc多了ChapterCount,其他一样,而ctoc的用途不明,章节顺序与atoc和btoc有变动…… 或许atoc是mix-atoc的最佳替代。

wby238 avatar Jan 24 '17 10:01 wby238

mix-atoc还有两个类似的接口:mix-btoc和mix-ctoc…… 后两个没看过多少,我都不知道它开了这么多接口来干嘛了……

wby238 avatar Jan 24 '17 10:01 wby238

  1. 前面提到的IMEI权限禁止了不能联网,对于本程序来说是正常的。因为追书请求的时候有一部分须上传deviceid,所以默认请求接口有增加了获取deviceid。所以这个如果获取失败,可能会导致请求失败。

  2. atoc 貌似没办法完全代替mix-atoc,比如对于http://api.zhuishushenqi.com/mix-atoc/57b90ba7e41357c972a3b1ce?view=chapters 余罪这本书来说,mix-toc像是默认源,他有另一个源,http://api.zhuishushenqi.com/mix-atoc/585843ca574b63df6755a0fd?view=chapters 中间那个就是id,然而用mix-atoc并无法访问,而需要用atoc才能获取到列表。 然后对于http://api.zhuishushenqi.com/mix-atoc/50bff3ec209793513100001c?view=chapters这本书来说,如果用atoc,也获取不到列表。所以mix-atoc和atoc的区别还不确定是什么。mix应该是混合的意思,具体没搞懂

  3. 另外就是mix-atoc和atoc的结构不一样,换源貌似还不大好处理。

smuyyh avatar Jan 30 '17 07:01 smuyyh

抱歉,我没说明清楚,我说的atoc代替mix-atoc的是获取章节列表的功能。

首先,对于mix-atoc来说,它接受的参数是bookID,在此我们将bookID限定为通过搜索或者其他获取分类得到的; 然后,用atoc获取bookID对应的各个sourceID,再用atoc/btoc/ctoc(这三个都可以,为方便用atoc)来获取sourceID对应的章节列表。

简单来说,mix-atoc的参数只能是bookID,而atoc则有两种功能,一是获取bookID对应的sourceID,一是获取sourceID对应的章节列表。

举个例子: 我们通过搜索http://api.zhuishushenqi.com/book/fuzzy-search?query=%E7%AC%AC%E5%8D%81%E4%BD%BF%E5%BE%92&start=0&limit=100& 得到了“第十使徒”这本书的bookID为530db0cdb082391e770284e9,然后用atoc来获取bookID对应的sourceID, http://api.zhuishushenqi.com/atoc?view=summary&book=530db0cdb082391e770284e9 ,我们选择my716的源为对应的sourceID(sourceID有多个)=570771ba326011945ee87167,然后再用atoc/btoc/ctoc来获取sourceID对应的章节列表,http://api.zhuishushenqi.com/atoc/570771ba326011945ee87167?view=chapters ,而上面的链接得到的才是跟mix-atoc直接获取的类似的。其中最大的不同可能是chaptercount,这个建议用atoc?view=summary这个得到的,还有就是章节标题建议用atoc/sourceID?view=chapters这个得到的。

https://github.com/qq573011406/KindleHelper 这位写的代码可以参考一下,这个是用追书的api下载小说的,这个是实现了换源的。它对mix-atoc获取的源和atoc获取的源分开来处理。

wby238 avatar Jan 31 '17 11:01 wby238

http://api.zhuishushenqi.com/mix-atoc/50bff3ec209793513100001c?view=chapters 这个的话用atoc可以获取列表啊

另外,对于所有返回的JSON,_id代表的是sourceID,book代表的是bookID.

mix-atoc的意思是混合源,大概可认为是正版网站的公众章节+最快更新的盗版网站章节的混合。

追书的mix-atoc就是自动选择,接上次的解释,mix源的保存路径是\book\(bookID)\MIX_TOC_ID(bookID) 其他源的保存路径是\book\(bookID)\(sourceID) 换源的话可以考虑判断当前是否混合源,是的话读取\book\(bookID)\MIX_TOC_ID(bookID),不是的话读取\book\(bookID)\(sourceID)

wby238 avatar Feb 01 '17 09:02 wby238