#!/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