Youtube-下载播放列表-Youtube-dl

我正在下载 播放列表上的所有视频:

我正在使用 youtube-dl 进行此操作,命令是:

youtube-dl -citk –format mp4 –yes-playlist https://www.youtube.com/watch?v=7Vy8970q0Xc&list=PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2

但这只是下载第一个视频。不知道我做错了什么。

358515 次浏览

从 URL 中删除 v=...&部分,并且只保留 list=...部分。主要问题是由 shell 解释的特殊字符 &

您还可以在命令中引用“ url”。

更多资料(例如) :

Https://askubuntu.com/questions/564567/how-to-download-playlist-from-youtube-dl

在 shell 中,&是一个特殊的字符,建议 shell 在后台启动所有的 & 进程。为了避免这种行为,您可以将 URL 放在引号中。有关更多信息,请参见 Youtube-dl 常见问题解答

还要小心 -citk。除了 -i,这些选项没什么意义。有关更多信息,请参见 Youtube-dl 常见问题解答。甚至 -f mp4看起来也很奇怪。

所以你想要的是:

youtube-dl -i -f mp4 --yes-playlist 'https://www.youtube.com/watch?v=7Vy8970q0Xc&list=PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2'

或者,你也可以使用播放列表 ID:

youtube-dl -i PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2

以上的方法我都试过了,但没有一个能解决我的问题。我通过更新旧版本的 youtube-dl 下载播放列表来修复它。 更新一下

sudo youtube-dl -U

或者

youtube-dl -U

在使用上述命令成功更新之后

youtube-dl -cit https://www.youtube.com/playlist?list=PLttJ4RON7sleuL8wDpxbKHbSJ7BH4vvCk

在多次尝试解决这个问题之后,我找到了最好的解决办法。

安装和使用;

对于 Windows 用户:

剧本:

youtube-dl --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist https://www.youtube.com/playlist?list={your-youtube-playlist-id}
  • 官方网站下载 youtube-dl.exe 文件。
  • 官方网站下载 ffmpeg,用于将 WebM 转换为 MP3(推荐的构建版本)
  • 解压缩所有的 zip 文件,并将 youtube-dl.exe、 ffmpeg.exe 和 ffprobe.exe 文件移动到希望下载的 MP3文件所在的文件夹中。
  • 在同一文件夹中打开 cmd (Windows 终端)。
  • 将脚本 {your-youtube-playlist-id}参数替换为 YouTube 播放列表 id。
  • 运行脚本。

对于 macOS/Linux 用户:

剧本:

youtube-dl --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist 'https://www.youtube.com/playlist?list={your-youtube-playlist-id}'
  • 打开终端,如果没有 自酿的,安装它(Linux 用户可以跳过这一步)
  • 运行 brew install youtube-dl ffmpeg并安装 youtube-dl 和 ffmpeg,以便将 WebM 转换为 MP3。(安装其他依赖项可能需要更长时间。)(对于 Linux 用户: install youtube-dl ffmpeg)
  • 打开要下载 MP3文件的文件夹中的终端。
  • 将脚本 {your-youtube-playlist-id}参数替换为 YouTube 播放列表 id。
  • 运行脚本。

你的链接不是播放列表。

正确的播放列表 URL 如下所示:

https://www.youtube.com/playlist?list=PLHSdFJ8BDqEyvUUzm6R0HxawSWniP2c9K

你的 URL 只是第一个视频 某个播放列表。它包含 https://www.youtube.com/watch?而不是 https://www.youtube.com/playlist?

通过点击视频列表右侧播放列表的标题来选择播放列表,并使用此 URL。

最简单的方法是创建一个 file.txt文件并传递链接 URL 链接,如下所示:

https://www.youtube.com/watch?v=5Lj1BF0Kn8c&list=PL9YFoJnn53xyf9GNZrtiraspAIKc80s1i

确保在终端中包含 -a参数:

youtube-dl -a file.txt

一些命令,您可能会发现有用的同时下载播放列表

下载播放列表

youtube-dl <playlist link>

最佳质量的视频和最佳质量的音频(合并) + 首选分辨率

youtube-dl -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>

这个命令将下载视频在1080p 的分辨率,如果1080p 是可用的,否则它将下载下一个最好的(小于1080p)的分辨率。在这里,您可以使用480或720等而不是1080。

注意: 请确保已安装“ FFmpeg”,否则视频和音频将不会合并。

最佳质量的视频和最佳质量的音频(合并) + 首选分辨率 + 添加视频上传日期的文件名

youtube-dl -o "[%(upload_date)s] %(title)s.%(ext)s" -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]'  <playlist link>

最佳质量的视频和最佳质量的音频(合并) + 首选分辨率 + 添加视频上传日期的文件名 + 添加上传名称的文件名

youtube-dl -o "[%(upload_date)s] %(title)s [%(uploader)s].%(ext)s" -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>

字幕

最佳质量视频和最佳质量音频(合并) + 首选分辨率 + 下载自动生成的字幕

youtube-dl --write-auto-sub -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]'  <playlist link>

最佳质量视频和最佳质量音频(合并) + 首选分辨率 + 下载视频创建者上传的副标题

youtube-dl --write-sub -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>

最佳质量视频和最佳质量音频合并 + 首选分辨率 + 下载视频创建者上传的特定语言的副标题

youtube-dl --write-sub --sub-lang en -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]'  <playlist link>

基本上,解决这个问题的方法可以是简单地将 &符号替换为它的编码版本 %26

对于那些正在通过 PHP (例如 shell_exec())解决这个问题的人来说,解决方案可以是 str_replace("&", "%26", $shell_command);