以前こんな記事を書きました。
Rubytterを使っ てTwitterのFavを書き出すプログラムを作った
「Rubytterを使ってTwitterのFavを書き出すプログラム」を修正した
- あれ?Rubytterのバージョン上げたら動かなくなっちゃった><;
- あれれ?21件以上Favがある時に変な挙動する(ヽ’ω`)
と、いうわけで再修正しました。
(現在、Rubytterの最新版は1.0.3)
require 'rubygems' # gem "rubytter", "0.10.3" require 'rubytter' require 'parsedate' t = Rubytter.new('**ID**', '**PASSWORD**') page = 1 ids = [] loop do favs = t.favorites("", {:page => page}) favs.each do |fav| puts '@' + fav.user.screen_name puts fav.text date = ParseDate::parsedate(fav.created_at) date = Time::local(*date[0..-3]) puts (date + 60 * 60 * 9).strftime("%Y/%m/%d %H:%M:%S") puts 'http://twitter.com/' + fav.user.screen_name + '/status/' + fav.id.to_s puts ids.push(fav.id) # t.remove_favorite(fav.id) end if favs.count < 20 break else page += 1 end end ids.each do |id| t.remove_favorite(id) end
変更点
「t.favorites(:page => page)」→「t.favorites(“”, :page => page)」
なんでか分かりませんがこれで動くようになりました。
Rubytterの中身は面倒くさいので見てません。
または「gem “rubytter”, “0.10.3″」で古いバージョンを指定することでも正しく動きました。が、古いバージョン入ってない人はわざわざ指定してインストールするの面倒くさいよね。ってことでコメントアウト。
後、page番号はどうやら1ページかららしいです。前は0って書いてました。1回無駄に回るのでここも変更。
Favが21件以上ある時に変な挙動する、というのは、削除しながら次のページ次のページって取得してるため、少しずつズレてってました。なので、idを集めて最後にガガガッと削除するようにしました。
一応動作確認しましたが、もし動かない場合はTwitterかコメントにて連絡ください。ლ(>ω<;ლ)
(追記)
このスクリプトは全てのFavを削除します。
Fav削除したくない場合は、「ids.each do |id|〜」以降の部分を削除してください。ლ(╹◡╹ლ)