lib/takuhai_status/kuronekoyamato.rb in takuhai_status-1.5.5 vs lib/takuhai_status/kuronekoyamato.rb in takuhai_status-1.6.0
- old
+ new
@@ -9,11 +9,11 @@
@key = key.gsub(/[^0-9]/, '')
@time, @state = check
end
def finish?
- return !!(@state =~ /^(お客様引渡|配達|投函)完了|返品|国内到着/)
+ return !!(@state =~ /^(お客様引渡|配達|投函)完了|返品/)
end
private
def check
conn = Faraday.new(url: 'http://toi.kuronekoyamato.co.jp/')
@@ -25,14 +25,39 @@
state = tr.css('td')[1].text
sday = tr.css('td')[2].text
stime = tr.css('td')[3].text
time = Time.parse("#{sday} #{stime}")
+ if state == '国内到着'
+ begin
+ time, state = global_state(doc)
+ rescue
+ $stderr.puts "error in yamato global, about #{key}"
+ end
+ end
+
return time, state
rescue NoMethodError
raise NotMyKey
rescue ArgumentError
return Time.now, state || ''
end
+ end
+
+ def global_state(doc)
+ form = doc.css('form[method=POST]')
+ values = form.css('input[type=hidden]').map{|x| [x[:name], x[:value]]}.flatten
+ params = Hash[*values]
+
+ res = Faraday.new.post(
+ 'http://globaltoi.kuronekoyamato.co.jp/Global/outside',
+ params
+ )
+ html = res.body.force_encoding('Shift_JIS').encode('UTF-8')
+ tr = Nokogiri(html).css('table.detail tr')
+ state = tr[tr.size-1].css('td')[1].text
+ loc = tr[tr.size-1].css('td')[4].text.strip.chop.chop
+ stime = "#{tr[tr.size-1].css('td')[2].text} #{tr[tr.size-1].css('td')[3].text}"
+ return Time.parse(stime), "#{state}[#{loc}]"
end
end
end