Отримайте список відео 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 Console створить для вас унікальний ідентифікатор проекту.
- Ваш щойно створений проект з’явиться у верхній частині лівої бічної панелі.
- Клацніть на Бібліотека в меню ліворуч. Ви побачите список API Google. Увімкніть API даних YouTube.
- Далі в меню ліворуч клацніть на Повноваження. Виберіть ключ API у розділі Створення облікових даних.
- Скопіюйте цей ключ API.
Створіть інтерфейс користувача
Для цього підручника я збираюся створити форму, де користувач може ввести ключове слово, вибрати кількість відео, які потрібно повернути, та тип фільтра. YouTube API має обмеження до 50 записів одночасно, тому ми будемо дотримуватись обмеження до 50 для полів кількості. Ми додамо пагінацію, щоб отримати наступний і попередній набір записів. У кожній відповіді YouTube надає значення для nextPageToken та prevPageToken, якщо такі є. Використовуючи ці значення як параметр, такий як ‘pageToken = PageToken_VALUE’ у запитах HTTP GET, ми можемо отримати наступний або попередній набір записів.
Для типів фільтрів доступно кілька варіантів: „дата", „рейтинг”, „релевантність”, „заголовок”, „viewCount”. Користувач може вибрати один із них, і кінцевий результат буде залежати від обраного фільтра.
<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
- API YouTube – Як отримати список відео YouTube вашого каналу
- Як отримати ескіз з відео YouTube, Vimeo та Dailymotion