✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

YouTube-Videoliste nach Schlüsselwörtern mithilfe der YouTube-Such-API abrufen

22

YouTube ist die zweitgrößte Suchmaschine der Welt. Aufgrund ihrer Popularität integrieren viele Websites YouTube-bezogene Funktionen in ihre Website. Dazu gehören das Einbetten von YouTube-Videos, die YouTube-Abonnementschaltfläche, die YouTube-Videogalerie, die Videosuche usw. In diesem Artikel erfahren Sie, wie Sie die YouTube-Such-API in die Website integrieren.

Dieser Artikel erklärt, wie man die Aufgabe der Suche nach YouTube-Videos innerhalb einer Website umsetzen kann. Wir verwenden die YouTube-Such-API, um Videos basierend auf Schlüsselwörtern abzurufen, sie nach verfügbaren Optionen (Datum, Bewertung usw.) zu filtern und die Videoliste anzuzeigen. Ich werde den Videotitel und die Video-ID ausdrucken. Der Benutzer kann auch andere Informationen nach seinen Anforderungen ausdrucken.

Einstieg

Um zu beginnen, müssen Sie zunächst einen API-Schlüssel in Ihrem Google Console-Konto erstellen. Dieser Schlüssel ist für die Interaktion mit den YouTube-APIs erforderlich. Ohne diesen Schlüssel betrachtet YouTube alle eingehenden API-Aufrufe als nicht autorisiert.

Nachfolgend finden Sie die Schritte zum Abrufen des API-Schlüssels.

  • Gehen Sie zur Google Developer Console https://console.developers.google.com.
  • Erstellen Sie ein neues Projekt. Optional können Sie auch ein vorhandenes Projekt auswählen.
  • Geben Sie Ihrem Projekt einen Namen. Die Google Console erstellt eine eindeutige Projekt-ID für Sie.
  • Ihr neu erstelltes Projekt wird oben in der linken Seitenleiste angezeigt.
  • Klicken Sie im linken Menü auf Bibliothek. Sie sehen eine Liste der Google APIs. Aktivieren Sie die YouTube-Daten-API.
  • Klicken Sie anschließend im linken Menü auf die Anmeldeinformationen. Wählen Sie API-Schlüssel unter Anmeldeinformationen erstellen aus.
  • Kopieren Sie diesen API-Schlüssel.

YouTube-Videoliste nach Schlüsselwörtern mithilfe der YouTube-Such-API abrufen

Erstellen Sie eine Benutzeroberfläche

Für dieses Tutorial werde ich ein Formular erstellen, in dem ein Benutzer das Schlüsselwort eingeben, eine Reihe von Videos zur Rückgabe auswählen und den Typ filtern kann. Die YouTube API hat ein Limit von 50 Datensätzen gleichzeitig, daher behalten wir ein Limit von 50 für die Zahlenfelder bei. Wir werden Paginierung hinzufügen, um den nächsten und vorherigen Datensatz zu erhalten. In jeder Antwort stellt YouTube Werte für nextPageToken und prevPageToken bereit, falls verfügbar. Wenn wir diese Werte als Parameter wie ‘pageToken=PageToken_VALUE’ in HTTP GET-Anfragen verwenden, können wir den nächsten oder vorherigen Datensatz abrufen.

Für die Filtertypen stehen verschiedene Optionen zur Verfügung: ‘Datum’, ‘Bewertung’, ‘Relevanz’, ‘Titel’, ‘ViewCount’. Der Benutzer kann einen der beiden auswählen und das Endergebnis hängt vom ausgewählten Filter ab.

<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>

Hier haben wir ein Formular mit 3 Feldern für die Eingabe eines Schlüsselworts, die Anzahl der zurückzugebenden Datensätze und den Filtertyp erstellt.

Integrieren Sie die YouTube-Such-API

Zu diesem Zeitpunkt sind wir mit unserem API-Schlüssel und dem HTML-Formular fertig. Als Nächstes müssen wir Formularwerte abrufen und sie zusammen mit dem API-Schlüssel an den YouTube-API-Endpunkt übergeben. Danach werden wir die endgültige Antwort bearbeiten.

<?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
    }
}
?>

Der obige Code prüft auf Abfrageparameter eines Schlüsselworts, max_result und den Sortierwert für die Sortierung. Es nimmt diese Werte und übergibt sie an den API-Endpunkt. Im Gegenzug hängt es die Antwort an die Variable an $arr_list. Wir werden diese Variable durchlaufen und die Informationen zu den Videos ausgeben.

<?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>';
    }
}
?>

Sie können diesen Code nach dem HTML-Code des Formulars platzieren. Es gibt Ihnen eine Liste von Videotiteln, Video-IDs zusammen mit Paginierungslinks.

Unser endgültiger Code lautet wie folgt:

<?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>';
    }
}
?>

Ich hoffe, Sie haben Verständnis für die Integration der YouTube-Such-API in Ihre Website. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen