先日のTokyuRubyKaigi03では、大変ありがたいことに、サントリーさんがスポンサーになって下さって、ビールが振る舞われました。
その力がどれほどであったか、Twitterでの発言から推測してみました。(主な目的はRubyを書く練習)
推測方法
- Togetterから当日の#tqrk03ハッシュタグ付きツイートを回収
- その中から、「モルツ」「ビール」「サントリー」を含むツイートを選別
- ビール関連ツイート主のfollower一覧を取得
- 一覧から重複を排除したfollowerの合計数がビールの力が届いた人数
まあ色々突っ込みどころはありますが、下記のような感じで調査してみた。
# -*- coding: utf-8 -*-
require "rubygems"
require "nokogiri"
require "rubytter"
$stdout.sync = true
doc = Nokogiri::HTML(open("togetterのHTML"))
tweets=[]
doc.xpath("/html/body/div[@id='document']/div[@class='contents']/div[@class='left']/div[@class='tweet_box']/ul/li[@class='list_item']/div[@class='list_box balloon_box type_tweet']/div[@class='balloon_module']/div[@class='balloon_body rad5']").each do |d|
tweet = d.xpath("div[@class='tweet']").inner_text
id = d.xpath("div[@class='status']/div[@class='status_right']/a[@class='status_name']").inner_text
time = d.xpath("div[@class='status']/div[@class='status_right']/a[@href]").inner_text
h = { :name=>id , :comment=>tweet, :time=>time}
tweets.push h
end
puts "tweets.legth="+tweets.length.to_s
supporters = tweets.select{ |a|
a[:comment] =~ /モルツ/ or a[:comment] =~ /ビール/ or a[:comment] =~ /サントリー/
}.map{|a|a[:name]}.uniq
p supporters
consumer = OAuth::Consumer.new( 'xxx','xxx',:site => 'http://api.twitter.com' )
token = OAuth::AccessToken.new(consumer,'xxx', 'xxx' )
twitter = OAuthRubytter.new(token)
def twitter.followers(screen_name)
begin
self.followers_ids(screen_name)
rescue
[]
end
end
arr = []
supporters.each{|name|
followers = twitter.followers(name.strip)
arr.push *followers
}
puts "all users "+arr.uniq.length.to_s
結果は、#tqrk03のツイート数1182。そのうちビール関連ツイートをしたアカウントは43。
ビールの力が及んだアカウント数、18979!
でした。
次回はどうなるか分かりませんが、また楽しくお酒とRubyを楽しみたいものです。