Skaffa YouTube-videolista med nyckelord med hjälp av YouTube Search API
YouTube är den näst största sökmotorn i världen. På grund av sin popularitet integrerar många webbplatser YouTube-relaterade funktioner på sin webbplats. Detta inkluderar inbäddning av YouTube-videor, YouTube-prenumerationsknapp, YouTube-videogalleri, Videosökning etc. I den här artikeln ska vi se hur man integrerar YouTube-sök-API till webbplatsen.
Den här artikeln förklarar hur man kan genomföra uppgiften att söka på YouTube-videor på en webbplats. Vi använder YouTube-sök-API för att få videor baserade på nyckelord, filtrera efter tillgängliga alternativ (datum, betyg osv.) Och visa videolistan. Jag ska skriva ut videotiteln och video-id. Användaren kan skriva ut annan information också enligt deras krav.
Komma igång
För att komma igång måste du först skapa en API-nyckel på ditt Google Console-konto. Den här nyckeln är nödvändig när du interagerar med YouTube-API: erna. Utan denna nyckel betraktar YouTube alla inkommande API-samtal som obehöriga.
Nedan följer stegen för att ta tag i API-nyckeln.
- Gå över till Googles utvecklarkonsol https://console.developers.google.com.
- Skapa ett nytt projekt. Alternativt kan du också välja befintligt projekt.
- Ge ditt projekt namn. Google Console skapar unikt projekt-ID för dig.
- Ditt nyskapade projekt visas längst upp till vänster i sidofältet.
- Klicka på Bibliotek från den vänstra menyn. Du kommer att se en lista över Googles API: er. Aktivera YouTube Data API.
- Klicka sedan på referenser från vänster meny. Välj API-nyckel under Skapa referenser.
- Kopiera den här API-nyckeln.
Skapa ett användargränssnitt
För den här handledningen ska jag skapa ett formulär där en användare kan ange nyckelordet, välja ett antal videor som ska returneras och filtertyp. YouTube API har en gräns på 50 poster åt gången, så vi kommer att hålla en gräns på 50 i antal fält. Vi lägger till pagination för att få nästa och föregående uppsättning poster. I varje svar tillhandahåller YouTube värden för nextPageToken och prevPageToken om tillgängligt. Med hjälp av dessa värden som en parameter som ‘pageToken = PageToken_VALUE’ i HTTP GET-förfrågningar kan vi hämta nästa eller föregående uppsättning poster.
Det finns flera alternativ tillgängliga för filtertyper som är ‘datum’, ‘betyg’, ‘relevans’, ‘titel’, ‘viewCount’. Användaren kan välja antingen en och det slutliga resultatet beror på det valda filtret.
<form method="get">
<p><input type="text" name="q" placeholder="Enter keyword" value="<?php if(array_key_exists('q', $_GET)) echo $_GET['q']; ?>" required></p>
<p><input type="number" name="max_result" placeholder="Max Results" min="1" max="50" value="<?php if(array_key_exists('max_result', $_GET)) echo $_GET['max_result']; ?>" required></p>
<p>
<?php $arr_orders = ['date', 'rating', 'relevance', 'title', 'viewCount']; ?>
<select name="order" required>
<option value="">--SELECT ORDER--</option>
<?php foreach ($arr_orders as $order) { ?>
<option value="<?php echo $order; ?>" <?php if(array_key_exists('order', $_GET) && ($order==$_GET['order'])) echo 'selected'; ?>><?php echo ucfirst($order); ?></option>
<?php } ?>
</select>
</p>
<p><input type="submit" value="Submit"></p>
</form>
Här skapade vi ett formulär som har tre fält för att ange ett nyckelord, ange antal poster som ska returneras och filtertyp.
Integrera YouTube Search API
I det här skedet är vi redo med vår API-nyckel och HTML-formulär. Därefter måste vi hämta formulärvärden och skicka dem till YouTube API-slutpunkten tillsammans med API-nyckeln. Efter detta kommer vi att behandla det slutliga svaret.
<?php
$api_key = 'YOUR_API_KEY';
$arr_list = array();
if (array_key_exists('q', $_GET) && array_key_exists('max_result', $_GET) && array_key_exists('order', $_GET)) {
$formatted_keyword = implode("+", explode(" ", $_GET['q']));
$url = "https://www.googleapis.com/youtube/v3/search?q=$formatted_keyword&order=". $_GET['order'] ."&part=snippet&type=video&maxResults=". $_GET['max_result'] ."&key=". $api_key;
if (array_key_exists('pageToken', $_GET)) {
$url .= "&pageToken=". $_GET['pageToken'];
}
$arr_list = getYTList($url);
}
function getYTList($api_url = '') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$arr_result = json_decode($response);
if (isset($arr_result->items)) {
return $arr_result;
} elseif (isset($arr_result->error)) {
//print error $arr_result->error
}
}
?>
Ovanstående kod söker efter frågeparametrar för ett nyckelord, max_resultat och ordervärde för sortering. Det tar dessa värden och skickar dem till API-slutpunkten. I gengäld lägger den till svaret på variabeln $arr_list
. Vi kommer att gå igenom denna variabel och skriva ut informationen om videorna.
<?php
if (!empty($arr_list)) {
echo '<ul>';
foreach ($arr_list->items as $item) {
echo "<li>". $item->snippet->title ." (Video ID: ". $item->id->videoId .")</li>";
}
echo '</ul>';
$url = "?q=". $_GET['q'] ."&max_result=". $_GET['max_result'] ."&order=". $_GET['order'];
if (isset($arr_list->prevPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->prevPageToken.'">Previous</a>';
}
if (isset($arr_list->nextPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->nextPageToken.'">Next</a>';
}
}
?>
Du kan placera den här koden efter formulärets HTML. Det ger dig en lista över videotitlar, video-id och sidlänkar.
Vår slutkod är som följer:
<?php
$api_key = 'YOUR_API_KEY';
$arr_list = array();
if (array_key_exists('q', $_GET) && array_key_exists('max_result', $_GET) && array_key_exists('order', $_GET)) {
$formatted_keyword = implode("+", explode(" ", $_GET['q']));
$url = "https://www.googleapis.com/youtube/v3/search?q=$formatted_keyword&order=". $_GET['order'] ."&part=snippet&type=video&maxResults=". $_GET['max_result'] ."&key=". $api_key;
if (array_key_exists('pageToken', $_GET)) {
$url .= "&pageToken=". $_GET['pageToken'];
}
$arr_list = getYTList($url);
}
function getYTList($api_url = '') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$arr_result = json_decode($response);
if (isset($arr_result->items)) {
return $arr_result;
} elseif (isset($arr_result->error)) {
//print error $arr_result->error
}
}
?>
<form method="get">
<p><input type="text" name="q" placeholder="Enter keyword" value="<?php if(array_key_exists('q', $_GET)) echo $_GET['q']; ?>" required></p>
<p><input type="number" name="max_result" placeholder="Max Results" min="1" max="50" value="<?php if(array_key_exists('max_result', $_GET)) echo $_GET['max_result']; ?>" required></p>
<p>
<?php $arr_orders = ['date', 'rating', 'relevance', 'title', 'viewCount']; ?>
<select name="order" required>
<option value="">--SELECT ORDER--</option>
<?php foreach ($arr_orders as $order) { ?>
<option value="<?php echo $order; ?>" <?php if(array_key_exists('order', $_GET) && ($order==$_GET['order'])) echo 'selected'; ?>><?php echo ucfirst($order); ?></option>
<?php } ?>
</select>
</p>
<p><input type="submit" value="Submit"></p>
</form>
<?php
if (!empty($arr_list)) {
echo '<ul>';
foreach ($arr_list->items as $item) {
echo "<li>". $item->snippet->title ." (Video ID: ". $item->id->videoId .")</li>";
}
echo '</ul>';
$url = "?q=". $_GET['q'] ."&max_result=". $_GET['max_result'] ."&order=". $_GET['order'];
if (isset($arr_list->prevPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->prevPageToken.'">Previous</a>';
}
if (isset($arr_list->nextPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->nextPageToken.'">Next</a>';
}
}
?>
Jag hoppas att du förstår att integrera YouTube-sök-API på din webbplats. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Hur du får YouTube-videotaggar med hjälp av YouTube API
- YouTube API – Hur får jag en lista över YouTube-videor från din kanal
- Hur man får miniatyrbild från YouTube, Vimeo och Dailymotion-videor