自動フォロー返し(Ruby bot)

「自動フォロー返し(Ruby bot)」の編集履歴(バックアップ)一覧に戻る

自動フォロー返し(Ruby bot) - (2011/06/26 (日) 09:36:46) のソース

改訂版をつくった。ー>[[自動フォロー返し(Ruby bot)2]]
----
ちゃんと憶えてるうちに記録しとかないと。

http://rubydoc.info/gems/twitter/1.3.0/Twitter/Client/FriendsAndFollowers:follower_ids
や
http://rubydoc.info/gems/twitter/1.3.0/Twitter/Client/User:followers

があまり詳しくない(Returnされてくる値の扱い方を教えてくれない、[[follower_ids.idsなどという使い方もある>http://twitter.com/#!/ka_/status/65344679436230656]]のに何も書かれていない)ので

http://d.hatena.ne.jp/tondol/20100412/1271016565

にほとんど頼り切った。上のリンク先のものにこれに一行だけ加えたものが以下。

#highlight(linenumber,ruby){
#! /usr/bin/ruby
# encoding: utf-8

require "time"
require "rubygems"
require 'twitter'

def fetch(instance, method, array_name, query)
	next_cursor = -1
	begin
		query['cursor'] = next_cursor
		instance.__send__(method, query).each{|a|
			value = a.pop
			key = a.pop
			if key == array_name then
				value.each{|v|
					yield(v)
				}
			elsif key == "next_cursor" then
				next_cursor = value.to_i
			end
		}
	end while next_cursor > 0
end

# ログイン
Twitter.configure do |config|
  config.consumer_key = '????????????????????????????'
  config.consumer_secret = 'XXXXXXXXXXXXXXXXXXXxx'
  config.oauth_token = 'PPPPPPPPPPPPPPPPPPP'
  config.oauth_token_secret = 'TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT'
end 
  
# 自身のfollowersを全件取得して表示
  puts "my followers"
  fetch(Twitter, :followers, "users", {})   {|v|
    puts "id: #{v.id}, screen_name: #{v.screen_name}"
    Twitter.friendship_create(v.id)                          #←この部分を追加した
 }
}

http://d.hatena.ne.jp/tondol/20100412/1271016565
のように、既にフォローしているフォロワーに対してフォローする動作を除いていないので、無駄が多い。&del(){でも、まあ問題はないと思う。} 問題発生。フォローしてる人に対してフォロー通知が何度も行ってしまう。これはTwitter自体のバグと言ってもいいくらいだけど,あまり早く対応されない気がするので,どうにか直したい。既にフォローした人のIDを記録しておいて,それをフォローする対象から除外するのがオーソドックスかな。だれかどうしたら良いか教えてください。
あと、上でReturnされる値の扱い方がわからないと書いたけど、これがわからないとこの先tweetを扱ったりするのに困るんだけどね・・・

さらに追記。フォロワーの取得にはログインは不要なので、
http://netzakki.seesaa.net/article/128216734.html
とかでもできそうだった。

written by OK