Uzyskaj listę filmów z YouTube według słów kluczowych za pomocą interfejsu API wyszukiwania YouTube
YouTube to druga co do wielkości wyszukiwarka na świecie. Ze względu na swoją popularność wiele witryn integruje funkcje związane z YouTube ze swoją witryną. Obejmuje to osadzanie filmów z YouTube, przycisk subskrypcji YouTube, galerię wideo YouTube, wyszukiwanie wideo itp. W tym artykule zobaczymy, jak zintegrować interfejs API wyszukiwania YouTube z witryną.
W tym artykule wyjaśniono, jak można zaimplementować zadanie wyszukiwania filmów z YouTube na stronie internetowej. Wykorzystamy interfejs API wyszukiwania YouTube, aby uzyskać filmy na podstawie słów kluczowych, przefiltrować je według dostępnych opcji (data, ocena itp.) i wyświetlić listę filmów. Wydrukuję tytuł i identyfikator wideo. Użytkownik może wydrukować inne informacje również zgodnie z ich wymaganiami.
Pierwsze kroki
Aby rozpocząć, musisz najpierw utworzyć klucz API na swoim koncie Konsoli Google. Ten klucz jest niezbędny podczas interakcji z interfejsami API YouTube. Bez tego klucza YouTube traktuje wszystkie przychodzące wywołania API jako nieautoryzowane.
Poniżej znajdują się kroki, aby pobrać klucz API.
- Przejdź do Konsoli programisty Google https://console.developers.google.com.
- Utwórz nowy projekt. Opcjonalnie możesz również wybrać istniejący projekt.
- Nadaj nazwę swojemu projektowi. Konsola Google utworzy dla Ciebie unikalny identyfikator projektu.
- Twój nowo utworzony projekt pojawi się na górze lewego paska bocznego.
- Kliknij Biblioteka z lewego menu. Zobaczysz listę interfejsów Google API. Włącz interfejs API danych YouTube.
- Następnie z lewego menu kliknij Poświadczenia. Wybierz klucz API w obszarze Utwórz poświadczenia.
- Skopiuj ten klucz API.
Utwórz interfejs użytkownika
W tym samouczku zamierzam utworzyć formularz, w którym użytkownik może wpisać słowo kluczowe, wybrać liczbę filmów do zwrócenia i typ filtra. Interfejs API YouTube ma limit 50 rekordów na raz, więc zachowamy limit 50 w polach liczbowych. Dodamy paginację, aby uzyskać następny i poprzedni zestaw rekordów. W każdej odpowiedzi YouTube podaje wartości dla nextPageToken i prevPageToken, jeśli są dostępne. Używając tych wartości jako parametru, takiego jak „pageToken=PageToken_VALUE" w żądaniach HTTP GET, możemy pobrać następny lub poprzedni zestaw rekordów.
Dostępnych jest kilka opcji dla typów filtrów, takich jak „data”, „ocena”, „trafność”, „tytuł”, „liczba wyświetleń”. Użytkownik może wybrać jeden, a ostateczny wynik będzie zależał od wybranego filtra.
<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>
Tutaj utworzyliśmy formularz, który ma 3 pola do wpisania słowa kluczowego, ustawienia liczby rekordów do zwrócenia i typu filtra.
Zintegruj interfejs API wyszukiwania YouTube
Na tym etapie jesteśmy gotowi z naszym kluczem API i formularzem HTML. Następnie musimy pobrać wartości formularzy i przekazać je do punktu końcowego API YouTube wraz z kluczem API. Następnie przetworzymy ostateczną odpowiedź.
<?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
}
}
?>
Powyższy kod sprawdza parametry zapytania słowa kluczowego, max_result i wartość zamówienia do sortowania. Pobiera te wartości i przekazuje je do punktu końcowego interfejsu API. W zamian dołącza odpowiedź do zmiennej $arr_list
. Przejdziemy przez tę zmienną i wydrukujemy informacje o filmach.
<?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>';
}
}
?>
Możesz umieścić ten kod po kodzie HTML formularza. Wyświetli listę tytułów filmów, identyfikatorów filmów wraz z linkami do paginacji.
Nasz ostateczny kod wygląda następująco:
<?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>';
}
}
?>
Mam nadzieję, że rozumiesz integrację interfejsu API wyszukiwania YouTube ze swoją witryną. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.
Powiązane artykuły
- Jak uzyskać tagi wideo YouTube za pomocą interfejsu API YouTube?
- YouTube API – jak uzyskać listę filmów z YouTube na swoim kanale
- Jak uzyskać miniaturę z filmów z YouTube, Vimeo i Dailymotion