订阅推送通知

YouTube Data API (v3) 支持通过 PubSubHubbub 推送通知,PubSubHubbub 是一种服务器到服务器发布/订阅协议,适用于网络可访问的资源。通知通过 HTTP 网络钩子推送给订阅者,比基于轮询的解决方案更高效。借助 PubSubHubbub,您的服务器可以近乎实时地了解事件,而无需确定最佳轮询间隔,也无需重复提取未更改的数据。

当某个频道执行以下任意活动时,您的 PubSubHubbub 回调服务器会收到 Atom Feed 通知:

  • 上传视频
  • 更新视频的标题
  • 更新视频的说明

以下步骤说明了如何订阅通知:

  1. 设置可以处理传入的 Atom Feed 通知的回调服务器。

  2. 使用 Google Hub 订阅以接收推送通知:

    • mode 设置为 subscribe。(或者将模式设置为 unsubscribe 以取消订阅。)

    • 回调网址设置为您在第 1 步中设置的网址。

    • 主题网址设置为 https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID,其中 CHANNEL_ID 是您要检索其推送通知的 YouTube 频道 ID

  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>