在 上次的文章 [1] 中,我大致介绍了如何使用Calibre来管理本子。
使用Calibre管理本子,好处不少,但就是录入的过程太麻烦。如果本子少那还好说,如果本子多的话,一个个录入要录入到什么时候?
对于这个问题,也有相应的解决方案。现在让我来介绍,我是如何批量录入本子的。
前言
批量录入本子的基本步骤与手工录入相似,大致可分为 准备文件、录入基本元数据、录入高级元数据、后续处理 四个基本步骤。
准备文件,如果文件简单使用 Embed Comic Metadata 插件即可搞定,如果文件比较复杂则需要使用相应的脚本。
录入基本元数据,可使用正则式进行匹配。
录入高级元数据,可添加元数据来源插件,然后批量从网络下载。
后续处理,即对下载的元数据进行相应的检查,转换。该步骤部分操作可在录入高级元数据的过程中进行。
为了便于读者理解,本文将使用一个合集文件进行讲解,具体讲述如何进行这四个步䯅。
准备文件
所谓准备文件,即是准备好可以直接添加进Calibre书库的文件。
由于Calibre原生只支持zip格式的文件,可相当一部分压缩包符合要求(压缩包内仅含图片文件),但却是rar格式,对于这种文件,我称这为简单文件,对于这类文件,安装 Embed Comic Metadata 插件后,即可直接添加进Calibre书库。
如果压缩包含有密码,或里面夹杂有其它文件,我称其为复杂文件,对于此类文件可以使用脚本进行处理。
简单文件
由于简单文件,使用插件后即可搞定,所以此节主要讲解如何安装插件。
插件的两种安装方法
方法一
打开 Preferences-Plugins 介面,点击 Get new plugins,在右上角搜索框中 输入 Embed Comic Metadata,选中相应条目,点击 Install。
方法二
打开 Embed Comic Metadata 插件主页 ,下载相应的压缩包。
打开 Preferences-Plugins 介面,点击 Load plugin from file,选择相应文件进行安装。
使用插件
安装完成后,当导入rar文件(7z不可以)时,calibre会自动识别,将其转换为cbr文件。
该文件可使用漫画阅读器阅读。请在文件管理器中,修改cbr文件默认打开方式。
注意
在阅读 录入基本元数据 之前,请不要向Calibre书库中导入书籍。
Calibre 导入书籍的过程,会自动读取相应的元数据,请配置好正则表达式后再向 Calibre 书库中添加书籍。
另外,为了兼容性,建议将cbr格式转换为cbz格式。
选中要转换的书籍,点击主界面 Embed Comic Metadata图标 右侧三角(不是图标本身),点击 Only covert to cbz。[2]
为了节省硬盘空间,可右侧三角中点击 Configure,进入插件设置页面 [3] ,勾选 Delete cbr after conversion。
转换速度和本子大小相关。开始转换后请耐心等待,中途电脑很可能会卡住,这时出去喝杯水,休息一会。
也可在 Preferences-Plugins 介面,双击 Embed Comic Metadata 条目,进入设置选项。
复杂文件
使用上面的插件已经足够应对90%的情況了。
但对于一些特殊的情況(比如说压缩包有密码),还是没有办法,对于这些场景,可以使用本人编写的转换脚本。
你可以下载 转换脚本的模板 ,使用时根据具体情況,进行相应的修改(去除相应行的行注释 ,如有密码修改还需修改相应变量的值) [4] ,然后将修改后的脚本放入压缩包文件存放目录,运行即可。
脚本运行后, origin 目录下存放原压缩文件, converted 目录下存放转换后的压缩文件。
注意
由于本人的系统是Linux,所以本节提供的脚本为bash脚本。
bash脚本并不能在直接在Windows下运行,你可以在Windows系统下安装 Cygwin ,如果你的电脑系统为 Windows 10 还可以使用 Windows Subsystem For Linux 。
你可以参考这个网页。
即调整脚本第3行至第7行,第16行至34行。
如针对本次文件脚本第3行至第7行应调整为:
# rar find . -name "*.rar" -printf "%f\n" > file_list.tmp # 7z # find . -name "*.7z" -printf "%f\n" > file_list.tmp
脚本第16行至34行应调整为:
# rar f_out=$(echo ${f_in} | sed 's/\.rar/\.zip/g') # 7z # f_out=$(echo ${f_in} | sed 's/\.rar/\.zip/g') # rar 无密码 # unrar x "${f_in}" tmp1 # rar 有密码 password="扶她奶茶" unrar x -p${password} "${f_in}" tmp1 # 7z 无密码 # 7z x -otmp1 "${f_in}" # 7z 有密码 # password="password" # 7z x -otmp1 -p${password} "${f_in}"
相应脚本亦存放于 gist
批量打包
除了前面两种情况,你还有可能遇到一个目录下全是解压好的文件,不同本子放在不同文件夹的情况,就像这样。
对于这种情况,你需要将其批量打包成zip文件,我针对这种情況也写了 一个脚本 ,大家可以自行下载使用。
脚本的使用方法与前面的类似,将脚本下载后放入要转换的目录,请一定要确保脚本所在目录下,每一个子文件夹为一个本子。然后运行脚本即可。
录入基本元数据
图书的元数据很多,但最基本的便是题名与作者两项。
由于本子的文件名一般都包括作者、题名,而且有一定的格式,因此在Calibre中进行相关设置,让Calibre在导入书籍时从文件名中自动识出基本出元数据。
经过多次尝试找到了可以从大多数本子文件名中匹配出题名与作者的正则表达式 [5],表达式如下:
(?P<comments>.*?\[(?P<author>(?:(?!汉化|漢化|CE家族|天鵝之戀)[^\[\]])*)\](?:\s*(?:\[[^\(\)]+\]|\([^\[\]\(\)]+\))\s*)*(?P<title>[^\[\]\(\)]+).*)
使用方法,打开Calbire的 Preferences-Adding books 界面,在 Regular expression 栏中填入下方的正则表达式。
(?P<comments>.*?\[(?P<author>(?:(?!汉化|漢化|CE家族|天鵝之戀)[^\[\]])*)\](?:\s*(?:\[[^\(\)]+\]|\([^\[\]\(\)]+\))\s*)*(?P<title>[^\[\]\(\)]+).*)
保存设置后,可以开始向Calibre书库中添加书籍,Calibre会自动识别出题名与作者。
由于本人能力有限,所写的正则表达式可能有一些繁杂,对于一些场景也不能很好的适用。如果有人写出了更好的表达式,也恳请在下方留言中分享给大家。
下面是一些参考资料与工具,如果你想动手写正则表达式的话,可能会对你有所帮助。
https://manual.calibre-ebook.com/regexp.html
https://docs.python.org/2/library/re.html
https://jex.im/regulex/
https://pythex.org/
录入高级元数据
基本元数据的录入通过Calibre自带的正则功能即可解决。
但除了题名、作者之外,图书还有许多的元数据,例如说出版信息、ISBN号、Tag、简介等。对于这些元数据的录入,Calibre提供从网络下载元数据的功能。
从网络下载元数据的方法为,点击 Edit metadata ,点击 Download metadata 按扭,然后即可开始下载元数据。
不出所料,没有找到什么元数据。点击右侧小的按扭进入下载元数据的设置界面。
在设置界面中,你可以选择数据源,可以选择要下载的元数据类型,还可以创建tag的转换规则 [6] 。
但是很可惜,Calibre自带的数据源都不怎么适合于本子(对于电子书来说,还不错),使用搜索引擎也没在网上找到适合于本子的数据源插件(都没人用Calibre管理本子吗?)。
没有办法,只能自已动手,丰衣足食,自己写一个针对本子的数据源插件了。
考虑到,网上大多数的本子都可以在 E-hentai 上找到,所以从E-hentai上下载本子的元数据是一个不错的选择。
由于E-hentai上,题名与作者并没有分开列出,也没有出版信息,所以该插件的主要任务是下载本子相应的tag信息。
另外,对于本子来说,什么出版社,哪一年出版的大家好像并不是很关注。大家最关心的还是tag,所以我这个插件一般情況下已经足够用了。
创建tag的转换规则与后续处理有关,可以参见 后续处理
安装插件
首先你需要安装插件,请到 这个页面下载 最新版本的插件 [7],下载好了参见插件的两种安装方法的方法二安装即可。
github有时候会抽风,release中的文件下载不了。所以在Calibre的官方插件论坛上也传了一份,留作备用吧。
使用插件
点击 Edit metadata 按扭,点击 Download metadata旁的小按扭, 只保留 E-hentai Galleries,再在右上角只保留Tags 选项。
保存设置,点击 Download metadata,开始下载元数据,下载速度与你的网络有关,选择相应项目,完成下载。
从 ExHentai 上搜索数据
默认情況下,插件只从 E-hentai 上搜索数据,你可以让插件从 ExHentai 上搜索数据。
在上面第二个图的界面选中 E-hentai Galleries 后,点击 Configure selected source,勾选 Use Exhentai,同时在下方输入你在 ExHentai 上的Cookies。
Cookies 您可以在浏览器的开发页面找到。在设置界面中输入打码的两项即可。
批量下载元数据
选中你所要下载的书籍,点击 Download metadata旁的小三角, 点击 Download metadata and covers,点击 Download only metadata,当然最好先配置一下 [8] 。
下载过程中,你可点击右下角查看进度。任务完成后会有相应的提示。
批量下载的设置和单独下载是分开的,敬请注意。
后续处理
创建转换规则有点烦,我就不弄了,如果你们有谁创建好了,记的导出来和大家分享一下。
答读者问
Calibre 自带的阅读器打开本子太慢了。
Calibre 自带的阅读器,读读epub格式的速度还可以,但对于本子来说,速度就有些太慢了,毕竟Calibre的主要功能是管理而不是阅读。
对于这个问题,我的解决方法是更换阅读器,使用专用的漫画阅读器来阅读本子,更换的方法可以参见准备文件一节使用插件部分,修改cbz文件的默认打开方式即可。
对于阅读器,Linux系统下你可以使用 MComix 或者 zathura,Windows系统下你可以选择 ComicRack。
更换阅读器之后,相信你可以很快的打开本子了。
我本子都存移动硬盘了,怎么破?
对于这个问题,有两种解决办法。
你可以在电脑上安装Calibre,然后在移动硬盘上创建一个书库。这样你便有两个书库,电脑硬盘上一个,移动硬盘上一个(移动硬盘的书库用于存本子)。
然后平时不看本子时,使用电脑硬盘上的书库,看本子时,插入移动硬盘,将书库切换至移动硬盘上的书库。你可以通过主菜单上的按扭,很方便的完成这个操作。
如何切换,可以看我右侧的演示。
不过我更推荐第二种方法,直接在移动硬盘上安装一个Calibre便携版 ,然后启动移动硬盘上的Calibre,在移动硬盘上创建一个本子的书库。
这种方法免去了频繁的切换书库(虽然不麻烦)。另外,移动硬盘上安装了一个便携版Calibre,你可以很方便的在不同电脑上打开你的本子库,无须重新安装Calibre。
我的本子都在nas里了,怎么办?
Calibre是一个跨平台软件,Linux、Windows、masOS均支持。
你可以在NAS上安装Calibre,使用 calibre-server
命令在NAS上创建一个内容服务器,用于与电脑、手机、Pad分享电子书。
如果你需要向书库中添加书籍,使用 NFS 将书库目录映射至本地,再在本地安装一个Calibre,用于管理书库。
注意:请保证只有一个程序正在修改书库(可通过文件权限设定,达到此目的)。否则可能会造成文件损坏。
PS1: 之前在网上找了一个在NAS上使用的 Calibre Docker。但经读者测试,这个Docker文体好像有一些问题,无法显示出中文字符。修改一下Dockerfile,把文泉驿的文体装上,可能会有用。感兴趣的可以试一试。
PS2: Calibre自带的内容服务器还是有一些问题,比如说有些epub文件打不开,有些pdf文件背景会变成奇怪的黑色,大一些的cbz文件在线阅读时会出错(手机上尤为明显)。对于这些问题,比较靠谱的解决方法是,将文件下载至手机,然后使用第三方软件打开,例如对于本子,下载到手机,然后使用 ComicRack 阅读。
结语
到这里全文便结束了。
今天晚上比较清闲,把答读者问补上了。
解决出版社、出版时间、ISBN号问题的插件也列入到了计划之中,等哪天有时间就开始动手吧。
当然自己动手,丰衣足食,如果有谁有空又有能力可以自己写一个插件,如果可以开源、共享出来,也算是对绅士界的帮助吧。
最后,本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。
更新历史
2017年10月20日: 增加了答读者问部分。