Last active
August 29, 2015 14:07
-
-
Save QB/e9374ce22e145fcc754a to your computer and use it in GitHub Desktop.
フォロー・リムーブ等を管理するスクリプト。動かすと、カレントに諸々のdatファイルをまき散らすので、気をつけてください。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "twitter" | |
require "json" | |
# データファイル名に使う単語を決めておく (ユーザ名が接頭辞になる) | |
FR_FILE = "_friend.dat" | |
FO_FILE = "_follower.dat" | |
MESSAGE_FILE = "_message.dat" | |
# トークンファイルの名前も決めておく | |
TOKEN_FILE = "token.json" | |
# どのアカウントを対象にするか (screen_nameで指定) | |
# 必ずTOKEN_FILEの中に入っているものを指定する | |
account = ["account1", "account2"] | |
##### 設定ここまで ##### | |
class AdminFollow | |
def initialize(user) | |
@screen_name = user | |
declare | |
@bar = "\n" + "=" * 20 | |
@FR_FILE = user + FR_FILE | |
@FO_FILE = user + FO_FILE | |
@MESSAGE_FILE = user + MESSAGE_FILE | |
# 前回データの有無 | |
@fr_exist = File.exist?(@FR_FILE) | |
@fo_exist = File.exist?(@FO_FILE) | |
@client = Twitter::REST::Client.new do |config| | |
config.consumer_key = TOKEN[user]["consumer_key"] | |
config.consumer_secret = TOKEN[user]["consumer_secret"] | |
config.access_token = TOKEN[user]["access_token"] | |
config.access_token_secret = TOKEN[user]["access_token_secret"] | |
end | |
end | |
def declare | |
puts | |
puts "#" * 40 | |
puts "### @" + @screen_name + " について処理を開始します" | |
puts "#" * 40 | |
end | |
def screen(array) | |
back = @client.users(array).map(&:screen_name) | |
return back | |
end | |
def read | |
# 前回取得したフォロー関係情報を配列に詰める | |
@past_fr = @fr_exist ? open(@FR_FILE).readlines.map(&:to_i) : [] | |
@past_fo = @fo_exist ? open(@FO_FILE).readlines.map(&:to_i) : [] | |
puts "前回データ読込終了" + @bar | |
end | |
def request | |
@now_fr = @client.friend_ids.to_a | |
@now_fo = @client.follower_ids.to_a | |
puts "現在のフォロー関係の取得終了" + @bar | |
end | |
def puts_unrequited_list | |
now_difference = @now_fr - @now_fo | |
puts screen(now_difference) | |
puts "現在の片思いは上記の通りです" + @bar | |
end | |
def data_write | |
puts @FR_FILE + "を新規作成します" if !@fr_exist | |
puts @FO_FILE + "を新規作成します" if !@fo_exist | |
# どうせ上書きするのでwなのは気にしない | |
fr = open(@FR_FILE, "w") | |
fo = open(@FO_FILE, "w") | |
@now_fr.each {|f| fr.puts f } | |
@now_fo.each {|f| fo.puts f } | |
puts "dataの書き込み完了" + @bar | |
fr.close | |
fo.close | |
end | |
def message_write | |
n_fr = @now_fr - @past_fr # new friend | |
d_fr = @past_fr - @now_fr # disappeared friend | |
n_fo = @now_fo - @past_fo # new follower | |
d_fo = @past_fo - @now_fo # disappeared follower | |
puts @MESSAGE_FILE + "を新規作成します" if !File.exist?(@MESSAGE_FILE) | |
file = open(@MESSAGE_FILE, "a+") | |
file.puts Time.now.to_s | |
file.puts "new friend: " + screen(n_fr).to_s | |
file.puts "disappeared friend: " + screen(d_fr).to_s | |
file.puts "new follower: " + screen(n_fo).to_s | |
file.puts "disappeared follower: " + screen(d_fo).to_s | |
file.puts | |
puts "messageの書き込み完了" + @bar | |
file.close | |
end | |
end | |
open(TOKEN_FILE) {|io| TOKEN = JSON.load(io) } | |
account.each do |a| | |
rs = AdminFollow.new(a) | |
rs.read | |
rs.request | |
rs.puts_unrequited_list | |
rs.data_write | |
rs.message_write | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"account1": { | |
"consumer_key": "YOUR_CONSUMER_KEY", | |
"consumer_secret": "YOUR_CONSUMER_SECRET", | |
"access_token": "YOUR_ACCESS_TOKEN", | |
"access_token_secret": "YOUR_ACCESS_TOKEN_SECRET" | |
}, | |
"account2": { | |
"consumer_key": "YOUR_CONSUMER_KEY", | |
"consumer_secret": "YOUR_CONSUMER_SECRET", | |
"access_token": "YOUR_ACCESS_TOKEN", | |
"access_token_secret": "YOUR_ACCESS_TOKEN_SECRET" | |
}, | |
"account3": { | |
"consumer_key": "YOUR_CONSUMER_KEY", | |
"consumer_secret": "YOUR_CONSUMER_SECRET", | |
"access_token": "YOUR_ACCESS_TOKEN", | |
"access_token_secret": "YOUR_ACCESS_TOKEN_SECRET" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment