Skip to main content

A CLI-downloader for site @kox.moe.

Project description

Kmoe Manga Downloader

PyPI Downloads PyPI version Unit Tests Validate Mirrors Interpretor License

kmdr (Kmoe Manga Downloader) 是一个 Python 终端应用,用于从 Kmoe 网站下载漫画。它支持在终端环境下的登录、下载指定漫画及其卷,并支持回调脚本执行。

交互模式 kmdr 使用演示
日志模式 kmdr 日志使用演示

✨功能特性

  • 现代化终端界面: 基于 rich 构建的终端用户界面(TUI),提供进度条和菜单等现代化、美观的交互式终端界面。
  • 凭证和配置管理: 应用自动维护登录凭证和下载设置,实现一次配置、持久有效,提升使用效率。
  • 高效下载的性能: 采用 asyncio 并发分片下载方式,充分利用网络带宽,显著加速单个大文件的下载速度。
  • 强大的高可用性: 内置自动重试与断点续传机制,无惧网络中断,确保下载任务在不稳定环境下依然能够成功。
  • 灵活的自动化接口: 支持在每个文件下载成功后自动执行自定义回调脚本,轻松集成到您的自动化工作流。

受服务端限制,普通用户使用默认的方式一进行下载时暂时无法进行分片下载以及断点重试。

🖼️ 使用场景

  • 通用的加速体验: 采用并发分片下载方式,充分地利用不同类型用户的网络带宽,提升数据传输效率,从而有效缩短下载的等待时间。
  • 灵活部署与远程控制: 支持在远端服务器或 NAS 上运行,可以在其他设备(PC、平板)上浏览,而通过简单的命令触发远程下载任务,实现浏览与存储的分离。
  • 智能化自动追新: 应用支持识别重复内容,可配合定时任务实等现无人值守下载最新的内容,轻松打造时刻保持同步的个人资料库。

🛠️安装应用

你可以通过 PyPI 使用 pip 进行安装:

pip install kmoe-manga-downloader

📋使用方法

1. 登录 kmoe

首先需要登录 kmoe 并保存登录状态(Cookie)。

kmdr login -u <your_username> -p <your_password>
# 或者
kmdr login -u <your_username>

第二种方式会在程序运行时获取登录密码,此时你输入的密码不会显示在终端中。

如果登录成功,会同时显示当前登录用户及配额。

2. 下载漫画书籍

你可以通过以下命令下载指定书籍或卷:

# 在当前目录下载第一、二、三卷
kmdr download --dest . --book-url https://kxx.moe/c/50076.htm --volume 1,2,3
# 下面命令的功能与上面相同
kmdr download -l https://kxx.moe/c/50076.htm -v 1-3
# 在目标目录下载全部番外篇
kmdr download --dest path/to/destination --book-url https://kxx.moe/c/50076.htm --vol-type extra -v all
# 下面命令的功能与上面相同
kmdr download -d path/to/destination -l https://kxx.moe/c/50076.htm -t extra -v all

常用参数说明:

  • -d, --dest: 下载的目标目录(默认为当前目录),在此基础上会额外添加一个为漫画名称的子目录
  • -l, --book-url: 指定漫画的主页地址
  • -v, --volume: 指定下载的卷,多个用逗号分隔,例如 1,2,31-5,8all 表示全部
  • -t, --vol-type: 卷类型,vol: 单行本(默认);extra: 番外;seri: 连载话;all: 全部
  • -p, --proxy: 代理服务器地址
  • -r, --retry: 下载失败时的重试次数,默认为 3
  • -c, --callback: 下载完成后的回调脚本(使用方式详见 4. 回调函数
  • -m, --method: 选择不同的下载方式,详情参考官网,1: 方式一(默认);2: 方式二
  • --num-workers: 最大下载并发数量,默认为 8

完整的参数说明可以从 help 指令中获取。

3. 查看账户状态

查看当前账户信息(账户名和配额等):

kmdr status

4. 回调函数

你可以设置一个回调函数,下载完成后执行。回调可以是任何你想要的命令:

kmdr download -d path/to/destination --book-url https://kxx.moe/c/50076.htm -v 1-3 \
	--callback "echo '{b.name} {v.name} downloaded!' >> ~/kmdr.log"

字符串模板会直接朴素地替换,卷名或者书名可能会包含空格,推荐使用引号包含避免出现错误。

{b.name}, {v.name} 会被分别替换为书籍和卷的名称。常用参数:

变量名 描述
v.name 卷的名称
v.page 卷的页数
v.size 卷的文件大小
b.name 对应漫画的名字
b.author 对应漫画的作者

完整的可用参数请参考 structure.py 中关于 VolInfo 的定义。

5. 持久化配置

重复设置下载的代理服务器、目标路径等参数,可能会降低应用的使用效率。所以应用也提供了通用配置的持久化命令:

kmdr config --set proxy=http://localhost:7890 dest=/path/to/destination
kmdr config -s num_workers=5 "callback=echo '{b.name} {v.name} downloaded!' >> ~/kmdr.log"

只需要配置一次即可对之后的所有的下载指令生效。

注意:这里的参数名称不可以使用简写,例如 dest 不可用使用 d 来替换。

同时,你也可以使用以下命令进行持久化配置的管理:

  • -l, --list-option: 显示当前存在的各个配置
  • -s, --set: 设置持久化的配置,键和值通过 = 分隔,设置多个配置可以通过空格间隔
  • -c, --clear: 清除配置,all: 清除所有;cookie: 退出登录;option: 清除持久化的配置
  • -d, --delete, --unset: 清除单项配置

当前仅支持部分下载参数的持久化:num_workers, dest, retry, callback, proxy

6. 镜像源切换

为了保证服务的长期可用性,并让用户能根据自己的网络环境选择最快的服务器,应用支持灵活地切换镜像源。

当您发现默认源(当前为 kxx.moe)访问缓慢或失效时,可以通过 config 命令轻松切换到其他备用镜像源:

kmdr config --base-url https://mox.moe
# 或者
kmdr config -b https://mox.moe

你可以参考 镜像目录 来选择合适的镜像源,如果你发现部分镜像源过时或者有缺失,欢迎贡献你的内容!

⚠️ 声明

  • 本工具仅作学习、研究、交流使用,使用本工具的用户应自行承担风险
  • 作者不对使用本工具导致的任何损失、法律纠纷或其他后果负责
  • 作者不对用户使用本工具的行为负责,包括但不限于用户违反法律或任何第三方权益的行为

💬任何使用中遇到的问题、希望添加的功能,都欢迎提交 issue 交流!
⭐ 如果这个项目对你有帮助,请给它一个星标!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kmoe_manga_downloader-1.3.0a0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kmoe_manga_downloader-1.3.0a0-py3-none-any.whl (62.1 kB view details)

Uploaded Python 3

File details

Details for the file kmoe_manga_downloader-1.3.0a0.tar.gz.

File metadata

  • Download URL: kmoe_manga_downloader-1.3.0a0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kmoe_manga_downloader-1.3.0a0.tar.gz
Algorithm Hash digest
SHA256 1fec943684dd0323b25455f7ae68e9ed0bfae40ce28203cd8467d5bade0a9a29
MD5 664c2afeb66e373a1d3aabfd8aec62bf
BLAKE2b-256 4ad2d03f836331e9acbb5ae770beee16619ff01b8646d16ff1e5e9fb7fb0b374

See more details on using hashes here.

Provenance

The following attestation bundles were made for kmoe_manga_downloader-1.3.0a0.tar.gz:

Publisher: release-package.yml on chrisis58/kmoe-manga-downloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kmoe_manga_downloader-1.3.0a0-py3-none-any.whl.

File metadata

File hashes

Hashes for kmoe_manga_downloader-1.3.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0fc5cf195196bb24f895d852c44c5f2a25f39f4d0e3558e5215ae6a5cbb3b11
MD5 081730374c0356adaf94256dd8420dc6
BLAKE2b-256 212b9f60cf6e00265c4fe57353583774d85bd5b6d7ca421bfd2f2bc7e247a0f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for kmoe_manga_downloader-1.3.0a0-py3-none-any.whl:

Publisher: release-package.yml on chrisis58/kmoe-manga-downloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page