Archive for 11月, 2009

  • アクション数:51(-19)
  • カレンダー数:3(-1)
  • プロジェクト数:19(-1)
  • Someday/Maybe数:48(-1)

ちょっと倦怠期。リストを見ずに行動することが多い。まぁそれほど問題はないんだけど…。

  • アクション数:70(-14)
  • カレンダー数:4(0)
  • プロジェクト数:20(0)
  • Someday/Maybe数:49(-2)

たろっとさんの人気が増すにつれて引けないという話が大きくなってきたので、副アカウントを作ってみました。名前はたろっとさんさんさんさん。引く箇所は変えてないんですが、規制対策のためいろいろやってます。

まず、たろっとさんをフォローしている人だけに応答を返すようにしました。最初は誰でも構わず応答を返すようにしてたんですが、すぐに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をiPhoneの下の4つのアイコンに割り当てた。これで見る機会が増えるかな?
  • カレンダーの先送りが多い。もっと聖域じゃないといけないはず。ないよりはマシという程度。
  • twilogを使ってtwitterのログを取って毎週を振り返るようにしている。プライベートなことはほとんど記録してあるのでだいぶ助かる。
  • ハガレン一期は1話しか見てないのであまり減らなかった。
  • アクション数:84
  • カレンダー数:4
  • プロジェクト数:20
  • Someday/Maybe数:51

毎週日曜日はレビューの日に当ててる。

カレンダーに入れたアクションはあまり機能していない。OmniFocusを見る習慣がまだ付いていないのが原因。もうちょっと様子見る。

  • アクション数:89
  • カレンダー数:3
  • プロジェクト数:19
  • Someday/Maybe数:49

アニメ一本丸ごとnext action→someday/maybeに移したのでだいぶへった。とりあえずハガレン一期見てからだなと。