YouTube Data API(v3)は、ウェブアクセス可能なリソースに対してサーバー間のパブリッシュ/サブスクライブ プロトコルを行う PubSubHubbub によるプッシュ通知をサポートしています。通知は HTTP Webhook を介してサブスクライバーにプッシュされるため、ポーリング ベースのソリューションよりもはるかに効率的です。PubSubHubbub を使用すると、サーバーは最適なポーリング間隔を決定したり、変化していないデータを繰り返し取得したりすることなく、ほぼリアルタイムでイベントを検出します。
PubSubHubbub コールバック サーバーは、チャンネルが次のいずれかのアクティビティを行うと、Atom フィード通知を受信します。
- 動画をアップロードした
- 動画のタイトルを更新する
- 動画の説明を更新したとき
通知を登録する手順は次のとおりです。
-
受信した Atom フィード通知を処理できるコールバック サーバーをセットアップします。
-
Google ハブを使用して、プッシュ通知の受信登録を行います。
-
[mode] を
subscribe
に設定します。(または、モードをunsubscribe
に設定して定期購入を解約します)。 -
[コールバック URL] を、手順 1 で設定した URL に設定します。
-
トピック URL を
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/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>