USPS csomagkövető

USPS-el küldtek nekem egy csomagot, és mivel a szállító weboldalához csak bonyolult, regisztrálós fejlesztői kit van, így összeraktam inkább egy scriptet, ami gyorsan összeszedi a csomagkövetőből a szükséges infókat.


#!/usr/bin/env ruby

require 'net/http'

conn = Net::HTTP.new('trkcnfrm1.smi.usps.com', 80)
path = '/PTSInternetWeb/InterLabelInquiry.do'
data = "strOrigTrackNum=#{ARGV[0]}"
headers = {
 'Referer' => 'http://www.usps.com/shipping/trackandconfirm.htm?from=home_header&page=trackandconfirm',
 'Content-type' =>  'application/x-www-form-urlencoded'
}

resp, body = conn.post(path, data, headers)

history = body.grep(/<td valign="top" class="mainTextbold"/)
history.each do  |item| 
 item.strip! 
 item.gsub! /<td[^>]+>/, ''
 item.gsub! /<\/td>/, ''
end

status = body.grep(/Status: <span class="mainTextbold">/)[1]
status = status.strip.gsub(/Status: <span class="mainTextbold">/, '').gsub(/<\/span><br><br>/,'')

puts "Item status: #{status}"
puts "\nItem history:"

history.reverse.each { |item| puts "   * #{item}" }

Tudom, hogy lehetne optimálisabb is a kódja, meg ellenőrzések is kellenének... de ez csak össze lett lapátolva. Majd egyszer.

Ha valaki továbbfejlesztené, tudok adni eredeti html dumpot - privátban.

Jó csomagkövetést.