class Tottori::OpenData::PM25::API::Client
Public Class Methods
get(t = Time.now)
click to toggle source
# File lib/tottori-opendata-pm25-api/client.rb, line 8 def get(t = Time.now) # Tottori Time time = t.in_time_zone('Asia/Tokyo') # Tottori Date date = time.to_date # URI uri = 'http://tottori-taiki.users.tori-info.co.jp/taiki/pc/graph/?' uri << [ 'mode=table', 'graph=hour', 'item=021', "date=#{date.strftime('%Y%m%d')}", (1..6).map{ |i| 'term[]=%03d' % i }.join('&') ].join('&') # HTTP GET content = HTTPClient.get_content(uri) # Parse doc = Nokogiri::HTML.parse(content) # Scrap data = [] doc.xpath('//table[@class="commonTable"]/tbody/tr').each do |tr| row = tr.children name = row.shift.text.strip values = row.map{ |c| s = c.text.strip s.empty? ? nil : s.to_i }.map.with_index{ |value, i| iso8601_time = ('%4d-%02d-%02dT%02d:00:00+09:00' % [date.year, date.month, date.day, i]).strip { time: Time.iso8601(iso8601_time), value: value } } record = { name: name, values: values } data << record end return data end