pica的漫画下载到本地后,文件名全是混乱的,和顺序对不上(不放图了,懂得都懂)。本想一个一个对照着改文件名,但是这个流程太麻烦太繁琐了,比较浪费时间。本文讲解了pica漫画文件自动重命名思路和方法,并提供了一个用java写的自动化执行软件。(如果不想看解说可以直接跳到软件用法那一段)
- 警告
根据个人经验,pica的应用数据库会定时清理,有时会出现数据库与本地文件不能完全对应的情况(如果应用已经使用了较长时间),而且pica的断点续传功能好像有问题,在下载页面过多(150到200页以上)的漫画时可能会意外中断,造成文件丢失,可能和用户的网络有关吧,运气不好的时候可能要多次下载才能获取完整的漫画。比较保险的方式是:在下载本地文件和提取数据库之前先做好备份(比如加个收藏夹什么的),然后在设置界面清空缓存(这会清除你所有的下载记录!!),然后重新登录。 - 思路和逻辑
pica的文件加密从直观上找不到什么规律,根据我的经验应该是某种UUID,而UUID就比较随机了,几乎不可能和文件本身有什么关联,存储UUID和文件的映射最好还是用数据库,所以我们可以从数据库入手。
在开始文件解密前首先要了解一些工具的安装和使用。
1.JavaJRE(Java Runtime Environment) java运行环境或者JDK(Java Development Kit)java开发包,用于运行编译好的jar文件,推荐版本6以上。
2.adbADB(Android Debug Bridge)是安卓设备常用的调试工具,通常可以在android-studio安装路径下找到,也可以用于调试安卓模拟器(我只测试过雷神模拟器),但有的模拟器不支持官方的adb,比如夜神模拟器需要用模拟器自带的修改版本。在调试模拟器前最好在设置里把root打开。
Adb连接设备的方式分为有线连接和无线连接,大部分安卓设备处于安全考虑无线连接前需要线连一次。可以在安卓开发者选项中打开adb调试,通过usb线将安卓设备与电脑连接,借助adb工具就可以调试应用或设备了。
可以下载Android-sdk安装包,使用sdk中的adb,或者下载单独的adb。不过低版本的adb可能不能检索到内核版本较高的设备。这里提供一个安卓开发工具的网站,下载其中的sdk-platform-Tools。
https://www.androiddevtools.cn/
也可以下载独立版本
platform-tools_r31.0.3-windows (1).zip 提取码:87nb
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。
- Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。
- 数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。
- Android 提供了 SQLiteOpenHelper 创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。
SQLite工具
需要下载一个安卓端的,推荐Sqlite editor。电脑端推荐Sqlite studio。这两款工具都很容易搜到,只是用于查看数据,并不特定。当然也可以下载sqlite3命令行工具,可以更直观地查看表格代码。下图是用sqlite studio打开sqlite数据库。
首先在安卓端安装Sqlite editor,选择Pica,查看数据库路径,保存该路径,后面会用到。
打开该数据库,可以对其进行一个阅览,该数据库有四张表格:DB_COMIC_DETAIL_OBJECT,DB_COMIC_VIEW_RECORD_OBJECT,DOWNLOAD_COMIC_EPISODE_OBJECT,DOWNLOAD_COMIC_PAGE_OBJECT,打开看看就知道表格里面存的是什么,这里就放第四张表的图了,仔细看一下,数据和对应关系是不是一目了然了?
小伙伴们看到这儿应该明白了,COMIC_PAGE_ID就是加密后的文件名,MEDIA_ORIGINAL_NAME就是加密前的文件名。
接下来,我们需要把数据库文件拷贝到电脑里,这里需要用到adb。获取应用数据库文件的方法有很多,adb适用于模拟器或手机线连电脑直接调试的。
需要用到一下基本命令:
adb devices 查看设备
adb shell 终端命令行模式
adb pull 文件或文件夹位置 E:\文件夹名 将设备中的文件保存到本地
cd xxx/xxx 进入文件目录
ls 显示目录下文件
exit 退出终端
比如cd data/data/com.picacomic.fregata/databases,意思是移动到应用数据库文件夹。
这一步是为了测试adb是否能找到设备,能不能找到数据库文件。如果这一步正常实现,后面移动文件就无从谈起了。
无法找到设备,可能是因为你没有在开发者选项打开adb调试。不能找到应用数据库可能是因为设备没有root。
接下来用adb移动数据库文件。首先需要在任意分区新建一个文件夹,比如在E盘建一个叫PICA_SQL的文件夹。执行pull移动文件,如下图所示。
执行这一步后,应该可以在新建的文件夹中看到数据库文件了。可以写一个批处理文件用于快速拉取,比如保存为copyDB.bat。以后只要运行copyDB.bat就可以了。
可以用Sqlite Studio打开数据库文件并阅览,对照着数据库一张一张图片重命名,还是过于麻烦。为了节省时间解放双手,顺手写了一个自动解密并重命名文件的工具。
该工具主要用于读取数据库并自动对漫画加密的文件重命名,纯命令行没有UI界面(也许以后会提供),暂时就叫picaEnc吧,有以下辅助功能:
- 指定需要解密的文件夹
- 重命名文件夹
- 生成pdf(有bug)
使用方法:
将picaEnc.jar和数据库文件com_picacomic_fregata.db移动到漫画文件目录。
开启命令行,执行
java -jar picaEnc.jar com_picacomic_fregata.db -d 文件夹目录 -r
java -jar picaEnc.jar com_picacomic_fregata.db -d 文件夹目录 -r
//-d 指定文件夹,文件夹必须是数据表中存在的COMIC_ID
//-r 重命名
//-f 快速模式,不输出进度条
//-pdf 生成一个pdf
一个测试用例
目前应用只支持一次解密一个文件夹,批量解密功能正在开发,如果您在使用过程中遇到问题或者有好的建议,请私信我或留言。
已经提供下载链接,如有兴趣可自行下载。
picaEnc.jar 提取码: gp9q.
摘自百度百科 ↩︎
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)