我在从YouTube视频中提取自动字幕时遇到问题。
我尝试使用http://video.google.com/timedtext?type=track&v=3wszM2SA12E&name=Automatic&lang=en方法,但该方法仅适用于那些已命名轨道的视频。例如,这个没有任何命名的轨道(只有自动标题)并且没有加载:rrkrvAUbU9Y
有几个网络应用程序可以做到这一点(如http://www.serpsite.com/youtube-subtitles-download-tool/和http://mo.dbxdb.com/),但我需要一个脚本,因为我想将它用于我的研究。
任何人都有任何想法得到这个的正确方法是什么? YouTube的API有关于字幕的内容,但仅针对注册用户,而上述应用适用于所有视频,我怀疑他们只是从页面中捕获html代码(虽然这也是可能的)。一定有办法......请帮忙!
答案 0 :(得分:4)
您需要先调用另一个API:http://video.google.com/timedtext?type=list&v=3wszM2SA12E
这将为您提供可用曲目列表。在您的情况下,只能获得一个曲目:id="0" name="Automatic" lang_code="en" lang_original="English" lang_translated="English" lang_default="true"
在这个特定的视频中,我只能出于某些原因通过name=Automatic
来解决这个问题。但对于另一个视频,它运作良好:
http://video.google.com/timedtext?type=track&v=zenMEj0cAC4&id=0&lang=en
答案 1 :(得分:2)
从页面获取数据的一个很好的方法是使用file_get_contents但是这仅适用于如果视频有' CC'或者字幕按钮,但是当它出现时,您可以不幸地从xml文件中获取所有文本元素,如其中一个“Youtube”标题所示。服务声明它需要由youtuber启用的字幕来获取字幕,所以不幸的是,如果没有“CC&C”的话,你就无法从视频中获取字幕。启用,但是如果你仍然希望你可以在xml文件上使用file_get_contents,那么找到所有的'文本'标签,然后将它们变成标题。
答案 2 :(得分:2)
这是我花了一些时间后的建议:
Js library:https://github.com/syzer/youtube-captions-scraper =>支持自动生成的标题。
下面的两种快速方法不支持自动生成的标题
快速下载:http://downsub.com/?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dag_EJRhMfOM
答案 3 :(得分:0)
我正在查看downsub.com,发现以下API调用似乎适用于自动生成的标题: