「自動フォロー返し(Ruby bot)」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
ちゃんと憶えてるうちに記録しとかないと。
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
改訂版をつくった。ー>[[自動フォロー返し(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