如何将 YouTube 播放列表作为 mp3 文件同步到本地文件夹?

如何将 YouTube 播放列表作为 mp3 文件同步到本地文件夹?

是否可以将公共 YouTube 播放列表作为 mp3 文件同步到本地文件夹?

主要特点:

  • 如果播放列表中添加了新视频,则将 mp3 文件添加到本地文件夹
  • 如果相应视频从播放列表中删除,则删除本地文件夹中的 mp3 文件

答案1

您可以使用GitHub repo,它似乎完全符合您的要求。
或者,您可以使用普通的youtube-dlwith --download-archive,如 youtube-dl 的手册页中所示,尽管这不会删除任何视频:

如何仅从播放列表中下载新视频?

使用下载存档功能。使用此功能时,您首先应下载完整的播放列表,--download-archive path/to/download/archive/file.txt该播放列表会将所有视频的标识符记录在一个特殊文件中。每次使用相同的功能运行后,--download-archive只会下载新视频,并跳过之前已下载的所有视频。请注意,只有成功的下载才会记录在文件中。

例如,首先,
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
将下载完整的 PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re 播放列表并创建文件 archive.txt。 每次后续运行只会下载新视频(如果有):
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"

答案2

这更多的是一种变通方法而不是直接答案,但是如果您不介意偶尔重新下载一些较旧的播放列表文件,您可以设置一个 cronjob 来使用 查找和删除目标目录中的文件find

您应该查看播放列表并估计文件通常会在列表中保留多长时间才会消失,并将该天数用作变量。在我的示例中,我选择了 30 天。

以下是 cron 作为 @daily 作业运行的示例 Bash 脚本:

#! /bin/bash

# Delete all files in a directory older than 30 days
# (careful, this is recursive and will delete files in subdirectories)
find /PATH/TO/youtube-dl-playlist-files -mtime +30 -delete

任何仍在播放列表中但超过 30 天的文件都将被删除,youtube-dl 会在您下次运行时重新下载它们。这不是最佳选择,但可能已经足够好了。

相关内容