Для вывода списка видеозаписей из канала или плейлиста YouTube на сайте можно воспользоваться этим полностью рабочим решением на PHP. С помощью этой функции можно получить все необходимые данные видеозаписей: название, изображение и идентификатор видео.
Вам понадобится идентификатор канала или плейлиста. Найти их можно в адресной строке:
ID канала будем указывать при вызове функции
getYoutubePlaylistDataXml('Ваш_ID_канала');
И Google API key. Получаем следующим образом:
- Для доступа к консоли API Google нужен аккаунт Google . Создаем или переходим к следующему пункту.
- Заходим в консоль для разработчиков.
- Нажимаем «Create Project» и указываем имя. Соглашаемся с правилами и нажимаем кнопку «Create».
- В разделе «Boost your app with a Google API» активируем кнопку «Enable an API».
- И выбираем «YouTube Data API» для работы с API YouTube.
- Нажимаем на кнопку «Enable API».
- В меню слева выбираем API & auth → Credentials. И нажимаем кнопку «Create new Key».
- При необходимости указываем домен на котором будет использоваться ключ и нажимаем «Create».
Полученный ключ указываем в скрипте в переменной $api_key
Index.php
<?php
/**
* Получить список последних видео заданного плейлиста
*
* @param string $ytlist идентификатор канала или плейлиста
* @param int $cnt по сколько позиций обрабатывать (не всегда нужно содержимое всего плейлиста)
* @param int $cache_life время жизни кеша в секундах (чтобы не получить бан IP за рилтайм запросы)
* @return array список найденных видео, не более $cnt штук
*/
function getYoutubePlaylistDataXml($ytlist, $cnt = 5, $cache_life = 3600) {
# файл, содержащий копию ленты
$cache_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . $ytlist . '.json';
# Ключ для запросов
$api_key = 'ВАШ-API-KEY';
# специальный адрес, отвечающий за выдачу фида
$url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet'
. '&playlistId=' . $ytlist
. '&maxResults=' . $cnt
. '&key=' . $api_key;
# если кеш устарел...
if (time() - @filemtime($cache_file) >= $cache_life) {
# ...пытаемся обновить его
$buf = file_get_contents($url);
# в случае успеха запишем в файл обновлённые данные
# проверка на пустоту нужна для того, чтобы не запороть кеш при ошибке
if ($buf) file_put_contents($cache_file, $buf);
}
# если фид получить не удалось...
if (empty($buf)) {
# ...просто берём содержимое из кеша
$buf = file_get_contents($cache_file);
}
# декодируем JSON данные
$json = json_decode($buf, 1);
$arr = array();
# если данных нет — на выход
if (empty($json['items'])) return $arr;
# перебор доступных значений
foreach ($json['items'] as $v) {
$t = array(
'title' => $v['snippet']['title'], # название
'desc' => $v['snippet']['description'], # описание
'url' => $v['snippet']['resourceId']['videoId'], # адрес
);
# изображения
if (isset($v['snippet']['thumbnails'])) {
$t['imgs']['all'] = array();
foreach ($v['snippet']['thumbnails'] as $name => $item) {
$t['imgs']['all'][] = $item['url'];
$wh = $item['width'] . 'x' . $item['height'];
$t['imgs'][$wh][0] = $item['url'];
}
}
$arr[] = $t;
}
return $arr;
}
Если все верно, то при вызове функции getYoutubePlaylistDataXml('Ваш_ID_канала'); получаем массив с данными нужного канала или плейлиста.