読者です 読者をやめる 読者になる 読者になる

オープンソース版のFastladderでフィードが見つからないことがある

先日リリースされたオープンソース版のFastladderを試してみたのだけど、フィードを追加するときにautodiscoveryがたまに失敗する。調べてみたらFastladder自体の問題ではなくて、rfeedfinderに問題があった。

require 'net/http'
require 'rubygems'
require 'htmlentities'
require 'open-uri'
require 'hpricot'
require 'timeout'

require 'rfeedfinder/version'

module Rfeedfinder

  module_function

  def makeFullURI(uri)
    uri = uri.strip.sub(/^feed(.*)/, 'http\1').downcase
    if /^http|https/.match(uri)
      return uri
    else
      return "http://" << uri
    end
  end

はてなで大文字のIDの時に失敗するので大方の予想は付いていたのだけどrfeedfinder.rbのmakeFullURIメソッドで見事にdowncaseされてた。

#!/usr/bin/ruby
require 'rubygems'
require 'rfeedfinder'

urls = [
    'http://d.hatena.ne.jp/jkondo/',
    'http://d.hatena.ne.jp/Jkondo/',
    'http://d.hatena.ne.jp/KGA/'
]

urls.each do |url|
    puts url
    Rfeedfinder.feeds(url).each {|feedlink| puts '- %s' % feedlink }
end

これが

http://d.hatena.ne.jp/jkondo/
- http://d.hatena.ne.jp/jkondo/rss
- http://d.hatena.ne.jp/jkondo/rss2
- http://d.hatena.ne.jp/jkondo/foaf
- http://d.hatena.ne.jp/jkondo/opensearch/diary.xml
- http://d.hatena.ne.jp/jkondo/opensearch/archive.xml
- http://d.hatena.ne.jp/jkondo/mobile
http://d.hatena.ne.jp/Jkondo/
- http://d.hatena.ne.jp/jkondo/rss
- http://d.hatena.ne.jp/jkondo/rss2
- http://d.hatena.ne.jp/jkondo/foaf
- http://d.hatena.ne.jp/jkondo/opensearch/diary.xml
- http://d.hatena.ne.jp/jkondo/opensearch/archive.xml
- http://d.hatena.ne.jp/jkondo/mobile
http://d.hatena.ne.jp/KGA/

こうなる。そもそもmakeFullURIって何の意味があるんだ。相対パス絶対パスにしているわけでもないし。他にもYouTubeのフィードを勝手に探したりするようになってたりしてrfeedfinderは謎な感じがする。