WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Получите список видео YouTube по ключевым словам с помощью API поиска YouTube

108

YouTube – вторая по величине поисковая система в мире. Из-за своей популярности многие веб-сайты интегрируют в свои веб-сайты функции, связанные с YouTube. Это включает в себя встраивание видео YouTube, кнопку подписки YouTube, видеогалерею YouTube, поиск видео и т.д. В этой статье мы увидим, как интегрировать API поиска YouTube на веб-сайт.

В этой статье объясняется, как можно реализовать задачу поиска видео YouTube на веб-сайте. Мы будем использовать API поиска YouTube, чтобы получать видео по ключевым словам, фильтровать их по доступным параметрам (дата, рейтинг и т.д.) И отображать список видео. Я собираюсь распечатать название видео и идентификатор видео. Пользователь может распечатать другую информацию также в соответствии с их требованиями.

Начиная

Для начала вам сначала нужно создать ключ API в вашей учетной записи Google Console. Этот ключ необходим при взаимодействии с API YouTube. Без этого ключа YouTube считает все входящие вызовы API несанкционированными.

Ниже приведены шаги по получению ключа API.

  • Перейдите в консоль разработчика Google https://console.developers.google.com.
  • Создайте новый проект. При желании вы также можете выбрать существующий проект.
  • Дайте название вашему проекту. Консоль Google создаст для вас уникальный идентификатор проекта.
  • Ваш недавно созданный проект появится в верхней части левой боковой панели.
  • Нажмите «Библиотека» в левом меню. Вы увидите список API Google. Включите API данных YouTube.
  • Затем в левом меню нажмите Учетные данные. Выберите ключ API в разделе «Создать учетные данные».
  • Скопируйте этот ключ API.

Получите список видео YouTube по ключевым словам с помощью API поиска YouTube

Создать пользовательский интерфейс

В этом руководстве я собираюсь создать форму, в которой пользователь может ввести ключевое слово, выбрать количество возвращаемых видео и тип фильтра. API YouTube имеет ограничение в 50 записей за раз, поэтому мы сохраним ограничение в 50 для числовых полей. Мы добавим разбиение на страницы, чтобы получить следующий и предыдущий набор записей. В каждом ответе YouTube предоставляет значения для nextPageToken и prevPageToken, если они доступны. Используя эти значения в качестве параметра типа pageToken = PageToken_VALUE в запросах HTTP GET, мы можем получить следующий или предыдущий набор записей.

Для типов фильтров доступно несколько вариантов: «дата», «рейтинг», «релевантность», «заголовок», «количество просмотров». Пользователь может выбрать любой из них, и конечный результат будет зависеть от выбранного фильтра.

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

Здесь мы создали форму с 3 полями для ввода ключевого слова, установили количество возвращаемых записей и тип фильтра.

Интегрируйте API поиска YouTube

На этом этапе у нас есть ключ API и HTML-форма. Затем нам нужно получить значения формы и передать их в конечную точку YouTube API вместе с ключом API. После этого мы обработаем окончательный ответ.

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

Приведенный выше код проверяет параметры запроса ключевого слова, max_result и значение порядка для сортировки. Он принимает эти значения и передает их в конечную точку API. В свою очередь, он добавляет ответ к переменной $arr_list. Мы пройдемся по этой переменной и распечатаем информацию о видео.

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

Вы можете разместить этот код после HTML формы. Он предоставит вам список названий видео, идентификаторов видео вместе со ссылками для пагинации.

Наш окончательный код выглядит следующим образом:

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

Надеюсь, вы понимаете, как интегрировать API поиска YouTube на свой сайт. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее