【免费下载链接】kobo-book-downloader
A tool to download and remove DRM from your purchased Kobo.com ebooks and audiobooks.
kobo-book-downloader(命令行名为 kobodl)是一款能下载 Kobo 已购电子书并移除 DRM 保护的开源工具,同时提供命令行(CLI)和浏览器(Web)两种使用模式。本文带你从零走查它的开发环境搭建、双模架构设计与打包发布流程,让你掌握 Python 工具类项目的完整开发姿势。
项目速览:一个工具,两种模式
kobodl 的核心价值在于"独立运行":无需 Adobe Digital Editions 等专有软件,直接以模拟 Android Kobo 阅读器的方式拉取你的书库并下载 EPUB 文件,DRM 移除也一步完成。
它对外暴露两种交互形态:
- CLI 模式:
kobodl user add、kobodl book get等命令,适合脚本化和批量下载 - Web 模式:
kobodl serve启动一个 Flask 网页服务,家庭成员不用装 Python 也能在浏览器里管理账号和书籍
一键准备开发环境:Poetry 安装步骤
项目使用 pyproject.toml 声明依赖,整个工具链围绕 Python Poetry 组织。核心元信息值得一看:包名为 kobodl,Python 版本要求 >=3.9,运行依赖包括 click(CLI 框架)、flask(Web 界面)、requests、pycryptodome 等,详见 pyproject.toml。
克隆仓库并初始化环境只需三步:
git clone https://gitcode.com/gh_mirrors/ko/kobo-book-downloader
cd kobo-book-downloader
poetry install
安装完成后,可以直接在开发环境里运行 CLI:
poetry run kobodl --help
💡 Poetry 会把开发依赖(
tox)隔离在虚拟环境中,避免污染系统 Python。
理解 CLI+Web 双模架构:从入口到路由
整个代码量很小(约 1300 行 Python),结构非常清晰:
| 模块 | 职责 |
|---|---|
| kobodl/main.py | 入口,仅 5 行,调用 cli 启动 |
| kobodl/init.py | 定义 click 命令组及全局选项 --config/--debug |
| kobodl/app.py | Flask 应用,/user、/books 等路由 |
| kobodl/commands/ | user、book 子命令实现 |
| kobodl/kobo.py | 与 Kobo 服务器交互:设备激活、拉取书库 |
| kobodl/koboDrmRemover.py | 基于 AES 的 KEPUB 去 DRM 逻辑 |
双模的关键设计:CLI 和 Web 共享同一套业务层。kobodl/app.py 中的路由直接调用 actions 模块,而 serve 命令在 kobodl/init.py 中注册——所以 Web 端能做的一切(添加账号、列书、下载),CLI 端也都能做,反之亦然。
最快 Tox 环境检查方法:一条命令管三件事
tox.ini 定义了三个常用环境,用 Tox 统一驱动,避免"在我机器上是好的":
tox -e type:运行mypy静态类型检查,自动补装缺失的 types 包tox -e format:依次执行black和isort格式化(配置见 pyproject.toml)tox -e buildcli:调用 PyInstaller 打包独立可执行文件
poetry run tox -e lint # 提交前跑一遍格式化
poetry run tox -e type # 类型检查
poetry run tox -e buildcli # 生成单文件可执行程序
PyInstaller 独立打包:无需 Python 也能跑
buildcli 环境是发布"免安装版"的关键,核心就一行命令(见 tox.ini):
pyinstaller --onefile --collect-data kobodl kobodl/__main__.py
其中 --collect-data 参数至关重要:它把 kobodl/templates/ 下的 Jinja2 模板一起打进可执行文件——少了它,kobodl serve 将渲染不出任何页面。这就是为什么官方预构建包(Windows / macOS / Linux)开箱即用,但只包含 CLI 功能。
进阶:用 Docker 构建可复现的发布镜像
Dockerfile 采用两阶段构建:第一阶段在 python:3.9-alpine 中通过 pyproject.toml 用 Poetry 安装依赖(Dockerfile),第二阶段仅拷贝构建产物,最终镜像用 tini 作为入口(Dockerfile)。
配合 docker-compose.yml,挂载配置文件与下载目录后,一条命令即可在 5000 端口跑起 Web 服务,是私有部署的理想方案。
常见问题与总结
- 账号激活:
kobodl使用与 Kobo 阅读器相同的网页激活方式,登录时会在浏览器打开激活链接并输入验证码(参考 docs/captcha.gif),成功后只保存访问令牌,不存密码。 - 找不到书:试试
kobodl book list --read显示已读/归档书籍。 - 调试:加
--debug全局选项,日志会写入debug.log,由 kobodl/debug.py 记录。
📌 总结:这个项目是学习"小工具工程化"的绝佳样本——Poetry 管依赖、Tox 管质量门禁、PyInstaller 管分发、Docker 管部署,四种手段各司其职,代码却只有一千多行。照本文流程走一遍,你就能复刻出一套完整的 CLI+Web 双模工具开发管线。
【免费下载链接】kobo-book-downloader
A tool to download and remove DRM from your purchased Kobo.com ebooks and audiobooks.
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





