Skip to content

Instantly share code, notes, and snippets.

@maraigue
Created April 23, 2009 16:39
Show Gist options
  • Select an option

  • Save maraigue/100591 to your computer and use it in GitHub Desktop.

Select an option

Save maraigue/100591 to your computer and use it in GitHub Desktop.
@bombtterの忙しさ(爆発要求からかかった時間)を表示
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'rubygems'
require 'open-uri'
require 'json'
require 'time'
# @bombtterの忙しさ(爆発要求からかかった時間)を表示
def main
buf = nil
# Get @bombtter_raw's last update
begin
open('http://twitter.com/users/show/bombtter_raw.json', 'rb'){ |f| buf = f.read }
dat = JSON.load(buf)
rescue Exception => e
puts "@bombtter_rawの発言を取得できませんでした..."
raise
end
bomb_time = Time.parse(dat['status']['created_at'])
interval_min, interval_sec = (Time.now - bomb_time).to_i.divmod(60)
if interval_min >= 6 # 6 minutes: 2 times of bombtter's posting interval
puts "@bombtterは只今暇です。#{interval_min}分ほど何も爆発させてません。"
return
end
# Get the ID of bombing update
text = dat['status']['text']
if text =~ /\A\d+,\d+\|[0-9A-Z_a-z]+\/(\d+)\|/
newid = $1
else
puts "@bombtter_rawが不調なようです。後ほどお試し下さい。"
return
end
# Get the bombing update
begin
open("http://twitter.com/statuses/show/#{newid}.json", 'rb'){ |f| buf = f.read }
dat = JSON.load(buf)
rescue Exception => e
puts "爆発を要求した発言を取得できませんでした..."
raise
end
src_time = Time.parse(dat['created_at'])
interval_min, interval_sec = (bomb_time - src_time).to_i.divmod(60)
if interval_min < 6 # 6 minutes: 2 times of bombtter's posting interval
print '@bombtterは只今暇です。'
else
print '@bombtterは忙しいようです。'
end
puts "直近の爆発はリクエストから#{interval_min}分#{interval_sec}秒で実行されました。"
end
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment