Skip to content

Instantly share code, notes, and snippets.

@rummelonp
Created September 2, 2010 02:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rummelonp/561777 to your computer and use it in GitHub Desktop.
Save rummelonp/561777 to your computer and use it in GitHub Desktop.
ついカッとなって書いたりむったーもどきのRubyスクリプト。OAuthは自分で取得して読み替えてください。
# -*- coding: utf-8 -*-
if ARGV.empty?
puts "Usage ruby remtter.rb [screen_name] ..."
end
require 'rubygems'
require 'rubytter'
require 'yaml'
TargetUsers = ARGV
CurrentDir = File.dirname(File.expand_path(__FILE__))
OauthPath = "#{CurrentDir}/../mitukiii.jp.yml"
# Initialize Twitter.
oauth = YAML.load_file(OauthPath)
consumer = OAuth::Consumer.new(oauth[:consumer_key],
oauth[:consumer_secret],
:site => "http://twitter.com")
token = OAuth::AccessToken.new(consumer,
oauth[:oauth_token],
oauth[:oauth_token_secret])
t = OAuthRubytter.new(token)
TargetUsers.each do |user|
path = "followers.#{user}.yml"
today = t.followers_ids(user)
# Read yesterday followers.
yesterday = File.exists?(path)? YAML.load_file(path): today
# Get screen names.
names = (yesterday - today).collect do |id|
begin
puts id
follower = rubytter.user(id)
"@#{follower[:screen_name]}"
rescue => e
# Error occur when user account is deleted.
puts e
end
end.select do |name|
not name.nil?
end
# Send direct message.
until names.empty?
message = "#{names.slice!(0, 7).join(' ')} にアンフォローされました。"
puts message
t.direct_message(user, message)
end
# Write today followers.
YAML.dump(today, File.open(path, 'w'))
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment