云书库calibre-web搭建(1)

前记:这个春节过得着实有点闹心,马上三月份了依然出不了门。闲的发慌之际,又开始奇(ge)思(zhong)妙(zhe)想(teng)。蜗居三大宝,看书听歌刷剧,首先拿看书下手,于是发现了calibre-web,一个在线版的书库管理工具。📚

一开始的想法是寻找一个方便手机浏览的云书架,特别是kindle电子书。calibre-web显然很合适,使用著名书库软件calibre的数据库和结构,界面也实现了其大部分本地功能。代码托管在github,commit和issue相当积极,Collaborator的谨慎作风也保证了各个终端(包括kindle直接浏览)的良好兼容性。于是,折腾之路正式开始。

calabre-web

起步安装

源码整个pull到ECS上,安装必须的依赖库,然后

1
2
3
4
## 可以更换pypi为国内源提高安装速度
## --system参数防止报错
pip3 install --system --target vendor -r requirements.txt
pm2 start cps.py --interpreter=python3 -n calibre

绑定域名,浏览器测试,到这里一切顺利,接下来就是上传数据库。有网友说cw的服务运行不稳定,所以上pm2保平安🙏

配置数据库

根据网上资料,直接web端设定新路径,会自动创建一个空数据库。然鹅并没有成功,即使手动创建了文件夹。所以用calibre生成了一个空书库,传到服务端。我将db放在了仓库根目录,方便管理,同时为了避免污染git目录,命名为venv。这里有个小坑,cw的nightly更新会删除新建的文件夹,venv是其中一个特例。

database

虽然可以从web端上传书,我还是建议在本地编辑好之后再同步到server。理由是本地处理更快,出现问题能迅速回滚,特别是封面在web端非常buggy。另外,网页上如果修改书名或作者一定概率会创建一个新的路径,造成重复,而本地端会删除旧目录。所以建议本地确定好书名和作者后再同步到remote

增强meta

首次进到详情页,首先想到的是增加页码和字数显示,这里通过在本地创建自定义栏实现。calibre安装count pages插件,如图在标题栏右键新增两个自定义栏目,然后在count pages设置中选中,即可开始计算。

count pages

功能设置

登录admin账号后就能进行设置管理,面板属于舒适型,属基本一看就会。我最喜欢的一点是多用户和注册(这才是云服务的精髓嘛),每个用户都能单独设置细分功能的权限,包括匿名用户。在线浏览功能比较基础,追求简单纯粹的话也够用,另外,书签是可以同步到登录账户的。注册账户可以设置域名白名单,也可以开启邮箱验证码,前提是设置好了发送服务器,也可以使用github/google的oauth登录,不过需要额外安装optional-requirements里的python库。

推送kindle功能

这里需要设置用来做邮件发送服务的email,国内还是推荐网易系的,要注意的是,不能用邮箱密码,而是136/126给的授权码。

sendtokindle

上传、获取、编辑书籍信息

上传功能默认关闭,然而并不推荐直接上传,理由同上。如果上传出现错误,很可能要修改代理(如nginx)的默认大小限制。建议优先使用epub格式,可以获得最佳web体验以及最小的文件体积。在编辑标签页面最下有获取元数据功能,可以从douban和google搜索元数据。原本以为,豆瓣封锁API之后,这种检索应该是利用了某种黑科技,之后证明,不过是热心githuber贡献了一枚key(且用且珍惜)。

这个功能建议慎用,首先,封面获取失败几率高,而且不能自由选择更新哪些项目,所以这里是随后DIY的重点区域之一。在编辑过程中有一个标签字段,对应导航栏里的分类,既可以用来归类,也可以通过标签控制访问权限。

文件类型转换

web版能否取代客户端的一个重要点就是文件转换,无论是在线阅读还是kindle推送,这个都是核心功能。这里需要借助本地版calibre转换插件,首先到官网根据说明安装linux版本calibre到服务器。如果是国内网络,脚本在下载安装包(~100M)时速度大概率相当感人,我的方案是,本地下载好之后上传到缓存文件夹/tmp/calibre-installer-cache/

安装好之后在web后台补充转换工具路径,默认是/opt/calibre/ebook-convert,点开一本书的编辑页,测试转换,好了,又一个坑🤪 ,至少我的ubuntu 18.04绕不过这个报错

1
Calibre convert failed with error: ImportError: libGL.so

一番搜索,乖乖装上依赖(几百M磁盘占用。。)

1
sudo apt-get install mesa-utils

如果出现类似问题可以参考➡️issue

OPDS(Open Publication Distribution System)

全称开放式出版发布系统,可以理解为带目录结构的rss,主流阅读器都是支持的,资深电子书迷应该不陌生。cw也做了实现,当然,也有坑。使用静读天下(Moon+)测试,无论是calibre IP的方式还是域名添加书库,都只有在匿名OPDS下可以正常显示封面和下载电子书文件(Guest账户设置允许下载);登录模式可以下载但封面无法显示。问题似乎出现在阅读器没有带鉴权请求封面。不过,这属于阅读器的BUG。

然后,admin账户登录OPDS有BUG(我这里表现是,列表中点击图书会用内置浏览器打开封面图,而不是显示详情页)建议使用OPDS之前创建一个普通账户,无论有没有开启匿名访问。

caliblur深色主题

颜值吊打默认主题,然而也引入了:beetle:,特别是设置页面。我发现的几个是:

  1. 用户管理页确定按钮错位
  2. 添加标签过滤的按钮点击无效
  3. 书籍详情页标签字段没对齐(按照英文hard padding)

这个主题并没有使用另一套模板,而是通过javascript在浏览器端重排元素,并覆盖新的css实现。所以,后续修改起来能将要改动的文件数降到最低。

同类网站

查资料过程中又发现了两个类似的网站,这里做一个记录:

站点特色
夜读客基于my-calibre-webserver实现,可在线读,可注册,有评论功能
IT熊猫有相似推荐,页面干净清爽,通过度盘下载,分类功能完善

calibre-web还有很多隐藏功能,比如支持有声格式,完整的漫画体验,兼容KOBO阅读器。。。只能说官网wiki写的太简单,或者来不及更新。

总之,这是一个非常合格的calibre网页端工具,定位是个人书库管理,和有限的共享功能,如果能录入以html web page为载体的文档(如gitbook),也可以变成一个非零散知识管理工具。

下一篇即将更新漫漫折腾之路(这才是正题啊有木有)