twitterのlistに一気にユーザーを追加するスクリプト

書いたよ

require 'net/http'
require 'kconv'
require 'yaml'
require 'pp'
require 'rexml/document'


config_file = ARGV.shift || 'config.yaml'
config = YAML.load_file(config_file)

screen_names = config['screen_names']
group = config['group']
username = config['username']
password = config['password']

def get_userid(screen_name)
   body = Net::HTTP.get('twitter.com', "/users/show.xml?screen_name=#{screen_name}");
   doc = REXML::Document.new(body)
   doc.get_elements("/user/id/")[0].get_text.to_s
end   

screen_names.each do |screen_name|
   id = get_userid(screen_name)
   
   req = Net::HTTP::Post.new("/#{username}/#{group}/members.xml")
   req.set_form_data({:id=>"#{id}"})
   req.basic_auth(username, password)
   Net::HTTP.start('twitter.com') do |http|
      res = http.request(req)
   end
   
   sleep 5
end

実行ディレクトリと同じ場所に、config.yaml を置くか、引数でファイル名を指定してね。

config.yaml はこんな感じ。

username: username
password: password

group: zenra

screen_names: 
  - sugyan
  - zenra_bot


ほんとは、pit 使いたかったんだけど、windows だとうまくいかんかったよ…