Подпишитесь на push-уведомления

API данных YouTube (v3) поддерживает push-уведомления через PubSubHubbub — межсерверный протокол публикации/подписки для ресурсов, доступных в Интернете. Уведомления рассылаются подписчикам через веб-перехватчики HTTP, что намного эффективнее, чем решения на основе опросов. Благодаря PubSubHubbub ваш сервер узнает о событиях практически в реальном времени, без необходимости определять оптимальный интервал опроса или повторно получать данные, которые не изменились.

Ваш сервер обратного вызова PubSubHubbub получает уведомления канала Atom, когда канал выполняет любое из следующих действий:

  • загружает видео
  • обновляет название видео
  • обновляет описание видео

Следующие шаги объясняют, как подписаться на уведомления:

  1. Настройте сервер обратного вызова, который может обрабатывать входящие уведомления канала Atom.

  2. Используйте Google Hub, чтобы подписаться на получение push-уведомлений:

    • Установите режим subscribe . (Или установите режим unsubscribe , чтобы отменить подписку.)

    • Установите URL-адрес обратного вызова на URL-адрес, который вы установили на шаге 1.

    • Установите URL-адрес темы https://www.youtube.com/feeds/videos.xml?channel_id= CHANNEL_ID , где CHANNEL_ID — это идентификатор канала YouTube , для которого вы хотите получать push-уведомления.

  3. Обрабатывать уведомления, отправляемые на ваш сервер обратного вызова. Формат уведомления показан ниже. Обратите внимание, что вы можете использовать значение элемента <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>