В YouTube API v3 нельзя ничего сделать без API key.
Чтобы его получить идем: https://console.developers.google.com/project
Создаем проект → APIs & auth → Credentials → Create New Key → Browser key
Если хотим чтобы API был доступен с любого хоста, то в Referers не пишем ничего.
Ждем какое-то время, ключ почему-то доступен не сразу. Так же как и изменения Referers применяются спустя какое-то время.
Затем нужно получить ID плейлиста загрузок канала. Для этого идем по ссылке:
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername={CHANNEL_NAME}&key={YOUR_API_KEY}
Пример ответа:
{ "kind": "youtube#channelListResponse", "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/zeYzclTG4ewfhDNkxg0gBgbw6tk\"", "pageInfo": { "totalResults": 1, "resultsPerPage": 5 }, "items": [ { "kind": "youtube#channel", "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/HO4agMuJTzvaU0t8LvtyE0nJpnY\"", "id": "UCJsxAwkchPTO4YM2deDfr4w", "contentDetails": { "relatedPlaylists": { "likes": "LLJsxAwkchPTO4YM2deDfr4w", "uploads": "UUJsxAwkchPTO4YM2deDfr4w" }, "googlePlusUserId": "112412220286703121282" } } ] }
Отсюда нам нужен uploads ID, с помощью него формируем ссылку по которой будем получать обновления на канале:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=5&playlistId={UPLOADS_ID}&key={YOUR_API_KEY}
Сокращенный пример ответа:
{ "kind": "youtube#playlistItemListResponse", "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/FPLhRfv98p__33rDj1UgDybUcQ0\"", "nextPageToken": "CAUQAA", "pageInfo": { "totalResults": 387, "resultsPerPage": 5 }, "items": [ { "kind": "youtube#playlistItem", "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/vz8KJuQDO4mV5G3hgGklpF_6a1c\"", "id": "UULpaWFN44Q6UNl9w3kIwSYcUYbwXB3_Es", "snippet": { "publishedAt": "2015-04-15T09:00:42.000Z", "channelId": "UCJsxAwkchPTO4YM2deDfr4w", "title": "Retrain Your Brain | Fender Strat Plus 1995 USA | SKIFMUSIC", "description": "Полное описание видео", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/CpCnwByDKpg/default.jpg", "width": 120, "height": 90 }, "medium": { "url": "https://i.ytimg.com/vi/CpCnwByDKpg/mqdefault.jpg", "width": 320, "height": 180 }, "high": { "url": "https://i.ytimg.com/vi/CpCnwByDKpg/hqdefault.jpg", "width": 480, "height": 360 }, "standard": { "url": "https://i.ytimg.com/vi/CpCnwByDKpg/sddefault.jpg", "width": 640, "height": 480 }, "maxres": { "url": "https://i.ytimg.com/vi/CpCnwByDKpg/maxresdefault.jpg", "width": 1280, "height": 720 } }, "channelTitle": "SKIFMUSIC", "playlistId": "UUJsxAwkchPTO4YM2deDfr4w", "position": 0, "resourceId": { "kind": "youtube#video", "videoId": "CpCnwByDKpg" } } }, ... ] }
На этом работа с API заканчивается.
Создаем новый тип материала, например Видео: YouTube
Устанавливаем модули Feeds, Feeds JSONPath Parser и Feeds Tamper (по желанию для возможности фильтровать видео по ключевым словам и т.д.).
Идем по адресу /admin/structure/feeds и добавляем новый Importer.
Базовые настройки на скриншоте:
Сборщик → HTTP Fetcher
Обработчик → JSONPath parser
Процессор → Node processor
Затем идем в настройки JSONPath parser:
Контекст: $.items.*
title: snippet.title
body: snippet.description
created: snippet.publishedAt
field_thumbnail: snippet.thumbnails.high.url
field_video_id: snippet.resourceId.videoId
guid: snippet.resourceId.videoId
Сохраняем, идем по адресу /import и видим там наш импортер. Запускаем его не забывая указать в URL ссылку с &playlistId={UPLOADS_ID}&key={YOUR_API_KEY}
YouTube API v3 в этом запросе почему-то не хочет отдавать полный URL видео, поэтому можно его получить с помощью Feeds Tamper и плагина sprintf:
Tamper → field_video_id → Add plugin → Строка формата →
http://www.youtube.com/watch?v=%s
Для того чтобы вывести ID как embed-видео можно использовать модуль Custom Formatters.
Пример php-форматера для поля типа text:
$youtube_id = $variables['#items'][0]['value']; $out = '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . $youtube_id . '" frameborder="0" allowfullscreen></iframe>'; return $out;
Еще пригодятся:
http://jsonlint.com — JSON Validator, его же можно использовать для приведения JSON в читаемый вид,
http://jsonpath.curiousconcept.com — JSONPath Expression Tester.