YouTube Data API (v3) 通过 PubSubHubbub(一种用于可访问的网络资源的服务器到服务器发布/订阅协议)支持推送通知。通过 HTTP Webhook 将通知推送给订阅者,这比基于轮询的解决方案效率更高。借助 PubSubHubbub,您的服务器可以近乎实时地了解事件,而无需确定最佳轮询间隔或重复提取未更改的数据。
当频道执行以下任一活动时,您的 PubSubHubbub 回调服务器会收到 Atom Feed 通知:
- 上传视频
- 更新视频的标题
- 更新视频的说明
以下步骤介绍了如何订阅通知:
-
设置一个可以处理传入 Atom Feed 通知的回调服务器。
-
使用 Google 中心订阅推送通知:
-
将模式设置为
subscribe。(或者将模式设置为unsubscribe以取消订阅。) -
将回调网址设置为您在第 1 步中设置的网址。
-
将主题网址设置为
https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID,其中CHANNEL_ID是您要检索推送通知的 YouTube 频道 ID。
-
-
处理发送到回调服务器的通知。通知格式如下所示。请注意,您可以使用
<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/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>