Featured image of post 基于OPDS的电子书解决方案

基于OPDS的电子书解决方案

曾经使用过很多款电子书软件,很早期的掌阅,后面Kindle,多看,微信读书等,写过不少笔记,也买过一些书。因为一些原因,书不全可能是最大因素,并且自己的一些书不容易导入和管理,于是这些年就很少再用。前阵子朋友推荐Calibre-web,我试了一下还不错,再基于自己的喜好在众多APP中评测了一番,大抵构造了一个不错的阅读体验。

前言

作为技术人,总是或多或少收藏了一些电子书的,它们静静的躺在硬盘中,你久久不看它,它也一声不吭。你不甘心只做个收藏家,长叹息一声,着手把他们整理起来,分门别类各为文件夹,云原生、算法、图形学、各大编程语言等等。你想着搞一个个人书库,任何时候你想看时,都能快速找到某本书,这可以吗?没问题。

需求分析

我对电子书管理软件的诉求

几个基本功能是需要的:

  • 简单的管理界面
  • 方便上传和批量导入书
  • 支持其它APP从中获得电子书
  • 支持的电子书格式可多一些

加分项如能在线阅读就更好,这样下载之前可以先大致看一下。那怎样的电子书管理软件可以满足呢?这一切Calibre-web都能够满足,它的桌面版本甚至还能帮你做不同电子书格式转换等,超过预期。不过吸引我的还是它带OPDS接口,各个APP只要支持这种通用接口就可以来查看和下载图书,感受上挺不错。

我对电子书软件的诉求

如上,最基本的是查看和下载书库中图书的能力,需要支持OPDS。然后就是要支持主流的电子书格式:

  • PDF 很多技术文档和影印的都是PDF,必须支持。
  • EPUB 常见的电子书格式。
  • MOBI 同样常见的电子书格式。
  • AZW3 收藏了一些azw上的电子书,主要是这种格式

最好有漫游能力,方便切换设备阅读。另外也希望它可以方便划线或记录一些,这年头我的记性,看一茬忘记茬。基于这些想法,我在iOS系统下把主要能下载到的电子书软件(特别是只要有人介绍过的)都下载了一遍,后文有相关简要评价。

安装和使用强大的Calibre来管理电子书

安装

因为我电子书都在NAS中,所以直接在NAS起了一个docker容器来部署,我使用是这个封装。以下是参考的docker-compose文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
version: "3"
services:
  calibre-web:
    image: lscr.io/linuxserver/calibre-web:latest
    container_name: calibre-web
    environment:
      - PUID=1000 # id -u <user-name>
      - PGID=100 # id -g <user-name>
      - TZ=Asia/Shanghai
      - DOCKER_MODS=linuxserver/mods:universal-calibre #optional
      - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional
    volumes:
      - ./config:/config
      - ./books:/books
      - ./imports:/imports
    ports:
      - 8083:8083
    restart: unless-stopped

上面挂载了configbooksimports目录到容器中,持久化文件及配置。之后访问http://服务器IP:8083即可打开calibre-web的页面。

初次使用需要修复一处错误

初次登录我们可以admin/admin123默认管理员账号登录,这时要你设置一些配置,如果遇上这个错误:

1
DB Location is not Valid, Please Enter Correct Path

原因是缺失meatadata.db文件,我们可以这么生成:

1
2
3
4
5
6
7
8
# 进入容器内
docker exec -it calibre-web bash

# 执行命令生成metadata.db文件
calibredb restore_database --really-do-it --with-library /ebooks/

# 添加写权限
chmod 666 /ebooks/metadata.db

再次刷新网页即可。

可能有助于脱困的一些Tips

  • 如果报attempt to write a readonly database的错误,可能上述启动yaml中的PUIDPGID设置不正确。
  • 要开启上传书籍功能,可以点管理权限->配置->编辑基本配置->启用上传
  • 为更安全的提供登录方式,可切换登录类型,比如其内有LDAP和OAuth认证。
  • 这个服务如果要暴露对外,安全起见可添加一个新用户(管理员),并且禁用掉默认的admin。顺便可把语言切换到熟悉的中文来。点“管理权限”一顿操作即可,比较简单略过。
  • 同样为了安全起见,不要允许从外部直接HTTP访问,一定是SSL加密再访问的。具体做法很多,比如统一的反向代理服务,有机会其它文章再聊。

批量上传书籍

我们可通过命令行批量上传书,比如这样:

1
calibredb add -r 'MircoComputer.2020.Complete\ PDF/'  --duplicates  --with-library /ebooks

这样方便一次添加一批图书。

测试OPDS

访问http://服务器IP:8083/opds,用前面设置的账号密码登录,能显示出一个XML格式说明一切正常。

寻找最称手的兵器之App选择

文章开始就提过我对App的要求了:既要支持格式多,又要跨多平台,还最好免费或不贵,啊哈?!这也太为难人了吧!别说,还真有呢。但是这寻找的过程真是寻它千百度啊:)下面且听我一个个道来。以下全是个人粗浅的使用感受,若有不同意见欢迎交流。

Panels (comic reader)

订阅制: 10/m,1.49刀/月 78/Y PDF阅读体验很棒,尤其是缩略图等。顺畅度也很好,看100MB不卡。其它格式支持都有问题!! 点评:格式支持太少,放弃。

Chunky Comic Reader

不花钱啥也体验不到,整个UI设计感较差。没实际体验。25元. 3.99刀只支持iPad。 点评:UI没啥好感,直接放弃。

Paperback

免费。epub只支持图片,不能正常处理文字。应该主要用于看漫画? 点评:功能不满足,放弃。

Marvin3

Marvin3的界面显示不错。支持iCloud、支持OPDS。 但是同样因为支持格式有限:- Opens DRM-free EPUB books, CBX and CBR comics。 点评:挺喜欢,但因不支持Mobi和PDF, 也不支持azw3,忍痛放弃。

FBReader

默认样式(字体)略有问题。只支持Mobi/Epub,不支持PDF等。 点评:UI不太喜欢,格式支持不满足诉求,放弃。

PocketBook

UI不错,内置书城,支持有声书。不支持OPDS。在导入书,遇上反复Crash。 点评:Crash多次后没再体验,也不支持OPDS,放弃。

Yomu

买断:4.99刀,支持多个终端。 iphone,ipad,mac等,并且可家庭共享。界面UI不错。免费支持最多10个文档,支持多种电子书格式(完全满足我的需求),支持Tag标注。免费即支持OPDS/Dropbox/GoogleDrive等,pro版本(付费)支持iCloud。 点评:整体风格清新淡雅,我挺喜欢,特别是多端体验一致性很棒,意向之。

KyBook3

和Yomu类似,支持PDF,EPUB,MOBI等,还有一些高级功能,朗读,主题,配色等。支持OPDS等。 专业版:4.99刀买断基础功能(除同步能力外) 高级订阅:(支持同步功能,阅读位置,笔记,摘要等)3个月4.99刀。 一年14.99刀。 比Yomu更出彩的是(对我有价值的)KB3支持对于PDF标注(基于OCR),但是Yomu不支持标注。 同样更厉害的是,基于OCR等识别能力,KB3还可以重排PDF,这样让手机看PDF可能会轻松一些(字会更大点)。 点评:软件UI和功能都很不错,专业版价格能接受。但想支持同步功能只有订阅制,略有点小贵。


基于上面一圈对比,最后我的方案是主力看书软件选择了Yomu,它可以同步各个书的记录,让我在电脑,手机,iPad上都可以随时继续阅读,其笔记和标的同步速度很快,并且书籍可由iCloud存储,只要一个设备下载,其它设备自动刷新的体验也不错。而当我们PDF要看并且有标注需求时,选择KyBook3作补充,在没订阅下不能同步,不过标注可以导出新的PDF。

所以最后付出了两个4.99刀的代价基本解决问题。

总结

这过程中我没太深入研究Calibre的使用和管理,比如还不知道如何批量修改标签,不知道如何批量重命名等,后面有大量书管理时要研究。目前添加了一些书先看着。而对于找到Yomu还是比较满意的~ 最后看几张图吧!

iPhone中使用yomu-1 iPhone中使用yomu阅读 iPad中使用yomu阅读 MacbookAir中使用yomu阅读 iPad中使用KyBook3阅读PDF