回应模式 - No.62048096


No.62048096 - 技术宅


无标题无名氏No.62048096 只看PO

2024-04-16(二)05:45:25 ID:83YvGLK 回应

有人知道Tachiyomi的记录导出为json的方法吗?备份文件是 .tachibk,尝试直接更改扩展名为 .json,乱码;直接更改为 .zip,居然能看到部分中文,但是打开会卡住只能强行退出浏览app

Tips无名氏No.9999999

2099-01-01 00:00:01 ID: Tips

(;´Д`)医生!你说话啊!

无标题无名氏No.62048212

2024-04-16(二)07:03:25 ID: 83YvGLK (PO主)

>>No.62048096
话说 .zip 居然能作为文件打开而且漫画名是正常的也只有漫画名是正常的其它全部乱码……

这样特殊的扩展名文件是怎么得来的?以前用过一段时间 全是漫画 app,备份文件扩展名也是专属的,是可以自己定义扩展名吗?然后打卡乱码是因为加密了吗?

无标题无名氏No.62048536

2024-04-16(二)08:18:22 ID: CzzTJVo

没加密,用的kotlinx serialization,格式是protobuf然后套了一层gzip,你知道上面的名词具体是什么的话转成json应该不成问题

代码在这里
https://github.com/mihonapp/mihon/blob/main/app%2Fsrc%2Fmain%2Fjava%2Feu%2Fkanade%2Ftachiyomi%2Fdata%2Fbackup%2Fcreate%2FBackupCreator.kt#L87-L99

无标题无名氏No.62048626

2024-04-16(二)08:30:58 ID: 83YvGLK (PO主)

>>No.62048536
虽然有听说 Tachiyomi 作者转去做 mihon 了,以为是从头开始,没想到直接用 Tachiyomi 的现成的包啊,,
你提到的名词一个都不懂,对数据处理相关的经验只有 json, csv, mangodb, mysql 不过好歹有头绪了,谢谢!

无标题无名氏No.62048643

2024-04-16(二)08:32:59 ID: 83YvGLK (PO主)

>>No.62048626
不是处理,是存储*

无标题无名氏No.62048803

2024-04-16(二)08:54:47 ID: CzzTJVo

>>No.62048626
并不是作者转去做mihon了,而是tachiyomi的原作者(仓库拥有者)不再维护,mihon是tachiyomi的其中一个活跃开发者重新搞的一个分支版本,当前代码基本上是一样的

无标题无名氏No.62060178

2024-04-17(三)01:11:17 ID: 83YvGLK (PO主)

>>No.62048536
去了解了一下,但是还是完全没有头绪,不懂kotlin,问chatgpt是否可以直接把.tachibk解压缩gzip从protobuf转为json,但是遇到了很多错误,不知怎么解决……

无标题无名氏No.62060192

2024-04-17(三)01:13:44 ID: 83YvGLK (PO主)

>>No.62048803
去搜了缘由没想到是因为版权,唉!

无标题无名氏No.62060237

2024-04-17(三)01:22:28 ID: 83YvGLK (PO主)

>>No.62060178
目前进展:mac m1试过用 gradle for java创建项目,安装了kotlin 和 gradle后用gradle创建了一个 kotlin项目,看官方文档学会了进行serializable和 json之间的转换
目前疑问:文件读取只会用java,是用java的io.file读入.tachibk然后操作?但是怎么解码?是要用Tachiyomi里定义的decode类吗?是不是要在我用gradle创建的kotlin项目里导入完整的Tachiyomi项目然后引用?可是看到里面用了很多安卓相关的库,我不需要安卓,就只想做到那种,终端一行命令加上文件名然后就输出json文件,研究了半天源码,看不懂,卡在这了……

无标题无名氏No.62076764

2024-04-18(四)14:10:17 ID: 4oFnDNS

>>No.62048536
这个肥哥不是说了嘛,你先解压缩这个gzip文件(Java有库可以直接读)得到里面的protobuf 二进制文件,然后去找Protobuf 的Java库,用它的reflection 来读里面的各个field就可以了。Protobuf 一般要原来的schema去transpile成对应的Java 代码才能读的,但是你这种情况要不就去app源码里面找Protobuf schema ,要不就直接用reflection。无论哪种方法,Protobuf 库有直接序列化成json的方法的,直接用就行