桜恋唄
幽遊白書・黒鵺×蔵馬中心、桜枝真央の同人的創作の館

RSS0.91 | RSS2.0 || 桜恋唄 (HOME) » 桜恋唄構築話 » PubSubHubbub対応(を試みた)

PubSubHubbub対応(を試みた)

Contents

Writer:
桜枝真央
Category:
桜恋唄構築話
Posted on:
2013-07-10 21:04

 あくまで「試みた」レポートです。残念ながら504エラーが出て動作しないので…ちなみに Google PubSubHubbub Hub × ロリポップ (チカッパ優待プラン) × Nucleus CMS v3.64。

 日記サイト「Mao's Secret」の更新情報を dlvr.it 経由で Twitter に流しているのですが、半日くらい反映が遅れることがあります。Twitter で愚痴っていたところ「PubSubHubbub 使ってみては」というアドバイスを頂いたので試してみることにしました。

と、その前に

 「PubSubHubbub」(パブサブハバブ;以下「PuSH」) とは一体何者なのか? 初耳だったのでググったところ Google が開発したプロトコルのようです。サイトの更新情報を“ハブ”となるサーバーに通知することで、そのハブから dlvr.it 等の PuSH 対応サービスに「更新したよ」という情報が渡り、即座に反映してもらえる…というものらしい。正確な解説は他所に任せます><

実装1:フィードを修正する

 「PubSubHubbubのpubに対応する:ryo.com」を参考にさせて頂きました。まずはフィードを PuSH に対応させる必要があります。RSS 2.0 (1.0は未確認) と Atom 1.0 が対応しているらしいので、Nucleus なら各スキンをいじっておけばOK。「pubsubhubbub.appspot.com」は Google が運用するハブです。

RSS 2.0 の場合

1. rss 要素に以下のように xmlns 属性を埋め込む。


<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	

2. <channel> 内に以下を記述。


<atom:link rel="self" type="application/rss+xml" href="(Your Feed URL)" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	
Atom の場合

<title>〜</title>の下に以下を記述。


<link rel="self" type="application/atom+xml" href="(Your Feed URL)" />
<link rel="hub" href="http://pubsubhubbub.appspot.com" />
	

実装2:更新情報を送信する

 スキンを対応させたら次は通知方法の準備です。Bookmarklet も見つけたのですが動かないし (Javascript 全く分からんので早々に諦めた…)、何よりブログ投稿後に別の操作が必要なのはスマートじゃありません。結局、上記サイトにあったコードをパクり、PostAddItem 及び PostUpdateItem で動く Nucleus プラグインをでっち上げてしまいました。実は最初全く動かなくて焦りました…上記サイトの「CURLOPT_POSTDATA」は多分「CURLOPT_POSTFIELDS」じゃないかな。

実装3:Working Draft 0.4への対応

 実はまだやってません。「PubSubHubbub v0.4でのLink HTTPヘッダー - Weblog - hail2u.net」によると、v0.4 は HTTP ヘッダも設定しておかないといけないらしい。

実装4:動作確認

 Publish 通知を自動化してしまうと「そもそも本当に送信できているのか?」という疑問が自然と湧いてきます。頼りにしていた Firefox のアドオン「Live HTTP Headers」では全くキャッチできず (ブラウザ操作によるリクエストでないから?)、結局 CURLINFO_HEADER_OUT を true に設定し curl_getinfo() を使ってリクエストヘッダ&レスポンス (成功なら204) を確認しました。うん、一応動いてるみたいね…。

実装1再:スキン/テンプレートの書き直し

 プラグインは動いているようですが、更新情報が subscriber に全く反映されません (特に Google 検索!)。診断ツール (下の Publisher Diagnostics) で確認したら案の定、「Last successful fetch」と「Content received」が n/a です。もしやフィード自体がおかしいんじゃないの?と見直したら Atom のスキンが 0.3 用のままだった…。RSS 2.0 は Valid だったんですが。

実装4再:504エラーが…

 結論から言うと、スキンやテンプレートを書き直しても全く反映されませんでした…。試しに (デバッガでちゃんと記事を取得できることを確認した) 他所のフィードのソースをコピペし、うちのサーバにアップしたもので試してみたのですがやっぱりダメ (構文エラーや動的生成が原因でないか確認するためなのでお許しを)。デバッグ結果をよくよく見ると 504 error が出ているじゃないですか! 自分じゃどうしようもなくて (サイト置いてるレンサバの) ロリポップに質問したけど「他所のサービスなので答えられない」というつれない返事。ロリポ側の問題だと思うんだけどな…。

現状

 ハブ側の設定次第では行けるかもしれないので「Superfeedr」に変更してみました (アカウントわざわざ作った)。こっちは静的ファイルは読み込めたし。まあ他に私が出来ることはないですよね…。元々お世辞にも軽いとは言えないレンサバですし、そろそろ真剣に乗換え考えましょうか (泣)。

||

コメント

まだコメントはありません。

このアイテムは閲覧専用です。コメントの投稿、投票はできません。

桜恋唄について | 管理人について | サークル情報 | サイトマップ