F.Ko-Jiの「一秒後は未来」

RSSフィードのオートディスカバリー(Auto Discovery)を探す方針

Auto Discoveryはheadタグ内にlinkタグで指定されますが、すべてのlinkタグがオートディスカバリーとは限らないため、linkタグの中から適切なタグを見つける必要があります。

<link rel="alternate" type="application/rss+xml"
 title="F.Ko-Jiの「一秒後は未来」 RSSフィード"
 href="http://feeds.feedburner.jp/blog-fkoji" />

↑ オートディスカバリーの例

linkタグを見つけるためだけにHTMLのパーサーを使うのはめんどくさいので、マッチングを何度か利用することにします。おおまかな流れは以下の通り。

  • 与えられたHTMLから link タグをマッチングですべて抜き出します。
  • それぞれのlinkタグについて以下の処理をおこないます。
    • rel=”alternate” 属性があるか確認します。
    • type属性を探します。
    • type属性の値が以下の5つのいずれかであることを確認します。
      • application/rss+xml
      • application/atom+xml
      • application/rdf+xml
      • application/xml
      • text/xml
    • href属性を探します。
    • href属性の値を絶対URLに変換します。
    • 変換後のURLが不正なURLでないことを確認します。(URL表現的にとか、プライベートアドレスでないかとか)
  • URLを取得できたものの中にapplication/rss+xm、application/atom+xml、application/rdf+xmlのいずれかが含まれていれば、application/xml、text/xmlのものは無視します。なぜならサイトマップのオートディスカバリーである可能性があるためです。

という流れで大体うまくフィードのURLを取得することができます。忘れがちなのがURLを絶対URLに変換しないといけないとこでしょうか。はてなブックマークのAuto Discoveryが普通にスラッシュ始まりで指定されていたので気づきました。

最後のサイトマップの可能性は、細かいことですがたまにあるので念のため意識しておくといいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など