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

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

我想知道是否可以使用 下载 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"

相关内容