Assinar notificações push

A API YouTube Data (v3) oferece suporte a notificações push via PubSubHubbub, um protocolo de publicação/assinatura de servidor para servidor para recursos acessíveis pela Web. As notificações são enviadas aos assinantes por meio de webhooks HTTP, o que é muito mais eficiente do que as soluções baseadas em pesquisas. Com o PubSubHubbub, seu servidor descobre eventos quase em tempo real, sem ter que determinar o intervalo de pesquisa ideal ou buscar repetidamente dados que não mudaram.

Seu servidor de retorno de chamada PubSubHubbub recebe notificações de feed Atom quando um canal realiza uma das seguintes atividades:

  • envia um vídeo
  • atualiza o título de um vídeo
  • atualiza a descrição de um vídeo

As etapas a seguir explicam como se inscrever para receber notificações:

  1. Configure um servidor de retorno de chamada que possa lidar com notificações de feed Atom.

  2. Use o hub do Google para se inscrever e receber notificações push:

    • Defina o mode como subscribe. Ou defina o modo como unsubscribe para cancelar uma assinatura.

    • Defina o URL de callback como o URL configurado na etapa 1.

    • Defina o URL do tema como https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID, em que CHANNEL_ID é o ID do canal do YouTube que você quer recuperar as notificações push.

  3. Processe as notificações enviadas ao servidor de callback. O formato da notificação é mostrado abaixo. É possível usar o valor do elemento <yt:videoId> para identificar o vídeo recém-adicionado ou atualizado. Você também pode usar o valor do elemento <yt:channelId> para identificar o canal proprietário desse vídeo.

    <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>