「Rubytterを使ってTwitterのFavを書き出すプログラム」を再修正した

2010年02月10日 00時22分 | Ruby, Twitter | By: mitukiii

̃Gg[͂ĂȃubN}[Nɒlj

以前こんな記事を書きました。

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|〜」以降の部分を削除してください。ლ(╹◡╹ლ)

関連記事

̃Gg[͂ĂȃubN}[Nɒlj

コメントをどうぞ