✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Uzyskaj listę filmów z YouTube według słów kluczowych za pomocą interfejsu API wyszukiwania YouTube

24

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.

Uzyskaj listę filmów z YouTube według słów kluczowych za pomocą interfejsu API wyszukiwania YouTube

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

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów