fffonion / xeHentai

Doujinshi downloader 绅士漫画下载
https://yooooo.us/2013/xehentai
GNU General Public License v3.0
724 stars 86 forks source link

下载文件名问题和zip描述信息改动等(掺入一些灵魂的 #54

Open dynilath opened 5 years ago

dynilath commented 5 years ago

和之前的那个pr差不多,主要是修了些问题。

1,新的文件名控制。

在exhentai浏览画廊单独一页时,比较大的png都会变成jpg,比较小的png会保持png。具体是否会压缩的分界点和图片源的链接带宽有关系。这也即是说原本是png的画廊下载的文件实际是png还是jpg完全无法简单预计。 除此之外,gif文件也会被下载成jpg。 这里采用了另一种办法:在ehentai的画廊页面里,每一页预览的title里面包含了原本的文件名。单独一页中的顶部和底部显示的文件名是压缩转码后的文件名。我使用这些文件名取代了原本的rename_map机制。 具体工作方式如下:

2,zip描述信息改动

把h.json里面的一些信息搬到了zip里,包括gjname、gnname、tags、total、title、rename_ori、download_ori、url、fid_fname_map。最后这个task.fid_fname_map是上述的文件名控制用到的,用于描述第几页文件名为何。 这使得zip文件能够自我描述比较完整的画廊信息,在TASK_STATE_SCAN_PAGE阶段中,这些信息也用于检测zip文件是否需要重新下载等等。
这也使得载入其他方式转移来的文件成为可能,让xehentai有可能成为一个下载画廊管理软件。

3,scan_downloaded和prescan_downloaded

由于上述文件名控制原理,到TASK_STATE_SCAN_IMG的时候才能知道实际的文件名。

prescan_downloaded负责扫描zip文件的描述信息。通过以下四个方面决定如何操作该zip:

scan_downloaded主要负责下了一半的东西暂停继续。将下载目录中的文件和fid_2_file_size_map中的数据对比,如果通过对比则不会加入page_q。

4,一些小问题

画廊名称结尾有多个.时会被win系统全部吃掉。更改了一下filename_filter。 由于重新启动时,图片源的ip会发生变化,画廊会更新(尤其是ongoing的画廊),tag也会更新(尤其是早前下载的新画廊)。所以重新载入TASK_STATE_DOWNLOAD状态的任务时,改为退回到TASK_STATE_GET_META状态。

fffonion commented 5 years ago

那么♂多,待我看看