2010-12-09 120 views
4

我有一个脚本,从YouTube下载MP4文件。它的作用是生成链接的形式http://youtube.com/get_video?video_id= * VIDEO_ID * & & t = * THE_TOKEN * = & fmt = 18 & asv = 2,但它不再工作(今天注意到它)。你怎么看?无法从YouTube下载

+5

我们都非常需要开源项目来跟上youtube dl链接。我厌倦了跟上他们的比赛。 – samquo 2010-12-11 04:49:57

回答

12

而不是尝试使用get_video获取视频,请尝试解析fmt_url_map(format-url map)。

您应该能够在您找到该令牌的相同位置找到fmt_url_map(例如在YouTube Flash视频播放器的flashvars中或在某处的YouTube页面内)。如果找不到,请发送请求至http://www.youtube.com/get_video_info?video_id=VIDEO_ID,您应该得到一个格式为name=value&name=value&...的非常长的结果在此结果中查找“fmt_url_map”(搜索结果中的字符串以“ & fmt_url_map =“并以”&“结尾)。

后你得到这个值(您可能需要URL解码它),它会是这样的(不换行):

22|http://blah.youtube.com/videoplayback?blah, 
35|http://blah.youtube.com/videoplayback?blah, 
... 

其中每个逗号分隔条目与FMT值开始(在本例中为22或35),然后是一个管道字符,然后是可以用来下载该格式视频的URL。 (这个URL是特定于客户端的,所以某个客户端的URL很可能不会与另一个客户端一起工作,因为YouTube会检查IP,而且这些URL会在一段时间后过期。)

有关不同的fmt值,请参阅:http://en.wikipedia.org/wiki/YouTube#Quality_and_formats并显示“YouTube媒体编码选项的Comarison”。注意:并非所有格式都可用于所有视频。

0

好吧,他们似乎已经删除了fmt选项。请参阅http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs

+0

这并不好!不知道是否有人可以找到黑客... – Alex1987 2010-12-10 08:49:46

+2

如果你解析fmt_url_map(从http://www.youtube.com/get_video_info?video_id=*VIDEO_ID*),你可以得到一个更直接的下载网址,但他们通常不会' t有所有可能的格式... – jhartz 2010-12-10 22:59:00