/lib/media_wassr.rb
Ruby | 82 lines | 61 code | 17 blank | 4 comment | 5 complexity | 433e4c5091b18fefcb71472d62355c71 MD5 | raw file
- require "mechanize"
- require "app_config"
- module Media
- class Wassr
- def post(text)
- agent.post(
- "http://api.wassr.jp/statuses/update.json",
- {
- "source" => "fakebot/1.0",
- "status" => text,
- }
- )
- end
- def read_new(user, last)
- last ||= "0000-00-00 00:00:00"
- current = "9999-99-99 99:99:99"
- page_no = 0
- loop do
- sleep 5
- page_no += 1
- page = agent.get("http://wassr.jp/user/#{user}", { "page" => page_no })
- nick_cache(user, page) if page_no == 1
- may_continue = false
- page.search("a.MsgDateTime").each do |elem|
- datetime = elem.content.sub(/\(.*?\)/, "")
- # ????????????????
- if datetime <= last
- may_continue = false
- break
- end
- # ??????????????????????????
- next if datetime >= current
- # ?????????????????1????????
- # ????
- text = elem["title"]
- yield(text, datetime)
- current = datetime
- may_continue = true
- end
- break unless may_continue
- end
- end
- def get_nick(user)
- nick_cache(user)
- end
- private
- def initialize
- @nick_cache = { }
- end
- def agent
- @agent ||= begin
- agent = Mechanize.new
- agent.auth(*App::Config.get["media"]["init"])
- agent.user_agent = "fakebot/1.0 (http://bitbucket.com/pen/fakebot/)"
- agent.max_history = 1
- agent
- end
- end
- def nick_cache(user, page = nil)
- @nick_cache[user] ||= (
- page || agent.get("http://wassr.jp/user/#{user}")
- ).title.sub(/ - Wassr .*/, "")
- end
- end
- end