- アクション数:51(-19)
- カレンダー数:3(-1)
- プロジェクト数:19(-1)
- Someday/Maybe数:48(-1)
ちょっと倦怠期。リストを見ずに行動することが多い。まぁそれほど問題はないんだけど…。
ちょっと倦怠期。リストを見ずに行動することが多い。まぁそれほど問題はないんだけど…。
たろっとさんの人気が増すにつれて引けないという話が大きくなってきたので、副アカウントを作ってみました。名前はたろっとさんさんさんさん。引く箇所は変えてないんですが、規制対策のためいろいろやってます。
まず、たろっとさんをフォローしている人だけに応答を返すようにしました。最初は誰でも構わず応答を返すようにしてたんですが、すぐにspam扱いされてsuspendにorz。これでアカウントが2つ死にました(´・ω・`)。なのでフォローしている人だけ応答するようにしてます。フォローしてなくても送ってしまうbotは珍しくないと思うのですが、知らない人に送る頻度が多かったのと、URLをくっつけてしまっているのがまずいのかなと。なので知っている人に変えよーということで。
ソースコード1がfollowersを取得してファイルに保存している箇所、ソースコード2がtarot3333のロジックを組み込んだソースコード。
ソースコードその1
#!/usr/local/bin/ruby
require 'net/http'
require 'rss'
require 'rexml/document'
include REXML
req = Net::HTTP::Get.new("/statuses/followers.xml?screen_name=tarot3333")
req.basic_auth "tarot3333", "password"
followers_from_xml = []
Net::HTTP.start("twitter.com", 80) {|http|
res = http.request(req)
doc = Document.new(res.body)
doc.elements.each("*/user") {|user|
followers_from_xml.push(user.elements["screen_name"].text)
}
}
followers_from_db = open("tarot3333.db").readlines.each {|line| line.chop! }
followers_towrite = followers_from_xml | followers_from_db
followers_towrite.uniq!
open("tarot3333.db", "w") {|f|
f.puts followers_towrite.join("\n")
}
ソースコードその2
#!/usr/local/bin/ruby
require 'net/http'
require 'rss'
require 'rexml/document'
require 'time'
include REXML
def post(name, status)
req = Net::HTTP::Post.new("/statuses/update.json")
req.body = status
Net::HTTP.start("twitter.com", 80) {|http|
req.basic_auth "tarot3", "password"
res = http.request(req)
$log.puts(name + "," + res.inspect + "," + Time::now.to_i.to_s)
if res.code == "200" then
return
end
tarot3333 = open("tarot3333.db").readlines.each {|line| line.chop! }
if tarot3333.include?(name) then
req.basic_auth "tarot3333", "password"
res = http.request(req)
$log.puts(name + "," + res.inspect + "," + Time::now.to_i.to_s + ",tarot3333")
end
}
end
req = Net::HTTP::Get.new("/statuses/mentions.xml")
req.basic_auth "tarot3", "password"
names = []
Net::HTTP.start("twitter.com", 80) {|http|
res = http.request(req)
doc = Document.new(res.body)
doc.elements.each("*/status") {|item|
name = item.elements["user/screen_name"].text
text = item.elements["text"].text
time = Time::parse(item.elements["created_at"].text)
now = Time::now
start_time = Time::local(now.year, now.month, now.day, now.hour, now.min, 0, 0) - 120
end_time = start_time + 119
if time >= start_time && time <= end_time && !text.include?("RT") then
names.push(name)
end
}
}
tarot = open("tarot.csv")
$log = open("log.txt", "a")
lines = tarot.readlines
names.each {|name|
index = rand(lines.size)
status = 'status=@' + name + "%20%E3%81%AE%E3%82%AB%E3%83%BC%E3%83%89%E3%81%AF" + URI.encode(lines[index])
post(name, status)
}
毎週日曜日はレビューの日に当ててる。
カレンダーに入れたアクションはあまり機能していない。OmniFocusを見る習慣がまだ付いていないのが原因。もうちょっと様子見る。
アニメ一本丸ごとnext action→someday/maybeに移したのでだいぶへった。とりあえずハガレン一期見てからだなと。