YouTube Data API (v3) поддерживает push-уведомления через PubSubHubbub – протокол публикации и подписки для ресурсов, доступных через интернет. Уведомления отправляются подписчикам с помощью веб-перехватчиков HTTP, что гораздо эффективнее, чем решения на основе опросов. Благодаря PubSubHubbub ваш сервер узнает о событиях почти в реальном времени, не определяя оптимальный интервал опроса и не запрашивая повторно данные, которые не изменились.
Ваш сервер обратного вызова PubSubHubbub получает уведомления о фиде Atom, когда на канале происходят следующие действия:
- загружает видео;
- изменяет название видео;
- изменяет описание видео;
Чтобы подписаться на уведомления, выполните следующие действия:
-
Настройте сервер обратного вызова, который может обрабатывать входящие уведомления фида Atom.
-
Чтобы подписаться на push-уведомления, используйте центр Google:
-
Задайте для параметра mode значение
subscribe. (Или задайте режимunsubscribe, чтобы отменить подписку.) -
Установите для URL обратного вызова URL, который вы настроили на шаге 1.
-
Установите для параметра topic URL значение
https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID, гдеCHANNEL_ID– идентификатор канала YouTube, для которого вы хотите получать push-уведомления.
-
-
Обрабатывайте уведомления, отправленные на ваш сервер обратного вызова. Ниже показан формат уведомления. Обратите внимание, что значение элемента
<yt:videoId>можно использовать для идентификации добавленного или обновленного видео. Значение элемента<yt:channelId>также позволяет определить канал, на котором размещено видео.<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns="http://www.w3.org/2005/Atom"> <link rel="hub" href="https://pubsubhubbub.appspot.com"/> <link rel="self" href="https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID"/> <title>YouTube video feed</title> <updated>2015-04-01T19:05:24.552394234+00:00</updated> <entry> <id>yt:video:VIDEO_ID</id> <yt:videoId>VIDEO_ID</yt:videoId> <yt:channelId>CHANNEL_ID</yt:channelId> <title>Video title</title> <link rel="alternate" href="http://www.youtube.com/watch?v=VIDEO_ID"/> <author> <name>Channel title</name> <uri>http://www.youtube.com/channel/CHANNEL_ID</uri> </author> <published>2015-03-06T21:40:57+00:00</published> <updated>2015-03-09T19:05:24.552394234+00:00</updated> </entry> </feed>