個別ページのURLからRSSフィードURLを取得するfeedbag
移転しました →
自分用のメモも兼ねて今は亡きRSSリーダーを作ったときのノウハウを少しずつときどき書いていこうと思います。
RSSリーダーによくある機能として現在開いているページのRSSフィードを購読するというフローがあるんですが、それと同じ機能を実現しようとしたときに使用したruby gemを紹介します。
このfeedbagは渡されたURLからフィードのURLをいろいろ頑張って抽出し、URLのArrayを返すというシンプルなライブラリです。
$ gem install feedbag
でインストールでき、
Feedbag.find("URL")
とすれば使用できます。
ためしにこのブログのトップページのURLを渡してみます。
$ pry [1] pry(main)> require 'feedbag' => true [2] pry(main)> [2] pry(main)> Feedbag.find "http://xoyip.hatenablog.com/" => ["http://xoyip.hatenablog.com/feed", "http://xoyip.hatenablog.com/rss", "http://developer.hatena.ne.jp/ja/documents/bookmark/apis/atom"]
このように3つのURLを得ることができました。1つ目と2つ目が使えそうです。3つ目は関係ないURLですが、フィードだと判定されてしまったようです。
次にこのブログの個別ページのURLを渡してみます。
[3] pry(main)> Feedbag.find "http://xoyip.hatenablog.com/entry/2014/01/02/204306" => ["http://xoyip.hatenablog.com/feed", "http://xoyip.hatenablog.com/rss"]
今度は2つになりましたが、トップページを渡したときに得られたうちの2つと一致しています。どちらも使えそう。
このライブラリの実装を見てみるとHTMLタグを解析していろいろ頑張ってくれているみたい。
体感的にはフィードを持つ全てのサイトで動く感じがしたので、このライブラリに任せれば良いと思います。