twitterでfollowされてるけど、followしてないユーザをfollowするスクリプト

Rubyのお勉強中ということで、メモ的にエントリー。

ある事情で情報共有のためのtwitterアカウントを作成しました。
情報が欲しいと思ってfollowしたユーザに対してreplyでやりとりできるようにfollowし返す必要がでてきて、手動でfollowするのはしんどい(かも)ので、Rubyスクリプトを作成してみました。

環境は以下のもの。

#!/usr/bin/env ruby -Ku
# -*- coding: utf-8 -*-

require 'rubygems'
require 'twitter'

user_id = 'userid'
password = 'password'

following_count = 0
client = Twitter::Base.new(Twitter::HTTPAuth.new(user_id, password))
client.followers.each do |s|
  unless s.following
    client.friendship_create(s.id, true)
    puts s.screen_name + "をfollowしました。" 
    following_count += 1
  end
end
puts "follow対象はいませんでした。" if following_count == 0

これでちゃんと動いてるっぽい。

なにぶん、初心者ゆえ、Rubyらしくないところやもっと賢く記述する方法はあると思いますがご容赦ください。

Twitter::Base.newの引数がどのバージョンからか変更されているらしかったです。
認証用のクラスが分離されて、Twitter::HTTPAuthとTwitter::OAuthになっていました。
現状で最新と思われる0.7.10を使用。今回はTwitter::HTTPAuthを使用しています。

認証した後、followersでfollowしてもらっているユーザを取得して、ユーザをfriendship_createでfollowしています。



TwitterそのもののAPIのドキュメントと、twitter gemのAPIドキュメントを見ながら作成しました。
gemの方にはTwitterライブラリ自体の説明はないので、当たり前といえば当たり前ですが。



すんなりコードがでてこないや。Rubyもっと勉強しよう(汗)。




参考:Twitter API 仕様書 日本語訳 第四十一版 (2009年12月3日版)
   http://watcher.moe-nifty.com/memo/docs/twitterAPI41.txt
   Ruby Twitter Gem by John Nunemaker
   http://rdoc.info/projects/jnunemaker/twitter