使用 youtube-dl 下载 youtube 播放列表,跳过现有文件

War*_*ior 41 youtube-dl

我想知道是否可以使用 将 youtube 播放列表下载为 mp3 youtube-dl,跳过现有文件。我正在使用这个命令:

youtube-dl --continue --ignore-errors --no-overwrites --extract-audio --audio-format mp3 --output "%(title)s.%(ext)s" [path here]
Run Code Online (Sandbox Code Playgroud)

而且,即使我将其设置为不覆盖,它也会从头开始重新下载所有内容。这可能吗?

Mar*_*ton 76

使用选项--download-archive FILE youtube-dl可以读取并添加到不再下载的文件列表中。每次成功下载文件时,该视频 ID 都会添加到FILE.

您可以按如下方式使用它:

youtube-dl --download-archive downloaded.txt --no-post-overwrites -ciwx --audio-format mp3 -o "%(title)s.%(ext)s" [path here]
Run Code Online (Sandbox Code Playgroud)

它会在创建列表时重新下载您上次没有保留的任何视频。您现在可以删除它们。

如果您的 MP3 文件已使用默认格式命名,则%(title)s-%(id)s.%(ext)s您可以通过在 bash 终端中downloaded.txt从 youtube创建来避免重新下载,%(id)s如下所示:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done
Run Code Online (Sandbox Code Playgroud)

  • `-cwix` 是 `--continue --no-overwrites --ignore-errors --extract-audio` 的更短替代方案 (5认同)
  • 这里有有价值的答案。它解决了我的问题。谢谢。 (2认同)
  • 值得一提的是,虽然这对 YouTube 非常有效,但 youtube-dl 也适用于其他网站(例如 Soundcloud),其中 `-x` 选项似乎破坏了输出。如果您从音频源下载,则可以安全地删除该标志。 (2认同)

小智 6

这真的很有帮助。如果它对任何人有用,我修改了代码以创建现有的下载列表以包含文件夹中的所有文件。如果下载带有--extract-audio--audio-quality "best"标志的音频很有用

for n in *.*
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.*$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done
Run Code Online (Sandbox Code Playgroud)

我相信大多数人都可以自己解决这个问题,但并不是每个人都熟悉 bash 脚本。