ruby ORF2017の来场者の大まかな数を算出する
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby ORF2017の来场者の大まかな数を算出する相关的知识,希望对你有一定的参考价值。
require 'net/http'
require 'uri'
require 'json'
class OrfAnalyse
attr_accessor :complete, :only_poster, :only_signage
def initialize
@complete = 0
@only_poster = 0
@only_signage = 0
end
# 1400件取得(2017/12/04現在これでORFの全時間を網羅)
def get_json(limit)
url = "http://connectouch.org/links?limit=#{limit}"
res = Net::HTTP.get(URI.parse(url))
return all_list = JSON.parse(res)
end
# IDを指定してリストを取得
def get_json_by_id(id)
url = "http://connectouch.org/links?limit=50&id=#{id}"
res = Net::HTTP.get(URI.parse(url))
return list_by_id = JSON.parse(res)
end
# ユーザーのIDを全件取得
def visitor_list(day)
l22, l23 = [], []
get_json(1400).each do |elem|
# 11/22にタッチした人
if elem['time']>=1511312400 && elem['time']<=1511348400
l22 << elem['link'][1]
# 11/23にタッチした人
elsif elem['time']>=1511398800 && elem['time']<=1511427600
l23 << elem['link'][1]
end
end
return l22 if day == 22
return l23 if day == 23
end
# 全てのタッチ数
def visitor_sum(day)
return visitor_list(day).length
end
# ユニークユーザー
def visitor_unique_sum(day)
return visitor_list(day).uniq.length
end
# パターンで分類
def touch_check(day)
visitor_list(day).uniq.each do |visitor|
rid_list = []
get_json_by_id(visitor).each do |elem|
rid_list << elem['link'][0]
end
rid_list.uniq!
# コンプ
if rid_list.length == 4
@complete += 1
# サイネージのみタッチ
elsif rid_list.length == 1 && rid_list.include?('satakepi')
@only_signage += 1
# ポスタのみタッチ
elsif rid_list.empty? == false && rid_list.include?('satakepi') == false
@only_poster += 1
end
end
return result = {
day: day,
complete: @complete,
only_signage: @only_signage,
only_poster: @only_poster
}
end
end
# テスト
test = OrfAnalyse.new
print "22日の総タッチ数 → ", test.visitor_sum(22), "\n"
print "22日のユニークユーザー → ", test.visitor_unique_sum(22), "\n"
res22 = test.touch_check(22)
res22.each do |i, v|
puts "#{i} → #{v}"
end
puts ""
print "23日の総タッチ数 → ", test.visitor_sum(23), "\n"
print "23日のユニークユーザー → ", test.visitor_unique_sum(23), "\n"
res23 = test.touch_check(23)
res23.each do |i, v|
puts "#{i} → #{v}"
end
puts ""
以上是关于ruby ORF2017の来场者の大まかな数を算出する的主要内容,如果未能解决你的问题,请参考以下文章
html 诞生日から今日までの日数を算出
r 対象クエリの网络ページへの语句出现频度を算出
ruby ブロックを处理する关数を书く
markdown RinRubyでR言语内の変数をRubyで参照する
ruby NKFで全角英数を半角英数に変换する(UTF-8)
ruby PCAPファイルを読み込んで,分ごとのTCP / IPパケット数を出力する。