使用 youtube.com 搜索 URL 作为播放列表

使用 youtube.com 搜索 URL 作为播放列表

yt-dlp可以从命令行在网络上搜索视频并下载第一个结果,但我想将搜索限制为带有隐藏式字幕(㏄)或字幕的结果(如果有)。

例如,下面返回一个没有字幕的视频,这不是我想要的:

yt-dlp --embed-subs --default-search=auto '"A year ago last Thursday"'

我知道这应该是可能的,因为我可以通过在 Web 浏览器中附加以下内容来进行我想要的搜索&sp=EgIoAQ到搜索 URL,如下所示:

如何使用 yt-dlp 从命令行执行此操作?


注 1:我只想要人工生成的字幕,而不是机器生成的字幕。

笔记2:--match-filter=requested_subtitles不起作用,因为过滤是在搜索之后执行的。

答案1

使用 youtube.com 搜索 URL 作为播放列表

yt-dlp --embed-subs --playlist-items 1:1 \
  'http://youtube.com/results?search_query=makeba&sp=EgIoAQ%253D%253D' 

这将仅下载带有隐藏字幕(CC)的顶级结果。

歌曲/视频的包装脚本

如果你觉得输入太多了,我制作了一个 bash 脚本来完成搜索和下载歌曲音频(包括歌词)。你可以从以下位置下载:https://github.com/hackerb9/getsong/。如果你有一个 UNIX 系统,它使用起来就相当容易:

getsong -c "A week ago last Thursday"

请注意,脚本需要-c将搜索限制为带有隐藏字幕的结果的选项。(请参阅下面的注意事项,了解我为何保持默认关闭状态)。

如果您重命名脚本getvideo,它将下载视频,而不仅仅是音频。

注意事项

请注意,此答案并未完全满足要求:它不是简单地优先显示带有隐藏字幕的结果,而是要求显示字幕。理想情况下,如果所需视频没有字幕,我们会收到错误消息,但 YouTube 会混淆并忽略搜索词,直到找到带有隐藏字幕的错误视频。

另一个可能的问题:我曾希望通过这种方式将歌词与歌曲同步,但 YouTube 不会考虑字幕的质量甚至数量,只会考虑字幕是否存在。有时,我会遇到只包含一个字幕的文件,上面写着“

相关内容