maraigue (owner)

Revisions

gist: 100591 Download_button fork
public
Description:
@bombtterの忙しさ(爆発要求からかかった時間)を表示
Public Clone URL: git://gist.github.com/100591.git
bombtter-status.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/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