Project Icon

yutto

功能丰富的B站视频批量下载器

yutto是一个功能全面的B站视频下载工具,支持投稿视频、番剧、课程等多种内容类型的批量下载。用户可以自定义视频质量、音频码率和编码方式,满足不同需求。该工具采用协程实现并行下载,提高效率。yutto提供多种安装方式,包括包管理器、Docker和pip,适应不同用户的使用习惯。通过灵活的参数设置,yutto能够为用户提供定制化的下载体验。

yutto2.0.0-beta

PyPI - Python Version pypi PyPI - Downloads LICENSE ruff Gitmoji discord chat

yutto,一个可爱且任性的 B 站下载器(CLI)

当前 yutto 尚处于 beta 阶段,有任何建议尽管在 Discussions 提出~~~

版本号为什么是 2.0

因为 yutto 是 bilili 的後輩呀~

从安装开始~

包管理器一键安装啦

目前 yutto 已经可以通过部分包管理器直接安装~

使用 Homebrew 的用户可以尝试下下面的命令:

brew tap siguremo/tap
brew install yutto

使用 paru(Arch 上的 AUR 包管理器)的用户可以尝试下这样的命令(感谢 @ouuan):

paru -S yutto

使用 Docker

你也可以尝试使用 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 的默认行为一致啦,也是下载到当前目录下~

pip/pipx/uv 安装

[!TIP]

在此之前请确保安装 Python3.9 及以上版本,并配置好 FFmpeg(参照 bilili 文档

pip install --pre yutto

当然,你也可以通过 pipx/uv 来安装 yutto(当然,前提是你要自己先安装它)

pipx install yutto      # 使用 pipx
uv tool install yutto   # 或者使用 uv

pipx/uv 会类似 Homebrew 无感地为 yutto 创建一个虚拟环境,与其余环境隔离开,避免污染 pip 的环境,因此相对于 pip,pipx/uv 是更推荐的安装方式(uv 会比 pipx 更快些~)。

体验 main 分支最新特性

[!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

主要功能

已支持的下载类型

类型是否支持选集示例链接默认路径模板
投稿视频-https://www.bilibili.com/video/BV1vZ4y1M7mQ
https://www.bilibili.com/video/av371660125
https://www.bilibili.com/video/BV1vZ4y1M7mQ?p=1
av371660125
BV1vZ4y1M7mQ
{title}
投稿视频 批量:white_check_mark:https://www.bilibili.com/video/BV1vZ4y1M7mQ
https://www.bilibili.com/video/av371660125
av371660125
BV1vZ4y1M7mQ
{title}/{name}
番剧-https://www.bilibili.com/bangumi/play/ep395211
ep395211
{name}
番剧 批量:white_check_mark:https://www.bilibili.com/bangumi/play/ep395211
https://www.bilibili.com/bangumi/play/ss38221
https://www.bilibili.com/bangumi/media/md28233903
ep395211
ss38221
md28233903
{title}/{name}
课程-https://www.bilibili.com/cheese/play/ep6902{name}
课程 批量:white_check_mark:https://www.bilibili.com/cheese/play/ep6902
https://www.bilibili.com/cheese/play/ss298
{title}/{name}
用户指定收藏夹 批量:x:https://space.bilibili.com/100969474/favlist?fid=1306978874&ftype=create{username}的收藏夹/{series_title}/{title}/{name}
当前用户稍后再看 批量:x:https://www.bilibili.com/watchlater稍后再看/{title}/{name}
用户全部收藏夹 批量:x:https://space.bilibili.com/100969474/favlist{username}的收藏夹/{series_title}/{title}/{name}
UP 主个人空间 批量:x:https://space.bilibili.com/100969474/video{username}的全部投稿视频/{title}/{name}
合集 批量:white_check_mark:https://space.bilibili.com/361469957/channel/collectiondetail?sid=23195
https://www.bilibili.com/medialist/play/361469957?business=space_collection&business_id=23195
{series_title}/{title}
视频列表 批量:x:https://space.bilibili.com/100969474/channel/seriesdetail?sid=1947439
https://www.bilibili.com/medialist/play/100969474?business=space_series&business_id=1947439
https://space.bilibili.com/100969474/favlist?fid=270359&ftype=collect
{series_title}/{title}/{name}

[!NOTE]

标记「批量」的视频都必须通过 -b/--batch 参数来下载,否则会按照单个视频来解析下载

基本命令

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 支持一些基础参数,无论是批量下载还是单视频下载都适用。

点击展开详细参数

最大并行 worker 数量

  • 参数 -n--num-workers
  • 默认值 8

与 bilili 不同的是,yutto 并不是使用多线程实现并行下载,而是使用协程实现的,本参数限制的是最大的并行 Worker 数量。

指定视频清晰度等级

  • 参数 -q--video-quality
  • 可选值 127 | 126 | 125 | 120 | 116 | 112 | 80 | 74 | 64 | 32 | 16
  • 默认值 127

清晰度对应关系如下

code清晰度
1278K 超高清
126杜比视界
125HDR 真彩
1204K 超清
1161080P 60帧
1121080P 高码率
801080P 高清
74720P 60帧
64720P 高清
32480P 清晰
16360P 流畅

并不是说指定某个清晰度就一定会下载该清晰度的视频,yutto 只会尽可能满足你的要求,如果不存在指定的清晰度,yutto 就会按照默认的清晰度搜索机制进行调节,比如指定清晰度为 80首先会依次降清晰度搜索 74643216,如果依然找不到合适的则继续升清晰度搜索 112116120125126127

值得注意的是,目前杜比视界视频只能简单下载音视频流并合并,合并后并不能达到在线观看的效果。

指定音频码率等级

  • 参数 -aq--audio-quality
  • 可选值 30251 | 30255 | 30250 | 30280 | 30232 | 30216
  • 默认值 30251

码率对应关系如下

code码率
30251- (Hi-Res)
30255- (杜比音效)
30250- (杜比全景声)
30280320kbps
30232128kbps
3021664kbps

码率自动调节机制与视频清晰度一致,也采用先降后升的匹配机制。

指定视频编码

  • 参数 --vcodec
  • 下载编码可选值 "av1" | "hevc" | "avc"
  • 保存编码可选值 FFmpeg 所有可用的视频编码器
  • 默认值 "avc:copy"

该参数略微复杂,前半部分表示在下载时优先选择哪一种编码的视频流,后半部分则表示在合并时如何编码视频流,两者使用 : 分隔。

值得注意的是,前半的下载编码只是优先下载的编码而已,如果不存在该编码,则会根据 --download-vcodec-priority 自动选择其余编码,如未设置 --download-vcodec-priority,则会类似视频清晰度调节机制先降序后升序的方式来选择。

而后半部分的参数如果设置成非 copy 的值则可以确保在下载完成后对其进行重新编码,而且不止支持 av1hevcavc,只要你的 FFmpeg 支持的视频编码器,它都可以完成。

指定音频编码

  • 参数 --acodec
  • 下载编码可选值 "mp4a"
  • 保存编码可选值 FFmpeg 所有可用的音频编码器
  • 默认值 "mp4a:copy"

详情同视频编码。

指定视频下载编码优先级

  • 参数 --download-vcodec-priority
  • 默认值 "auto"
  • 可选值 "auto" 或者使用 , 分隔的下载编码列表,如 "hevc,avc,av1"

当使用默认值 "auto" 时,yutto 会类似视频清晰度调节机制先降序后升序的方式来选择。

当使用自定义下载编码列表时,yutto 会严格按照列表中的顺序进行选择,如果不存在则会认为该视频无视频流。

Warning

如若设置本参数,请总是将 --download-vcode-priority 首选编码作为 --vcodec 的前半部分,否则可能会导致下载失败。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号