#+TITLE: Kobo Manga Pipeline #+AUTHOR: Cytrogen #+OPTIONS: toc:2 自动化漫画下载-转换-导入流水线,从漫画源下载漫画,转换为 KEPUB 推送到 Kobo e-reader。 * 功能 - 插件化漫画源架构,自行开发源适配器 - 并发下载引擎,支持重试与断点续传 - 图片处理(裁边、缩放、灰度转换等,可配置) - KEPUB 打包(固定布局 EPUB3,RTL 日漫阅读顺序) - 传输到 Kobo(USB 直传 / Calibre) - 订阅追更与调度 * 安装 需要 Python 3.12+ 和 [[https://docs.astral.sh/uv/][uv]]。 #+begin_src bash git clone cd kobo-manga uv sync #+end_src * 使用 ** 搜索漫画 #+begin_src bash uv run kobo-manga search "漫画名" uv run kobo-manga search "漫画名" -s <源名称> #+end_src ** 下载 #+begin_src bash uv run kobo-manga download "漫画名" -c 1-10 #+end_src ** 订阅追更 #+begin_src bash uv run kobo-manga subscribe "漫画名" uv run kobo-manga subscriptions uv run kobo-manga update #+end_src ** 本地库 #+begin_src bash uv run kobo-manga list uv run kobo-manga config #+end_src * 源插件开发 本项目采用插件化架构,不内置任何漫画源。用户需自行开发源适配器。 ** 接口 所有源需继承 =BaseSource= 并实现以下方法: #+begin_src python from kobo_manga.sources.base import BaseSource from kobo_manga.sources import register_source from kobo_manga.models import MangaInfo, Chapter, PageImage class MySource(BaseSource): name = "my_source" URL_PATTERNS = ["example.com"] # 可选,用于从 URL 自动推断源 async def search(self, keyword: str) -> list[MangaInfo]: """搜索漫画,返回结果列表。""" ... async def get_manga_info(self, manga_url: str) -> MangaInfo: """获取漫画详情,包含完整章节列表。""" ... async def get_chapter_images(self, chapter: Chapter) -> list[PageImage]: """获取章节的所有图片 URL。""" ... async def close(self) -> None: """释放资源(如 HTTP 客户端)。""" ... register_source(MySource) #+end_src ** 数据模型 | 类型 | 字段 | |-------------+--------------------------------------------------------------| | =MangaInfo= | id, title, source, url, author, cover_url, description, tags, chapters | | =Chapter= | id, title, chapter_number, url, page_count, chapter_type | | =PageImage= | chapter_id, page_number, url, local_path | ** 安装插件 将插件 =.py= 文件放入 =src/kobo_manga/sources/= 目录,程序启动时会自动扫描并加载。 * TODO - [ ] Web UI 管理界面 - [ ] Kobo Sync Protocol(通过 WiFi 无线推送到 Kobo 设备) * 项目结构 #+begin_example src/kobo_manga/ config.py - YAML 配置加载 models.py - 数据模型 utils.py - 公用工具函数 sources/ base.py - 源适配器抽象基类 __init__.py - 插件注册与自动发现 downloader/ - 并发下载引擎 + 重试 + 断点续传 processor/ - 图片处理流水线 converter/ - KEPUB 打包 transfer/ - 设备传输(USB / Calibre) scheduler/ - 追更调度 db/ - SQLite 状态存储 cli/ - CLI 入口 #+end_example * 技术栈 - [[https://www.python.org/][Python]] 3.12+,[[https://docs.astral.sh/uv/][uv]] 包管理 - [[https://www.python-httpx.org/][httpx]] 异步 HTTP 客户端 - [[https://python-pillow.org/][Pillow]] 图片处理 - [[https://pyyaml.org/][PyYAML]] 配置 - [[https://www.sqlite.org/][SQLite]](WAL 模式)状态存储 * 许可证 本项目基于 [[./LICENSE][GNU General Public License v3.0]] 发布。