Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用YouTube上的get_视频下载视频_Ios_Url_Download_Youtube - Fatal编程技术网

Ios 使用YouTube上的get_视频下载视频

Ios 使用YouTube上的get_视频下载视频,ios,url,download,youtube,Ios,Url,Download,Youtube,我正在尝试获取任何YouTube视频的视频URL,如下所示: 打开 然后获取帐户\u回放\u令牌令牌值并打开此URL: http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2 这将打开一个只包含视频的页面或开始下载视频。但什么也没发生,Safari的活动窗口显示“未找到”,所以URL有问题。我想将其集成到一个iPad应用程序中,而我在iPhone版本的应用程序中使用的获取视频URL的j

我正在尝试获取任何YouTube视频的视频URL,如下所示:

打开

然后获取
帐户\u回放\u令牌
令牌值并打开此URL:

http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2
这将打开一个只包含视频的页面或开始下载视频。但什么也没发生,Safari的活动窗口显示“未找到”,所以URL有问题。我想将其集成到一个iPad应用程序中,而我在iPhone版本的应用程序中使用的获取视频URL的javascript方法不起作用,因此我需要另一个解决方案

YouTube一直在变化,我认为URL已经过时了。请帮忙:)

编辑:看来get_video方法不再有效了。如果有人能告诉我另一种找到视频URL的方法,我将不胜感激


谢谢你,我真的需要帮助。

对不起,这已经不可能了。他们将令牌限制在获得它的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>';
}
?>

我使用这个,它会震动:


只需从浏览器复制一个YouTube URL,并以YouTube URL作为唯一参数执行此命令。它将找出如何找到最佳质量的视频并为您下载。

太棒了!我需要一种方法来获取整个视频播放列表

在Linux中,我使用的是:

y=; f=”http://gdata.youtube.com/feeds/api/playlists/PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN?start-指数=26”; 对于以美元表示的i(curl-s$f | grep-o“url='$y/watch?v=[^']'”;do d=$(echo $i|sed“s|url\='$y/watch?v=(.)和。*'|\1 |');youtube dl --限制文件名“$y/watch?v=$d”;完成

您必须从常见的Youtube URL中找到播放列表ID,如:

此外,该技术使用GDataAPI,每页限制25条记录。
因此?start index=26参数(在我的示例中获取第2页)

这可能需要一些清理和额外的逻辑来迭代所有的25个集合

学分:


(这本身不太管用)

但您也在使用get\u url吗?什么是get_headers(),它是url的一部分还是一个函数?你能用语言解释一下你的密码吗?我真的很想给你赏金,我只是需要多一点帮助。谢谢我赫斯特再次看了一遍,然后我完全明白了:D但为什么它不提供每个分辨率下所有格式的链接(在720p中,它提供mp4和x-flv,在480p中,它提供flv和x-flv的链接…)有没有办法获得所有分辨率下mp4视频的链接?谢谢所以他们在标题中放了一个真实的视频位置?听起来像是一个主要的缺陷…objc中的代码要多得多,因为URL解析在那里要困难得多,但你给了我正确的想法。赏金!
<?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>';
}
?>