在YouTube上使用get_video下载视频

Jon*_*asG 6 youtube url download ios

我想获取任何YouTube视频的视频网址,如下所示:

打开

http://youtube.com/get_video_info?video_id=VIDEOID
Run Code Online (Sandbox Code Playgroud)

然后获取account_playback_token令牌值并打开此URL:

http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2
Run Code Online (Sandbox Code Playgroud)

这应该打开只包含视频的页面或开始下载视频.但没有任何反应,Safari的活动窗口显示"未找到",因此URL存在问题.我想将它集成到iPad应用程序中,并且获取我在应用程序的iPhone版本中使用的视频URL的javascript方法无效,因此我需要另一种解决方案.

YouTube一直在变化,我认为这个网址已经过时了.请帮忙 :)

编辑:似乎get_video方法不再起作用.如果有人能告诉我另一种查找视频网址的方法,我真的很感激.

谢谢,我真的需要帮助.

Wou*_*elo 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>';
}
?>
Run Code Online (Sandbox Code Playgroud)