Yt-dlp – [公告] Bun 支持现已受限并弃用

Hacker News Top 工具

摘要

yt-dlp 宣布,对 Bun 运行时的支持现已受限并弃用。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/22 18:25

yt-dlp/yt-dlp

源码:https://github.com/yt-dlp/yt-dlp
YT-DLP 发布版本 PyPI 捐赠 Discord 支持的站点 许可证:Unlicense CI状态 提交历史 最后提交

yt-dlp 是一个功能丰富的命令行音视频下载器,支持数千个站点。该项目是 youtube-dl(https://github.com/ytdl-org/youtube-dl)的一个分支,基于已不再活跃的 youtube-dlc(https://github.com/blackjack4494/yt-dlc)。

安装

Windows(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe)
Unix(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp)
MacOS(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos)
PyPI(https://pypi.org/project/yt-dlp)
源码压缩包(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz)
其他变体
所有版本(https://github.com/yt-dlp/yt-dlp/releases)

你可以使用二进制文件、pip(https://pypi.org/project/yt-dlp)或第三方包管理器来安装 yt-dlp。详细指南请参见 wiki(https://github.com/yt-dlp/yt-dlp/wiki/Installation)

发布文件

推荐

文件说明
yt-dlp(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp)平台无关的 zipimport(https://docs.python.org/3/library/zipimport.html)二进制文件。需要 Python(推荐用于 Linux/BSD)
yt-dlp.exe(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe)Windows(Win8+)独立 x64 二进制文件(推荐用于 Windows)
yt-dlp_macos(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos)通用 MacOS(10.15+)独立可执行文件(推荐用于 MacOS)

替代方案

文件说明
yt-dlp_linux(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux)Linux(glibc 2.17+)独立 x86_64 二进制文件
yt-dlp_linux.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux.zip)未打包的 Linux(glibc 2.17+)x86_64 可执行文件(无自动更新)
yt-dlp_linux_aarch64(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64)Linux(glibc 2.17+)独立 aarch64 二进制文件
yt-dlp_linux_aarch64.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64.zip)未打包的 Linux(glibc 2.17+)aarch64 可执行文件(无自动更新)
yt-dlp_linux_armv7l.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_armv7l.zip)未打包的 Linux(glibc 2.31+)armv7l 可执行文件(无自动更新)
yt-dlp_musllinux(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_musllinux)Linux(musl 1.2+)独立 x86_64 二进制文件
yt-dlp_musllinux.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_musllinux.zip)未打包的 Linux(musl 1.2+)x86_64 可执行文件(无自动更新)
yt-dlp_musllinux_aarch64(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_musllinux_aarch64)Linux(musl 1.2+)独立 aarch64 二进制文件
yt-dlp_musllinux_aarch64.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_musllinux_aarch64.zip)未打包的 Linux(musl 1.2+)aarch64 可执行文件(无自动更新)
yt-dlp_x86.exe(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_x86.exe)Windows(Win8+)独立 x86(32位)二进制文件
yt-dlp_win_x86.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_win_x86.zip)未打包的 Windows(Win8+)x86(32位)可执行文件(无自动更新)
yt-dlp_arm64.exe(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_arm64.exe)Windows(Win10+)独立 ARM64 二进制文件
yt-dlp_win_arm64.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_win_arm64.zip)未打包的 Windows(Win10+)ARM64 可执行文件(无自动更新)
yt-dlp_win.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_win.zip)未打包的 Windows(Win8+)x64 可执行文件(无自动更新)
yt-dlp_macos.zip(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_macos.zip)未打包的 MacOS(10.15+)可执行文件(无自动更新)

杂项

文件说明
yt-dlp.tar.gz(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz)源码压缩包
SHA2-512SUMS(https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-512SUMS)GNU 风格的 SHA512 校验和
SHA2-512SUMS.sig(https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-512SUMS.sig)SHA512 校验和的 GPG 签名文件
SHA2-256SUMS(https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-256SUMS)GNU 风格的 SHA256 校验和
SHA2-256SUMS.sig(https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-256SUMS.sig)SHA256 校验和的 GPG 签名文件

可用于验证 GPG 签名的公钥位于此处(https://github.com/yt-dlp/yt-dlp/blob/master/public.key)

用法示例:

curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import
gpg --verify SHA2-256SUMS.sig SHA2-256SUMS
gpg --verify SHA2-512SUMS.sig SHA2-512SUMS

许可声明

虽然 yt-dlp 本身采用 Unlicense 许可,但许多发布文件中包含来自其他项目的代码,这些代码使用不同许可。最值得注意的是,打包了 PyInstaller 的可执行文件包含 GPLv3+ 许可的代码,因此整个衍生作品采用 GPLv3+(https://www.gnu.org/licenses/gpl-3.0.html)许可。
zipimport Unix 可执行文件(yt-dlp)包含来自 meriyah(https://github.com/meriyah/meriyah)的 ISC(https://github.com/meriyah/meriyah/blob/main/LICENSE.md)许可代码和来自 astring(https://github.com/davidbonnet/astring)的 MIT(https://github.com/davidbonnet/astring/blob/main/LICENSE)许可代码。更多详情请参见 THIRD_PARTY_LICENSES.txt。

Git 仓库、源码压缩包(yt-dlp.tar.gz)、PyPI 源码分发版以及 PyPI 构建分发版(wheel)仅包含 Unlicense 许可的代码。

注意:手册页、shell 补全(自动完成)文件等位于源码压缩包内(https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz)

更新

如果你使用的是发布二进制文件,可以通过 yt-dlp -U 来更新。

如果你通过 pip(https://github.com/yt-dlp/yt-dlp/wiki/Installation#with-pip)安装,只需重新运行安装程序时使用的命令即可。

对于其他第三方包管理器,请参见 wiki(https://github.com/yt-dlp/yt-dlp/wiki/Installation#third-party-package-managers)或参考其文档。

目前二进制文件有三个发布频道:stable(稳定版)、nightly(每日构建版)和 master(主分支版)。

  • stable 是默认频道,发布节奏(大致)每月一次。虽然它被命名为“稳定版”,因为其许多更改已由 nightly 或 master 频道的用户测试过,但最新的 stable 版本往往“过时”,容易因外部变化(例如网站改版导致 yt-dlp 失效)而出现问题。
  • nightly 频道每天 UTC 时间接近午夜时发布代码更改的版本。该频道反映了项目的开发快照,是 yt-dlp 常规用户的推荐频道。 nightly 发布版可以从 yt-dlp/yt-dlp-nightly-builds(https://github.com/yt-dlp/yt-dlp-nightly-builds/releases)获取,也可以作为 yt-dlp PyPI 包的开发版本(可通过 pip 的 --pre 标志安装)获取。
  • master 频道提供“金丝雀”版本,在每次推送到主分支后立即发布。该频道始终提供最新的修复和功能,但可能更容易出现错误或回归。master 发布版可从 yt-dlp/yt-dlp-master-builds(https://github.com/yt-dlp/yt-dlp-master-builds/releases)获取。

使用 --update/-U 时,发布二进制文件只会更新到其当前频道。可以使用 --update-to CHANNEL 切换到不同的频道(如果有较新版本)。也可以使用 --update-to [CHANNEL@]TAG 来升级或降级到某个频道的特定标签。还可以使用 --update-to (/)切换到另一个完全不同的仓库的频道。不过要注意更新到哪个仓库,因为不同仓库的二进制文件不经过验证。

用法示例:

  • yt-dlp --update-to master 切换到 master 频道并更新到其最新版本
  • yt-dlp --update-to [email protected] 升级/降级到 stable 频道的标签 2023.07.06
  • yt-dlp --update-to 2023.10.07 升级/降级到当前频道的标签 2023.10.07(如果存在)
  • yt-dlp --update-to example/[email protected] 升级/降级到 example/yt-dlp 仓库的版本,标签 2023.09.24

重要:任何遇到 stable 版本问题的用户,应在提交错误报告前安装或更新到 nightly 版本:

# 从稳定版可执行文件/二进制文件更新到 nightly:
yt-dlp --update-to nightly
# 用 pip 安装 nightly:
python -m pip install -U --pre "yt-dlp[default]"

当运行的 yt-dlp 版本超过 90 天时,你会看到一条提示更新到最新版本的警告信息。可以通过在命令或配置文件中添加 --no-update 来禁用此警告。

依赖项

支持 Python 3.10+(CPython)和 3.11+(PyPy)。其他版本和实现可能无法正常工作或完全不能工作。虽然所有其他依赖项都是可选的,但强烈推荐使用 ffmpeg、ffprobe、yt-dlp-ejs 以及一个受支持的 JavaScript 运行时/引擎。

强烈推荐

  • ffmpeg 和 ffprobe(https://www.ffmpeg.org)—— 必需用于合并分离的视频和音频文件,以及各种后处理任务。许可证取决于构建方式(https://www.ffmpeg.org/legal.html)。由于 ffmpeg 是非常重要的依赖,我们在 yt-dlp/FFmpeg-Builds(https://github.com/yt-dlp/FFmpeg-Builds)提供了自己的构建版本。过去曾对这些构建版本应用补丁以修复 yt-dlp 用户的常见问题,但目前我们的构建版本与上游 ffmpeg 相同。详情请参见 readme(https://github.com/yt-dlp/FFmpeg-Builds#patches-applied) 重要:你需要的是 ffmpeg 二进制文件,而不是同名的 Python 包(https://pypi.org/project/ffmpeg)

  • yt-dlp-ejs(https://github.com/yt-dlp/ejs)—— 必需用于完整的 YouTube 支持。采用 Unlicense(https://github.com/yt-dlp/ejs/blob/main/LICENSE)许可,包含 MIT(https://github.com/davidbonnet/astring/blob/main/LICENSE)和 ISC(https://github.com/meriyah/meriyah/blob/main/LICENSE.md)组件。还需要一个 JavaScript 运行时/引擎,如 deno(https://deno.land)(推荐)、node.js(https://nodejs.org)、bun(https://bun.sh)或 QuickJS(https://bellard.org/quickjs/)来运行 yt-dlp-ejs。请参见 wiki(https://github.com/yt-dlp/yt-dlp/wiki/EJS)

网络

  • certifi(https://github.com/certifi/python-certifi)*—— 提供 Mozilla 根证书包。采用 MPLv2(https://github.com/certifi/python-certifi/blob/master/LICENSE)许可
  • brotli(https://github.com/google/brotli)* 或 brotlicffi(https://github.com/python-hyper/brotlicffi)—— Brotli(https://en.wikipedia.org/wiki/Brotli)内容编码支持。两者均采用 MIT 许可 [1](https://github.com/google/brotli/blob/master/LICENSE)[2](https://github.com/python-hyper/brotlicffi/blob/master/LICENSE)
  • websockets(https://github.com/aaugustin/websockets)*—— 用于通过 WebSocket 下载。采用 BSD-3-Clause(https://github.com/aaugustin/websockets/blob/main/LICENSE)许可
  • requests(https://github.com/psf/requests)*—— HTTP 库。用于 HTTPS 代理和持久连接支持。采用 Apache-2.0(https://github.com/psf/requests/blob/main/LICENSE)许可

模拟浏览器

以下提供对模拟浏览器请求的支持。某些使用 TLS 指纹识别的站点可能需要此功能。

  • curl_cffi(https://github.com/lexiforest/curl_cffi)(推荐)—— curl-impersonate(https://github.com/lexiforest/curl-impersonate)的 Python 绑定。提供 Chrome、Edge 和 Safari 的模拟目标。采用 MIT(https://github.com/lexiforest/curl_cffi/blob/main/LICENSE)许可
    • 可以通过 curl-cffi 附加组件安装,例如 pip install "yt-dlp[default,curl-cffi]"
    • 目前包含在大多数构建版本中,除了 yt-dlp(Unix zipimport 二进制文件)和 yt-dlp_x86(Windows 32位)

元数据

  • mutagen(https://github.com/quodlibet/mutagen)*—— 用于在某些格式中嵌入缩略图(--embed-thumbnail)。采用 GPLv2+(https://github.com/quodlibet/mutagen/blob/master/COPYING)许可
  • AtomicParsley(https://github.com/wez/atomicparsley)—— 用于在 mp4/m4a 文件中嵌入缩略图(当 mutagen/ffmpeg 无法完成时)。采用 GPLv2+(https://github.com/wez/atomicparsley/blob/master/COPYING)许可
  • xattr(https://github.com/xattr/xattr)、pyxattr(https://github.com/iustin/pyxattr)或 setfattr(http://savannah.nongnu.org/projects/attr)—— 用于在 Mac 上写入 xattr 元数据(--xattrs)。

相似文章

Electrobun 2.0 将因改用 Rust 重写而与 Bun 解耦

Hacker News Top

Electrobun 2.0 将因改用 Rust 重写而与 Bun 解耦,并将为 Rust、Zig、Go 等提供一等支持;yt-dlp 对 Bun 的支持已被弃用,原因是存在 vibe coding 问题以及供应链攻击。

yt-dlp/yt-dlp

GitHub Trending (daily)

yt-dlp 是一个功能丰富的命令行音视频下载器,支持数千个网站,从 youtube-dl 分支而来。

用Rust重写Bun

Hacker News Top

Bun,这个JavaScript运行时和工具链,正在从Zig重写为Rust,以提高内存安全性和稳定性,解决一系列use-after-free和内存泄漏错误。

Bun 的 Rust 重写已合并

Hacker News Top

Bun JavaScript 运行时和工具包已用 Rust 重写,标志着从原本的 Zig 实现发生了重大转变。

Bun 已转换为 Rust。接下来怎么办?

Hacker News Top

Anthropic 收购了 Bun,并使用 Claude Code 智能体在九天内将整个运行时从 Zig 重写为 Rust。该重写通过了 99.8% 的测试,但引入了超过 10,000 个 unsafe 块,引发了对内存安全性益处的质疑。