🧊 yutto,一个可爱且任性的 B 站视频下载器(CLI)
完整静态文档在这里喔 → yutto
Tip
如果在使用过程中遇到问题,请通过 Issues 反馈功能正确性问题和功能请求,其他问题请通过 Discussions 反馈~
yutto 是一个 B 站视频下载器,它可以帮助你下载 B 站上的投稿视频、番剧、课程等资源,支持单个视频下载、批量下载等功能,就像这样:
❯ yutto https://www.bilibili.com/video/BV1ZEf9YiE2h/
INFO 发现配置文件 yutto.toml,加载中……
大会员 成功以大会员身份登录~
投稿视频 植物大战僵尸融合版2.2正式版宣传片
INFO 开始处理视频 植物大战僵尸融合版2.2正式版宣传片
INFO 共包含以下 15 个视频流:
INFO * 0 [AVC ] [1920x1080] <1080P 60帧> #3
INFO 1 [HEVC] [1920x1080] <1080P 60帧> #3
INFO 2 [AV1 ] [1920x1080] <1080P 60帧> #3
INFO 3 [AVC ] [1920x1080] <1080P 高清> #3
INFO 4 [HEVC] [1920x1080] <1080P 高清> #3
INFO 5 [AV1 ] [1920x1080] <1080P 高清> #3
INFO 6 [AVC ] [1280x720 ] <720P 高清 > #3
INFO 7 [HEVC] [1280x720 ] <720P 高清 > #3
INFO 8 [AV1 ] [1280x720 ] <720P 高清 > #3
INFO 9 [AVC ] [ 852x480 ] <480P 清晰 > #3
INFO 10 [HEVC] [ 852x480 ] <480P 清晰 > #3
INFO 11 [AV1 ] [ 852x480 ] <480P 清晰 > #3
INFO 12 [AVC ] [ 640x360 ] <360P 流畅 > #3
INFO 13 [HEVC] [ 640x360 ] <360P 流畅 > #3
INFO 14 [AV1 ] [ 640x360 ] <360P 流畅 > #3
INFO 共包含以下 3 个音频流:
INFO * 0 [MP4A] <320kbps >
INFO 1 [MP4A] < 64kbps >
INFO 2 [MP4A] <128kbps >
弹幕 ASS 弹幕已生成
INFO 开始下载……
━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━ 39.05 MiB/ 72.13 MiB 32.22 MiB/⚡
目前 yutto 已经可以通过部分包管理器直接安装~
使用 Homebrew 的用户可以尝试下下面的命令:
brew tap siguremo/tap
brew install yutto
使用 paru(Arch 上的 AUR 包管理器)的用户可以尝试下这样的命令(感谢 @ouuan):
paru -S yutto
你也可以尝试使用 docker 直接运行 yutto(具体如何运行需要参考下后面的内容~)
docker run --rm -it -v /path/to/download:/app siguremo/yutto <url> [options]
与直接运行 yutto 不同的是,这里的下载目标路径是通过 -v <path>:/app
指定的,也就是说 docker 里的 yutto 会将内容下载到 docker 里的 /app
目录下,与之相对应的挂载点 <path>
就是下载路径。你也可以直接挂载到 $(pwd)
,此时就和本机 yutto 的默认行为一致啦,也是下载到当前目录下~
Tip
在此之前请确保安装 Python3.9 及以上版本,并配置好 FFmpeg(参照 bilili 文档)
pip install yutto
当然,你也可以通过 pipx/uv 来安装 yutto(当然,前提是你要自己先安装它)
pipx install yutto # 使用 pipx
uv tool install yutto # 或者使用 uv
pipx/uv 会类似 Homebrew 无感地为 yutto 创建一个虚拟环境,与其余环境隔离开,避免污染 pip 的环境,因此相对于 pip,pipx/uv 是更推荐的安装方式(uv 会比 pipx 更快些~)。
Tip
这同样要求你自行配置 Python 和 FFmpeg 环境
有些时候有一些在 main 分支还没有发布的新特性或者 bugfix,你可以尝试直接安装 main 分支的代码,最快的方式仍然是通过 pip 安装,只不过需要使用 git 描述符
pip install git+https://github.com/yutto-dev/yutto@main # 通过 pip
pipx install git+https://github.com/yutto-dev/yutto@main # 通过 pipx
uv tool install git+https://github.com/yutto-dev/yutto.git@main # 通过 uv
yutto 的基本命令如下:
yutto <url>
你可以通过 yutto -h
查看详细命令参数。
如果你需要下载单个视频,只需要使用 yutto 加上这个视频的地址即可。它支持 av/BV 号以及相应带 p=n 参数的投稿视频页面,也支持 ep 号(episode_id)的番剧页面。
比如只需要这样你就可以下载《転スラ日記》第一话:
yutto https://www.bilibili.com/bangumi/play/ep395211
yutto 还支持直接使用能够唯一定位资源的 id 来作为 <url>
,刚刚的功能与下面的简化后的命令功能是完全一样的
yutto ep395211
不过有时你可能想要批量下载很多剧集,因此 yutto 提供了用于批量下载的参数 -b/--batch
,它不仅支持前面所说的单个视频所在页面地址(会解析该单个视频所在的系列视频),还支持一些明确用于表示系列视频的地址,比如 md 页面(media_id)、ss 页面(season_id)。
比如像下面这样就可以下载《転スラ日記》所有已更新的剧集:
yutto --batch https://www.bilibili.com/bangumi/play/ep395211
yutto 还支持很多功能,限于篇幅不在 README
中展示,你可以前往 yutto 文档 查看更多详细内容~
你也可以通过这些应用来使用 yutto
- KubeSpider: 一个多功能全局资源编排下载系统,支持下载、订阅各类资源网站~
- feat: 支持弹幕字体、字号、速度等设置
- feat: 配置文件支持
- feat: 配置文件功能优化,支持自定义配置路径
- docs: issue template 添加配置引导
- docs: 优化 biliass rust 重构后的贡献指南
- docs: 可爱的静态文档(WIP in #86)
- feat: 新的基于 toml 的任务列表
- refactor: 配置参数复用 pydantic 验证
- refactor: 针对视频合集优化路径变量
- refactor: 优化杜比视界/音效/全景声选取逻辑(Discussing in #62)
- refactor: 直接使用 rich 替代内置的终端显示模块
- feat: 更多批下载支持
- feat: 以及更加可爱~
请阅读 CONTRIBUTING.md