ニコニコ動画の毎時ランキングをつぶやくtwitterBotを作った


NicoHourlyRank
http://twitter.com/NicoHourlyRank

これは何?

twitterBotの習作に、ニコニコ動画の毎時ランキングをつぶやくBotを作ってみました
毎時15分あたりに更新します

経緯

更新頻度が高いけど、毎回チェックしたり、RSS取ったりする程ではないモノに対して、twitterBotは有効かと思って制作

技術メモ

twitter

rubytwitterにアクセスするライブラリ
導入に少々苦戦


まず、httpartyが無いと怒られる

require 'twitter'
LoadError: no such file to load -- httparty
        from /home/kasei-san/lib/rubygems/custom_require.rb:32:in `gem_original_require'
        from /home/kasei-san/lib/rubygems/custom_require.rb:32:in `require'
        from ./../lib/twitter/search.rb:2
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `gem_original_require'
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `require'
        from ./../lib/twitter.rb:14
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `gem_original_require'
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `require'
        from ./twitter.rb:2
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `gem_original_require'
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `require'
        from (irb):4


httpartyを導入

%gem install httparty


今度は、echoeが無いと怒られる

irb(main):002:0> require 'httparty'
Gem::LoadError: Could not find RubyGem echoe (>= 0)

        from /home/kasei-san/lib/rubygems.rb:578:in `report_activate_error'
        from /home/kasei-san/lib/rubygems.rb:134:in `activate'
        from /home/kasei-san/lib/rubygems.rb:158:in `activate'
        from /home/kasei-san/lib/rubygems.rb:157:in `each'
        from /home/kasei-san/lib/rubygems.rb:157:in `activate'
        from /home/kasei-san/lib/rubygems/custom_require.rb:31:in `require'
        from (irb):2


echoeを導入

%gem install echoe


今度は、.twitterが無いと怒られる

irb(main):004:0> require 'twitter'
Errno::ENOENT: No such file or directory - /home/kasei-san/.twitter
        from ./twitter.rb:3:in `initialize'
        from ./twitter.rb:3:in `open'
        from ./twitter.rb:3
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `gem_original_require'
        from /home/kasei-san/lib/rubygems/custom_require.rb:27:in `require'
        from (irb):4
        from /home/kasei-san/lib/rubygems/exceptions.rb:81


単なるファイルっぽいので、空のテキストファイル .twitter を生成


やっとこさ成功

irb(main):002:0> require 'twitter'
=> true


ちなみにPOSTはこんな感じ

twit = Twitter::Base.new("メールアドレス", "パスワード")
twit.update('テストテストー')

その他

せっかくなので、100位までの毎時ランキングのデータを保存しています
何か悪いことに使えないか計画中

2009/02/07 追記

ニコニコ動画のレイアウト変更で、正しくスクレイプできてなかった不具合を修正しました
どうやら02/16の16時頃にレイアウトが変更された模様

2009/02/07 追記2

0時〜9時の間に、時刻表示がおかしくなる不具合を修正しました

2009/02/09 追記

またもやレイアウト変更対応

2009/02/11 追記

urlが相対Pathになっていた不具合対応