应用概述
Calibre 是一个功能强大的开源电子书管理软件,主要用于桌面平台。它的主要特点包括:
- 电子书库管理:组织、分类和标记电子书
- 格式转换:支持多种电子书格式之间的转换
- 元数据编辑:允许用户编辑书籍的详细信息
- 电子书阅读器:内置阅读器支持多种格式
- 电子书下载:可以从网上下载元数据和封面
- 与电子阅读器同步:支持多种设备
- 内容服务器:可以通过网络访问你的电子书库
Calibre Web 是一个基于网络的应用程序,它使用 Calibre 的数据库来提供一个在线界面来访问你的电子书库。主要特点包括:
- 网页界面:可以通过浏览器访问你的电子书库
- 响应式设计:适配桌面和移动设备
- 用户管理:支持多用户,可以设置权限
- 在线阅读:支持多种格式的在线阅读
- 下载功能:允许用户下载电子书
- 搜索和过滤:方便查找特定的书籍
- 书架管理:允许用户创建和管理书架
- 豆瓣书籍元信息刮削:自动从豆瓣获取书籍元信息
- 与 Calibre 数据库同步:使用 Calibre 的数据库,但不需要 Calibre 运行
Calibre 基于 Python 和 Qt 开发,在各个桌面端使用效果都非常不错,但唯独缺失了“在线”能力,因此 Calibre Web 应运而生,Calibre Web 基于 Python 和 Flask 开发,使用 Calibre SQLite 数据库和基于文件夹的图书资源管理,但提供了 Web 界面,使用更方便。下面是 Calibre Web 的界面:
但 Calibre Web 并没有暴露 HTTP API 接口,无法轻松的集成到第三方应用中,比如客户端和其他资源管理系统。Calibre Web API 项目应运而生,其设计核心在于在尽可能地少的占用服务器资源的情况下,通过 HTTP 接口安全的向外暴露书籍查询、书籍封面和资源下载的能力,为此我们选用了 Rust 和 Actix 技术栈,使用 Calibre Web 的用户鉴权系统,提供上述服务。
下面是集成效果:查询数据和封面图片来自于后端服务器反向代理 Calibre Web API 接口。
额外提供了反向链接,允许跳转到 Calibre Web 图书界面:
应用价值
借助于 Calibre Web,Calibre 书库实现了在线能力,借助于 Calibre Web API,Calibre 书库可以更方便的和第三方系统集成。得益于 Rust 语言和 Actix 框架,Calibre Web API 的性能非常出色,且占用极低:8MB 大小的二进制程序,仅需占用 3MB 内存即可提供服务。
在生产中,Calibre Web 的图书资源文件夹通过 RClone 每天同步到客户的私有 NAS 服务器实现本地同步,使得 Calibre 客户端、Web 和 API 的数据尽可能一致,且随处可用。