我正在尝试获取任何YouTube视频的视频网址:
打开
http://youtube.com/get_video_info?video_id=VIDEOID
然后获取account_playback_token
令牌值并打开此网址:
http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2
这应该打开只包含视频的页面或开始下载视频。但没有任何反应,Safari的活动窗口显示“未找到”,因此URL存在问题。我想将它集成到iPad应用程序中,并且获取我在应用程序的iPhone版本中使用的视频URL的javascript方法无法正常工作,因此我需要另一种解决方案。
YouTube一直在变化,我认为该网址已过时。请帮助:)
编辑:似乎get_video方法不再起作用了。如果有人能告诉我另一种查找视频网址的方法,我真的很感激。
谢谢,我真的需要帮助。
答案 0 :(得分:10)
抱歉,这是不可能的。它们将令牌限制为获得它的IP。
这是使用get_headers()
函数的解决方法,它为您提供了一个包含视频链接的数组。我对ios
一无所知,所以希望你自己可以重写这段PHP代码。
<?php
if(empty($_GET['id'])) {
echo "No id found!";
}
else {
function url_exists($url) {
if(file_get_contents($url, FALSE, NULL, 0, 0) === false) return false;
return true;
}
$id = $_GET['id'];
$page = @file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$id);
preg_match('/token=(.*?)&thumbnail_url=/', $page, $token);
$token = urldecode($token[1]);
$get = $title->video_details;
$url_array = array ("http://youtube.com/get_video?video_id=".$id."&t=".$token,
"http://youtube.com/get_video?video_id=".$id."&t=".$token."&fmt=18");
if(url_exists($url_array[1]) === true) {
$file = get_headers($url_array[1]);
}
elseif(url_exists($url_array[0]) === true) {
$file = get_headers($url_array[0]);
}
$url = trim($file[19],"Location: ");
echo '<a href="'.$url.'">Download video</a>';
}
?>
答案 1 :(得分:3)
我使用它并摇滚:http://rg3.github.com/youtube-dl/
只需从浏览器中复制YouTube网址,然后以YouTube网址作为唯一参数执行此命令。它将弄清楚如何找到最优质的视频并为您下载。
答案 2 :(得分:1)
大!我需要一种方法来获取整个播放列表的视频。
在Linux中,这就是我使用的:
Y = http://www.youtube.com; F =&#34; HTTP://gdata.youtube.com/feeds/api/playlists/PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN启动指数= 26&#34 ;; for $ in $(curl -s $ f | grep -o&#34; url =&#39; $ y / watch?v = [^&#39;] &#39;&#34;) ;做d = $(回声 $ i | sed&#34; s | url \ =&#39; $ y / watch?v =(。)&amp;。*&#39; | \ 1 |&#34;); YouTube的-DL --restrict-filenames&#34; $ y / watch?v = $ d&#34 ;;完成
您必须从常见的Youtube网址中找到播放列表ID,例如: https://www.youtube.com/playlist?list=PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN
此外,此技术使用gdata API,每页限制25条记录 因此,?start-index = 26参数(在我的例子中得到第2页)
这可以使用一些清理,以及额外的逻辑来迭代所有25组。
现金:
https://stackoverflow.com/a/8761493/1069375
http://www.commandlinefu.com/commands/view/3154/download-youtube-playlist(这本身并不起作用)