Получите список видео YouTube по ключевым словам с помощью API поиска YouTube
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.
Создать пользовательский интерфейс
В этом руководстве я собираюсь создать форму, в которой пользователь может ввести ключевое слово, выбрать количество возвращаемых видео и тип фильтра. 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 на свой сайт. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.
Статьи по Теме
- Как получить теги видео YouTube с помощью API YouTube
- YouTube API – как получить список YouTube-видео вашего канала
- Как получить эскиз с видео YouTube, Vimeo и Dailymotion