布卡漫画离线文件转换
感谢贴吧hucsmn大佬提供的.buka文件格式说明
用Python写了几个类,实现了.buka文件、章节文件夹、chaporder.dat解析
类与方法的相关说明
为使用统一,所有信息,包括编号,统一是str类型,不是num
buka_convert.py 当作一个示例,实现了将一个漫画文件夹转换
BukaFile 类用于解析和拆解.buka文件
BupFloder 类用于解析章节文件夹中的文件
以上两个类都直接将文件或路径作为参数构造即可
以上类都有以下方法
export_buka_to_Dict:解压文件到字典file_Dict{文件名:数据}(字典是成员变量,无返回值)
export_buka_to_File:解压文件到指定目录
convert_to_WebP:拆解出WebP文件
BukaFile 类有getInfo_buka方法,用于解析.buka文件的基本信息到字典bukaInfo
BukaJSONReader 类用于解析chaporder.dat文件
漫画相关信息存入各成员变量
chap_Dict为章节对照表,cid为键,章节信息的字典为值 {cid:{title,idx,type}}
由于布卡临时工的疏忽(大概),有些title为空,利用type和idx进行了补全
.buka文件格式说明
字符串以UTF-8编码,以\0结尾;数字是unsigned的4字节整数,小端存储
缓存到的文件夹中,所有文件均没有去除64字节的头
- 魔数 4字节字符串:buka
- 未知作用的数字1 4字节整数
- 未知作用的数字1 4字节整数
- 漫画编号 4字节整数
- 章节编号 4字节整数
- 漫画名称 字符串
- 文件信息表
- 文件信息表大小(含自身4字节) 4字节整数
- 文件信息(根据文件信息表多次读取)
- 偏移量
- 文件大小
- 文件名
- 文件数据(根据信息表多次读取)
- 数据头 64字节
- 元数据(图片为WebP,dat的作用没搞懂)