用Rust重写的Bilibili漫画下载器!无环境依赖,超高下载性能,支持pdf epub zip格式

用Rust重写的Bilibili漫画下载器!无环境依赖,超高下载性能,支持pdf epub zip格式

Property
Jun 20, 2022 07:57 PM
地址
https://github.com/lihe07/bilibili_comics_downloader
notion image

notion image

bcdown

Bilibili漫画下载器,written in Rust
这个项目用来接替之前的python版

特性

    1. 异步高性能
      网络相关操作使用了基于tokioreqwests,较多线程版有较大的性能提升
    1. 更加灵活的登录
      工具支持 扫码登录SESSDATA登录 两种登录方式,且能保存登录结果,无需每次重复登录
    1. 更完善的缓存功能
      工具会缓存更多的内容以减少网络请求,缓存地址可配置,默认选取用户的文档文件夹
    1. 更灵活的导出
      支持分话导出和合并导出,会自动添加Kindle等阅读器可识别的书签
      目前支持epubpdf两种格式

使用方法

工具共有如下几个命令:
    • bcdown info - 显示配置信息,缓存大小,登录状态
      使用示例:
      • bcdown info
        ℹ 加载配置文件:D:\Documents\bcdown/config.toml
        ℹ 登录信息有效!
        ℹ 用户名:[数据删除]
        ℹ 漫币余额:[数据删除]
        ℹ 缓存目录:D:\Documents\bcdown/cache
        ℹ 缓存目录大小:137 MB
        ℹ 默认下载目录:D:\Download
        
    • bcdown login - 登录B漫账号,通过二维码或者sessdata
      使用示例:
      • bcdown login -s [数据删除] 通过sessdata登录
        ℹ 加载配置文件:D:\Documents\bcdown/config.toml
        ℹ 登录信息有效!
        ℹ 用户名:[数据删除]
        ℹ 漫币余额:[数据删除]
        
      • bcdown login -q 通过扫描二维码登录
        ℹ 加载配置文件:D:\Documents\bcdown/config.toml
         ▀ ██▀▀▀▄ ▀ ▄▄ █▄ ▀▄▄ ▀█▀█▄▀▄ ██▀▀█▄
         ▀▀ ▄▀ ▀ █ ▀ ▄ ▄▄▄▄▀▄█▀▀██ █ ▄█▀▀█
         █ █▀█▄▄▀██▄ ▄▀▄▄▄▄▀▄▀▀▀▀█▀▀█▀ ▀▀▀
         █▄█▀█▀██ ▄ ██▄ █▄ ██ ▄ ▄▀█▄ ██▀ ██
         █▀ ▀▄▀▀█▀ █▀▄█▄ ▀█▄▄▄▀█▀▀▀ ▄▀▀▄▀ █▄
         █ █▀█ █▄█ █▄ █▄▄ ▄▀ ██▄█▄ ▀▀█
         ▄ ▄▄▀▄▀ █▄▄▄ ▄▄▀▄██▄█▄▀█▀▀▀▀▄█▀ ▀█▀
         █▀█ ▀▀▄███▀█▄▀█ ▀ ▀▄▀▄█ ██ ████▀ █▀
         ▄▄ █ ▀ █▄▄▀█▀█ ▄█▄▄▄ ▄▄▄█▀▀▄█▀█▀ █▀▀
         █ ▄▄▀▄▀▄██▀ █ █▀ ▀ ▀▄█▄▀ ▄██▄▀█ ▀██
         ▀ ▀▀▀ ▀ ▄▀▄▄▀ ▀▀ █▄██▄▀▄▀▀▀ █▀▀▀██▀▀
         █▀▀▀▀▀█ ▄▀ █▀██▀▀▄█▄▀ ▄ ▀ █ ▀ █▄▀█▀
         █ ███ █ █ ▄▄▄█▀▄▄▀█▀ ▄█▄█▀▀███▀█▄▀▀▄
         █ ▀▀▀ █ ▀ ▀▀▀▄ ▀█ █ ██▄█ ▀▀▄▀ ▄ ▀█
         ▀▀▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀ ▀▀▀▀ ▀▀ ▀ ▀▀▀
        
        
        ✔ 二维码已生成,请扫描二维码登录
        ℹ 如果显示错误,请手动访问:[链接省略]
        ⠇ 等待确认...
        
    • bcdown clear - 清空缓存文件夹
    • bcdown search [链接或ID] - 搜索某个漫画,列出它的全部章节
    • bcdown list - 列出缓存中的漫画
    • bcdown fetch [链接或ID] <--range [开始]-[结束],[开始]-,-[结束]> - 将一个漫画下载到本地
      使用示例:
      • bcdown fetch mc29911 --range 1-20,40-50,60- 下载 mc29911 第1话到第20话,第40话到第50话 和 第60话之后的所有到本地
        ``
    • bcdown export [链接或ID] --format [epub或pdf] <--range [开始]-[结束],[开始]-,-[结束]> <-s 单独导出每一话> <--output [输出位置]> <-g [组大小>] - 导出一个本地漫画

构建,编译,安装

和大部分rust crates一样,只需clone该存储库,之后执行cargo build --release 即可本地构建
这个项目已经发布到crates.io上了,因此可以通过cargo install bcdown来安装
如果只是普通用户,可以下载编译好的可执行文件:Releases

Kindle使用指南

由于kindle阅读器暂时不支持epub格式的电子书,而pdf格式又过于庞大,不便于传输,这里有几种常见解决方案:
    1. 使用 bcdown export XXXX -s -f pdf 分话导出较小的pdf文件(编码较慢)
    1. 使用 bcdown export XXXX -f epub 导出一个大的epub文件(比pdf快),之后使用 ebook-convert 等工具转换成 azw3 格式

联系方式

我的QQ:3525904273

更新记录

  • 0.1.0 - 第一个版本,支持导出PDF
  • 0.1.1 - 修复了bug,支持导出epub格式
  • 0.1.2 - 修复bug
  • 0.1.3 - 修复bug
  • 0.1.4 - 修复bug,优化网络模块
  • 0.1.5 - 加入导出zip文件的支持,修复bug,优化任务处理
  • 0.1.6 - 删除书签中的ORD编码,修复epub中的格式问题
  • 0.1.7 - 修复bug,修改压缩方式为Stored
  • 0.2.0 - 范围下载/导出,优化网络,加入分组导出功能,升级依赖项

补充

这个工具只是个爬虫,不能下载没有解锁的漫画,因此解决不了钞能力的问题(
如果发现了Bug(可能会有很多,已经发现了不少),欢迎创建Issue
这个工具的更新会很频繁,建议保持使用最新版