先日リリースされたオープンソース版の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は謎な感じがする。