marukot-chの日記

弱小SEの雑記です

YouTubeのPush Notifications(PubSubHubbub)が直ったみたいです

PubSubHubbubについて

 PubSubHubbub(現在はWebSubとなっているかも。この記事ではPubSubHubbubで統一)はWebコンテンツの更新をリアルタイムに通知するためのプロトコルです。ふつうは定期的にサイト側に更新を問い合わせが必要なのですが、PubSubHubbubではあらかじめsubscribe(購読)しておくことで、フィードが公開された際に配信されます。

 Googleで検索してみると、Googkeのクローラーにブログの更新を通知させる目的で使っている人が多いらしいですね(下記のように解説していらっしゃる人も多いです)。

azuki-rinrin.com

*元々貼ってたサイトがなくなったみたいなので貼り替え

YouTubeとPubSubHubbubについて

 YouTubeではPubSubHubbubを使ったプッシュ通知機能があります。
この機能を使わず、配信されているかをチェックする方法を考えてみます。
(1)YouTube Data APIで配信するかどうかをチェック

 クオータがすぐ消費されてしまい、APIが使えなくなります

(2)各チャンネルをRSSでチェック
    アクセス頻度によってはYouTubeからブロックされる

 そういった問題が解決される、救世主となるべき機能でした。これがうまく動けば。

developers.google.com

 

Issue Trackerの様子

 Oct 26, 2021 10:47AMになんか動かないんだけど! といった内容のバグレポートがGoogleに報告されます。自分が動かないことに気づいたのは今年の9月ごろですが、1年ほどおかしな状態のまま放置されていたようです。subscribeはうまくできたように見えますが、配信がされない感じでした。

 Oct 28, 2022 01:15AMに以前機能停止してたけど、今はもう直ってたわ! といった形でfixed扱いされます。危うくバグったままクローズされるところでしたが、最初の報告者さんが全然直ってないのでreopenするか、別のバグレポート作った方がいい!? と圧力をかけたところ、reopenされました。それで、先日めでたく修正報告が来たという話です。

issuetracker.google.com

 

以前との違い(/xmlをつける)

 Topic URLに設定するURLに一部変更があります。「/xml」をつける必要があります(付けていない状態だと配信されませんでした)。

 This issue has been fixed by the engineering teams and the issue is no longer reproducible. Regarding, Channel ID: UCypzG0nv9B65DwOLJ578rZQ

Feed URL: https://www.youtube.com/feeds/videos.xml?channel_id=UCypzG0nv9B65DwOLJ578rZQ

This feed URL is an endpoint that will return the feed at the time of request. For the PubSubHubbub subscription the url the client wants is thos one: https://www.youtube.com/xml/feeds/videos.xml?channel_id=UCypzG0nv9B65DwOLJ578rZQ (note the /xml before /feeds).

 YouTubeのドキュメントをよくよく確認してみたところ、ちゃんと「/xml」があるバージョンになっていますね。しっかりしてる...。

  • Set the topic URL to https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID, where CHANNEL_ID is the YouTube channel ID for which you want to retrieve push notifications.

 

終わりに

 1年くらいバグってたと思われる、YouTubeのPush Notificationsが直りました。Googleのエンジニアと、今回一番がんばった感があるIssue Trackerの報告者さんに感謝です。簡単に使えるので、興味を持った皆様も試してみてください。

 これが直ってしまったので、discord-live-notificationの仕組みを考え直すべき日が来てしまったな、とちょっとだけ憂鬱です。

pubsubhubbub.appspot.com

 

終わりの後(2023/12/09追記)

ちょこちょこお試しブランチで開発していたのですが、うまく動きませんでした。2023/11あたりに本腰入れて開発し出し、2023/12にようやくほぼほぼ想定通り動くようになってきた、程度です。

discord-live-notificationbotはdiscord.py v1.7.3とdiscord-py-interactions v3.0.2を利用しており、そろそろdiscord.py v2系に書き換えたいと思っていたので、来年中にはやりたいですね。。。

 

参考

zenn.dev

blog.64p.org