Add display for parcels not yet showing up in tracking.

This commit is contained in:
enkore 2013-03-06 16:19:33 +01:00
parent 78849d37ec
commit 9732c02765

View File

@ -19,6 +19,8 @@ class DHL(TrackerAPI):
self.idcode = idcode self.idcode = idcode
self.url = self.URL.format(idcode=self.idcode) self.url = self.URL.format(idcode=self.idcode)
error_selector = CSSSelector("#set_identcodes .error")
self.error = lambda page: len(error_selector(page)) >= 1
self.progress_selector = CSSSelector(".greyprogressbar > span, .greenprogressbar > span") self.progress_selector = CSSSelector(".greyprogressbar > span, .greenprogressbar > span")
self.last_status_selector = CSSSelector(".events .eventList tr") self.last_status_selector = CSSSelector(".events .eventList tr")
self.intrarow_status_selector = CSSSelector("td.status div") self.intrarow_status_selector = CSSSelector("td.status div")
@ -27,6 +29,9 @@ class DHL(TrackerAPI):
ret = {} ret = {}
with urlopen(self.url) as page: with urlopen(self.url) as page:
page = lxml.html.fromstring(page.read()) page = lxml.html.fromstring(page.read())
if self.error(page):
ret["progress"] = ret["status"] = "n/a"
else:
ret["progress"] = self.progress_selector(page)[0].text.strip() ret["progress"] = self.progress_selector(page)[0].text.strip()
last_row = self.last_status_selector(page)[-1] last_row = self.last_status_selector(page)[-1]
ret["status"] = self.intrarow_status_selector(last_row)[0].text.strip() ret["status"] = self.intrarow_status_selector(last_row)[0].text.strip()