我想知道是否可以使用 下载 YouTube 播放列表为 mp3 youtube-dl
,跳过已经存在的文件。我正在使用以下命令:
youtube-dl --continue --ignore-errors --no-overwrites --extract-audio --audio-format mp3 --output "%(title)s.%(ext)s" [path here]
并且,即使我将其设置为不覆盖,它也会从头开始重新下载所有内容。这可能吗?
答案1
使用选项--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]
它会重新下载您之前未保留的所有视频,因为它会创建列表。您现在可以删除它们。
如果您的 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
答案2
这真的很有帮助。如果对任何人有用,我修改了代码以创建现有的下载列表,以包含文件夹中的所有文件。如果使用和--extract-audio
标志--audio-quality "best"
下载音频,则很有用
create_download_list.sh
:
#!/usr/bin/env bash
for n in *.*
do if [[ "$n" =~ -([-_0-9a-zA-Z]{11}).*$ ]]
then echo "youtube ${BASH_REMATCH[1]}"
fi
done > downloaded.txt
我确信大多数人可以自己解决这个问题,但并不是每个人都熟悉 Bash 脚本。
答案3
我采用以下方法:
yt-dlp --download-archive downloaded.txt --no-post-overwrites -ciwx "put format here" "put url here"
我使用下面的代码下载包含大量视频的 YouTube 播放列表,这也需要会员资格。
yt-dlp --cookies cookies.txt --download-archive downloaded.txt --no-post-overwrites -ciwx "put format here" "put url here"