{"id":13430849,"url":"https://github.com/yutto-dev/yutto","last_synced_at":"2025-05-13T22:04:43.315Z","repository":{"id":37793533,"uuid":"363690519","full_name":"yutto-dev/yutto","owner":"yutto-dev","description":":ice_cube: 一个可爱且任性的 B 站视频下载器","archived":false,"fork":false,"pushed_at":"2025-04-28T04:33:15.000Z","size":2417,"stargazers_count":1351,"open_issues_count":10,"forks_count":113,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-29T14:25:46.033Z","etag":null,"topics":["asyncio","bangumi","bilibili","coroutines","cross-platform","danmaku","downloader","video"],"latest_commit_sha":null,"homepage":"https://yutto.nyakku.moe","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yutto-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"patreon":"SigureMo","custom":["https://afdian.net/@siguremo","https://img.nyakku.moe/sponsor/alipay.png","https://img.nyakku.moe/sponsor/wechat.png"]}},"created_at":"2021-05-02T15:58:56.000Z","updated_at":"2025-04-29T02:41:50.000Z","dependencies_parsed_at":"2024-01-13T10:37:25.225Z","dependency_job_id":"bd0eb0ad-c628-4dbc-b657-16f45ce7261a","html_url":"https://github.com/yutto-dev/yutto","commit_stats":{"total_commits":361,"total_committers":9,"mean_commits":"40.111111111111114","dds":"0.10249307479224379","last_synced_commit":"242f4cd0b9f1b6f93af51936214ca2fdc112fa64"},"previous_names":["siguremo/yutto"],"tags_count":86,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutto-dev%2Fyutto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutto-dev%2Fyutto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutto-dev%2Fyutto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yutto-dev%2Fyutto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yutto-dev","download_url":"https://codeload.github.com/yutto-dev/yutto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251517123,"owners_count":21601936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","bangumi","bilibili","coroutines","cross-platform","danmaku","downloader","video"],"created_at":"2024-07-31T02:00:58.376Z","updated_at":"2025-04-29T14:25:59.732Z","avatar_url":"https://github.com/yutto-dev.png","language":"Python","funding_links":["https://patreon.com/SigureMo","https://afdian.net/@siguremo","https://img.nyakku.moe/sponsor/alipay.png","https://img.nyakku.moe/sponsor/wechat.png"],"categories":["Python","下载工具"],"sub_categories":["直播脚本"],"readme":"# yutto\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"./docs/public/logo.png\" width=\"400px\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://python.org/\" target=\"_blank\"\u003e\u003cimg alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/yutto?logo=python\u0026style=flat-square\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://pypi.org/project/yutto/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/yutto?style=flat-square\" alt=\"pypi\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://pypi.org/project/yutto/\" target=\"_blank\"\u003e\u003cimg alt=\"PyPI - Downloads\" src=\"https://img.shields.io/pypi/dm/yutto?style=flat-square\"\u003e\u003c/a\u003e\n   \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"LICENSE\" src=\"https://img.shields.io/github/license/yutto-dev/yutto?style=flat-square\"\u003e\u003c/a\u003e\n   \u003cbr/\u003e\n   \u003ca href=\"https://github.com/astral-sh/uv\"\u003e\u003cimg alt=\"uv\" src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json\u0026style=flat-square\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://github.com/astral-sh/ruff\"\u003e\u003cimg alt=\"ruff\" src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\u0026style=flat-square\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://gitmoji.dev\"\u003e\u003cimg alt=\"Gitmoji\" src=\"https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67?style=flat-square\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://discord.gg/5cQGyFwsqC\"\u003e\u003cimg src=\"https://img.shields.io/badge/chat-discord-5d24a3?logo=discord\u0026style=flat-square\" alt=\"discord chat\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003e🧊 yutto，一个可爱且任性的 B 站视频下载器（CLI）\u003c/strong\u003e\u003c/p\u003e\n\n**完整静态文档在这里喔 → [yutto](https://yutto.nyakku.moe/)**\n\n\u003e [!TIP]\n\u003e\n\u003e 如果在使用过程中遇到问题，请通过 [Issues](https://github.com/yutto-dev/yutto/issues) 反馈功能正确性问题和功能请求，其他问题请通过 [Discussions](https://github.com/yutto-dev/yutto/discussions) 反馈～\n\n## 什么是 yutto？\n\nyutto 是一个 B 站视频下载器，它可以帮助你下载 B 站上的投稿视频、番剧、课程等资源，支持单个视频下载、批量下载等功能，就像这样：\n\n```bash\n❯ yutto https://www.bilibili.com/video/BV1ZEf9YiE2h/\n INFO  发现配置文件 yutto.toml，加载中……\n 大会员  成功以大会员身份登录～\n 投稿视频  植物大战僵尸融合版2.2正式版宣传片\n INFO  开始处理视频 植物大战僵尸融合版2.2正式版宣传片\n INFO  共包含以下 15 个视频流：\n INFO  * 0 [AVC ] [1920x1080] \u003c1080P 60帧\u003e #3\n INFO    1 [HEVC] [1920x1080] \u003c1080P 60帧\u003e #3\n INFO    2 [AV1 ] [1920x1080] \u003c1080P 60帧\u003e #3\n INFO    3 [AVC ] [1920x1080] \u003c1080P 高清\u003e #3\n INFO    4 [HEVC] [1920x1080] \u003c1080P 高清\u003e #3\n INFO    5 [AV1 ] [1920x1080] \u003c1080P 高清\u003e #3\n INFO    6 [AVC ] [1280x720 ] \u003c720P 高清 \u003e #3\n INFO    7 [HEVC] [1280x720 ] \u003c720P 高清 \u003e #3\n INFO    8 [AV1 ] [1280x720 ] \u003c720P 高清 \u003e #3\n INFO    9 [AVC ] [ 852x480 ] \u003c480P 清晰 \u003e #3\n INFO   10 [HEVC] [ 852x480 ] \u003c480P 清晰 \u003e #3\n INFO   11 [AV1 ] [ 852x480 ] \u003c480P 清晰 \u003e #3\n INFO   12 [AVC ] [ 640x360 ] \u003c360P 流畅 \u003e #3\n INFO   13 [HEVC] [ 640x360 ] \u003c360P 流畅 \u003e #3\n INFO   14 [AV1 ] [ 640x360 ] \u003c360P 流畅 \u003e #3\n INFO  共包含以下 3 个音频流：\n INFO  * 0 [MP4A] \u003c320kbps \u003e\n INFO    1 [MP4A] \u003c 64kbps \u003e\n INFO    2 [MP4A] \u003c128kbps \u003e\n 弹幕  ASS 弹幕已生成\n INFO  开始下载……\n━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━  39.05 MiB/ 72.13 MiB 32.22 MiB/⚡\n```\n\n## 从安装开始～\n\n### 包管理器一键安装啦\n\n目前 yutto 已经可以通过部分包管理器直接安装～\n\n使用 Homebrew 的用户可以尝试下下面的命令：\n\n```bash\nbrew tap siguremo/tap\nbrew install yutto\n```\n\nArch Linux 用户可以从 [AUR](https://aur.archlinux.org/packages/yutto)（感谢 @ouuan）或 [archlinuxcn](https://github.com/archlinuxcn/repo) 安装：\n\n```bash\n# 从 AUR 安装\nyay -S yutto      # 适用于 yay 用户\nparu -S yutto     # 适用于 paru 用户\n# 或者从 archlinuxcn 安装\nsudo pacman -S yutto\n```\n\n### 使用 Docker\n\n你也可以尝试使用 docker 直接运行 yutto（具体如何运行需要参考下后面的内容～）\n\n```bash\ndocker run --rm -it -v /path/to/download:/app siguremo/yutto \u003curl\u003e [options]\n```\n\n与直接运行 yutto 不同的是，这里的下载目标路径是通过 `-v \u003cpath\u003e:/app` 指定的，也就是说 docker 里的 yutto 会将内容下载到 docker 里的 `/app` 目录下，与之相对应的挂载点 `\u003cpath\u003e` 就是下载路径。你也可以直接挂载到 `$(pwd)`，此时就和本机 yutto 的默认行为一致啦，也是下载到当前目录下～\n\n### pip/pipx/uv 安装\n\n\u003e [!TIP]\n\u003e\n\u003e 在此之前请确保安装 Python3.10 及以上版本，并配置好 FFmpeg（参照 [bilili 文档](https://bilili.nyakku.moe/guide/getting-started.html)）\n\n```bash\npip install yutto\n```\n\n当然，你也可以通过 [pipx](https://github.com/pypa/pipx)/[uv](https://github.com/astral-sh/uv) 来安装 yutto（当然，前提是你要自己先安装它）\n\n```bash\npipx install yutto      # 使用 pipx\nuv tool install yutto   # 或者使用 uv\n```\n\npipx/uv 会类似 Homebrew 无感地为 yutto 创建一个虚拟环境，与其余环境隔离开，避免污染 pip 的环境，因此相对于 pip，pipx/uv 是更推荐的安装方式（uv 会比 pipx 更快些～）。\n\n### 体验 main 分支最新特性\n\n\u003e [!TIP]\n\u003e\n\u003e 这同样要求你自行配置 Python 和 FFmpeg 环境\n\n有些时候有一些在 main 分支还没有发布的新特性或者 bugfix，你可以尝试直接安装 main 分支的代码，最快的方式仍然是通过 pip 安装，只不过需要使用 git 描述符\n\n```bash\npip install git+https://github.com/yutto-dev/yutto@main                 # 通过 pip\npipx install git+https://github.com/yutto-dev/yutto@main                # 通过 pipx\nuv tool install git+https://github.com/yutto-dev/yutto.git@main         # 通过 uv\n```\n\n## 主要功能\n\n### 基本命令\n\nyutto 的基本命令如下：\n\n```bash\nyutto \u003curl\u003e\n```\n\n你可以通过 `yutto -h` 查看详细命令参数。\n\n如果你需要下载**单个**视频，只需要使用 yutto 加上这个视频的地址即可。它支持 av/BV 号以及相应带 p=n 参数的投稿视频页面，也支持 ep 号（episode_id）的番剧页面。\n\n比如只需要这样你就可以下载[《転スラ日記》](https://www.bilibili.com/bangumi/play/ep395211)第一话：\n\n```bash\nyutto https://www.bilibili.com/bangumi/play/ep395211\n```\n\nyutto 还支持直接使用能够唯一定位资源的 id 来作为 `\u003curl\u003e`，刚刚的功能与下面的简化后的命令功能是完全一样的\n\n```bash\nyutto ep395211\n```\n\n不过有时你可能想要批量下载很多剧集，因此 yutto 提供了用于批量下载的参数 `-b/--batch`，它不仅支持前面所说的单个视频所在页面地址（会解析该单个视频所在的系列视频），还支持一些明确用于表示系列视频的地址，比如 md 页面（media_id）、ss 页面（season_id）。\n\n比如像下面这样就可以下载《転スラ日記》所有已更新的剧集：\n\n```bash\nyutto --batch https://www.bilibili.com/bangumi/play/ep395211\n```\n\n### 更多功能\n\nyutto 还支持很多功能，限于篇幅不在 `README` 中展示，你可以前往 [yutto 文档](https://yutto.nyakku.moe/) 查看更多详细内容～\n\n## 其他应用\n\n你也可以通过这些应用来使用 yutto\n\n-  [KubeSpider](https://github.com/opennaslab/kubespider): 一个多功能全局资源编排下载系统，支持下载、订阅各类资源网站～\n\n## Roadmap\n\n### 2.0.0\n\n-  [x] feat: 支持弹幕字体、字号、速度等设置\n-  [x] feat: 配置文件支持\n-  [x] feat: 配置文件功能优化，支持自定义配置路径\n-  [x] docs: issue template 添加配置引导\n-  [x] docs: 优化 biliass rust 重构后的贡献指南\n\n### future\n\n-  [x] docs: 可爱的静态文档（WIP in [#86](https://github.com/yutto-dev/yutto/pull/86)）\n-  [ ] feat: 新的基于 toml 的任务列表\n-  [ ] refactor: 配置参数复用 pydantic 验证\n-  [ ] refactor: 针对视频合集优化路径变量\n-  [ ] refactor: 优化杜比视界/音效/全景声选取逻辑（Discussing in [#62](https://github.com/yutto-dev/yutto/discussions/62)）\n-  [ ] refactor: 直接使用 rich 替代内置的终端显示模块\n-  [ ] feat: 更多批下载支持\n-  [ ] feat: 以及更加可爱～\n\n## 参与贡献\n\n请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyutto-dev%2Fyutto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyutto-dev%2Fyutto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyutto-dev%2Fyutto/lists"}