如何使用yt-dlp命令行搜索并下载带有人工字幕/隐藏字幕的视频
如何使用yt-dlp命令行搜索并下载带有人工字幕/隐藏字幕的视频
我来帮你搞定这个问题!你已经在网页端发现通过添加&sp=EgIoAQ参数能精准筛选出带有人工字幕的视频,这个逻辑完全可以平移到yt-dlp的命令行操作里——核心就是让筛选在搜索阶段就生效,而不是等搜索结果出来后再过滤。
先解释下你之前遇到的问题:--match-filter=requested_subtitles之所以没用,是因为这个过滤是在yt-dlp拿到所有搜索结果之后才执行的。如果搜索结果里排在第一位的视频没有字幕,它还是会下载那个不符合要求的视频,根本达不到你想要的“只搜带人工字幕内容”的目的。
而正确的做法是直接把网页端的筛选参数整合到yt-dlp的搜索规则里,具体命令如下:
yt-dlp --embed-subs --default-search="ytsearch1:sp=EgIoAQ" '"A year ago last Thursday"'
我拆解下这个命令的关键部分:
ytsearch1:表示让yt-dlp用YouTube原生搜索,并且只取搜索结果里的第一个视频(你可以把数字1改成其他数字,比如5来获取前5个结果)sp=EgIoAQ就是你在网页里用到的筛选参数,它对应YouTube搜索页“字幕”选项下的人工字幕(正好符合你不需要机器生成字幕的要求)--embed-subs保持你原来的需求,把字幕嵌入到下载的视频里
这样操作后,yt-dlp在搜索阶段就只会返回带有人工字幕的视频,直接下载第一个符合要求的结果,完美解决你之前下载到无字幕视频的问题。
备注:内容来源于stack exchange,提问作者hackerb9




