搜索youtube并获取热门视频ID

时间:2014-06-07 23:23:20

标签: javascript php jquery url youtube

我想使用字符串搜索youtube,并在搜索结果中获取顶部视频的ID,以便我可以直接在我的网站上播放该视频。 这可能吗?

我只有搜索网址:youtube_url / results?search_query = thevideotitlehere

我应该使用javascript / jquery / php / youtube-api吗?

3 个答案:

答案 0 :(得分:3)

我不喜欢与Youtube api合作。但我不得不做一些类似的事情,所以我将在这里使用相同的方法。

这个想法很简单。首先,显然我们从访问者那里得到了搜索字符串。比我们建立一个正确的Youtube链接。使用file_get_contents我们从链接中获取源。通过一些正则表达式,我们搜索此源中的第一个视频ID出现并将其保存在变量中。

现在我们所要做的就是输出一个标准的Youtube嵌入,其中包含我们之前提取的视频ID。

我确信有更好的方法可以做到这一点。

<?php

if(isset($_POST['submit']) && $_POST['submit'] != ''){
    $searchString   = $_POST['searchString'];
    $correctString  = str_replace(" ","+",$searchString);
    $youtubeUrl = "https://www.youtube.com/results?search_query=". $correctString;
    $getHTML        = file_get_contents($youtubeUrl);
    $pattern        = '/<a href="\/watch\?v=(.*?)"/i';

    if(preg_match($pattern, $getHTML, $match)){
            $videoID    = $match[1];
    } else {
            echo "Something went wrong!";
            exit;
    }


    echo '<iframe width="560" height="315" src="//www.youtube.com/embed/'. $videoID .'" frameborder="0" allowfullscreen></iframe>';
    }

?>


<!DOCTYPE HTML>
<html>
    <head>
            <title>Fetch Youtube first result</title>
    </head>
    <body>
            <form method="post" action="index.php" accept-charset="utf-8">
                    Search string: <input type="text" name="searchString" />
                    <input type="submit" name="submit" value="Search" />
            </form>
    </body>
</html>

答案 1 :(得分:2)

这有效:

youtube_url /嵌入/ listType =搜索&安培;列表=搜索内容&安培;自动播放= 1

但它没有自动播放

答案 2 :(得分:2)

经过数小时的搜索,编码和尝试,我有一个解决方案

以非常简单的方式使用YouTube API

启用google youtube API并设置API密钥

然后使用它来获取搜索中顶部视频的ID (我使用PHP,但我打赌你可以使用像JavaScript或其他类似的东西):

<?php
$yt_search = 'Godzilla trailer 2014';
$yt_source = file_get_contents('https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=1&order=relevance&q='.urlencode($yt_search).'&key=YOUR_API_KEY_HERE');
$yt_decode = json_decode($yt_source, true);
if ($yt_decode['pageInfo']['totalResults']>0) {
    if (strlen($yt_decode['items'][0]['id']['videoId'])>5) {
        $yt_videoid = trim($yt_decode['items'][0]['id']['videoId']);
        echo $yt_videoid;
    }
}
?>