我想使用字符串搜索youtube,并在搜索结果中获取顶部视频的ID,以便我可以直接在我的网站上播放该视频。 这可能吗?
我只有搜索网址:youtube_url / results?search_query = thevideotitlehere
我应该使用javascript / jquery / php / youtube-api吗?
答案 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;
}
}
?>