parent
05ead5d808
commit
a898110d7e
@ -18,36 +18,55 @@ class TrackerAPI:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
"""class DHL(TrackerAPI):
|
class DHL(TrackerAPI):
|
||||||
URL = "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=en&idc={idcode}"
|
URL = "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=en&idc={idcode}"
|
||||||
|
|
||||||
def __init__(self, idcode):
|
def __init__(self, idcode):
|
||||||
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")
|
def error(self, page):
|
||||||
self.error = lambda page: len(error_selector(page)) >= 1
|
result = ''.join(page.xpath('//div[@class="col col-lg-12"]/h2/text()'))
|
||||||
self.progress_selector = CSSSelector(
|
|
||||||
".greyprogressbar > span, .greenprogressbar > span")
|
if self.idcode in result:
|
||||||
self.last_status_selector = CSSSelector(".events .eventList tr")
|
return False
|
||||||
self.intrarow_status_selector = CSSSelector("td.status div")
|
return True
|
||||||
|
|
||||||
|
def get_progress(self, page):
|
||||||
|
elements = page.xpath('//tr[@class="mm_mailing_process "]/td/ul/li')
|
||||||
|
|
||||||
|
for i, element in enumerate(elements, 1):
|
||||||
|
picture_link = ''.join(element.xpath('./img/@src')).lower()
|
||||||
|
|
||||||
|
if 'active' in picture_link:
|
||||||
|
status = ''.join(element.xpath('./img/@alt'))
|
||||||
|
|
||||||
|
progress = '%i' % (i/len(elements)*100)
|
||||||
|
|
||||||
|
elif 'default' in picture_link:
|
||||||
|
break
|
||||||
|
|
||||||
|
return progress, status
|
||||||
|
|
||||||
def status(self):
|
def status(self):
|
||||||
ret = {}
|
ret = {}
|
||||||
with urlopen(self.url) as page:
|
with urlopen(self.url) as page:
|
||||||
|
#with open('/home/marcel/ownCloud/dhl_site/paketzentrum/DHL Sendungsverfolgung.htm', 'r') as page:
|
||||||
page = lxml.html.fromstring(page.read())
|
page = lxml.html.fromstring(page.read())
|
||||||
if self.error(page):
|
|
||||||
|
if not self.error(page):
|
||||||
ret["progress"] = ret["status"] = "n/a"
|
ret["progress"] = ret["status"] = "n/a"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
ret["progress"] = self.progress_selector(page)[0].text.strip()
|
progress, status = self.get_progress(page)
|
||||||
last_row = self.last_status_selector(page)[-1]
|
ret["progress"] = progress
|
||||||
ret["status"] = self.intrarow_status_selector(
|
ret["status"] = status
|
||||||
last_row)[0].text.strip()
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def get_url(self):
|
def get_url(self):
|
||||||
return self.url
|
return self.url
|
||||||
"""
|
|
||||||
|
|
||||||
class UPS(TrackerAPI):
|
class UPS(TrackerAPI):
|
||||||
URL = "http://wwwapps.ups.com/WebTracking/processRequest?HTMLVersion=5.0&Requester=NES&AgreeToTermsAndConditions=yes&loc=en_US&tracknum={idcode}"
|
URL = "http://wwwapps.ups.com/WebTracking/processRequest?HTMLVersion=5.0&Requester=NES&AgreeToTermsAndConditions=yes&loc=en_US&tracknum={idcode}"
|
||||||
|
Loading…
Reference in New Issue
Block a user