Документация по Youtube API.

Для работы нам потребуется всего лишь PHP версии 5.2.0 или выше. По плану у нас следующее:

- получаем API key;

- исследуем описание;

- получаем содержимое плейлиста и выводим его на странице.

Получаем API key

1) Открываем консоль разработчика от google. Здесь

2) Жмём кнопку Create Project. В появившемся окошке вводим имя. Я использую my-test-youtube-api. Ставим галочку согласия I agree… и нажимаем кнопку Create. Подождём, пока проект создастся.

3) Для открытия, в пункте «Boost your app with a Google API» активируем кнопку Enable an API.

4) Нам необходимо работаmь с данными YouTube, поэтому выбираем «YouTube Data API».

5) Нажимаем на кнопку «Enable API». Теперь всё готово, можно осуществлять запросы. Выделенная квота находится во вкладке Quotas. Но ещё нужен ключ.

6) Для получения ключа выбираем в меню слева API & auth → Credentials. Правее нажимаем кнопку «Create new Key».

7) Жмём «Browser key». По необходимости указываем домены, с которых разрешаются запросы. Если ничего не вбивать, то будут разрешены запросы с любых доменов. Нажимаэм «Create». Значимая информация это API key — он понадобится для работы.

Youtube API v3

Нам нужен метод PlaylistItems: list.

Описания всех доступных параметров приведены на странице. Мы же будет использовать четыре:

  1. part — через запятую перечисляются значения свойств, которые должны быть возвращены. Мы будем используем спецслово snippet;
  2. playlistId — идентификатор плейлиста;
  3. maxResults — сколько результатов (данных по видеороликам) возвращать;
  4. key — API key, ключ, полученный на шаге 7.

Данные возвращаются в виде JSON-объекта, осталось разрулить их и сформировать массив.

Решение

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

В представленном коде введите ВАШ-API-KEY, полученный на седьмом шаге (без этого код не будет работать!).

Обратите внимание, что в коде происходит запрос файла по HTTPS протоколу. Если вы испытываете скрипт на локальной машине, под Windows, и код не работает (скрипт ругается на https), необходимо в файле php.ini раскомментировать (удалить точку с запятой ; в начала строки) инструкцию extension=php_openssl.dll и перезагрузить веб-сервер.

Вот, собственно, и всё. Функция либо добавляется в ваш файл, либо в новосозданный документ, например, youtube_api.php, после чего подключается стандартным способом:

require_once 'youtube_api.php';

Предыдущий урок СОДЕРЖАНИЕ Следующий урок

Виктория Пряжникова


2016-12-07 • Просмотров [ 171 ]