Merge pull request #519 from pf56/added-dpd
Added parcel tracking support for DPD
This commit is contained in:
commit
403e0b2ac1
@ -19,6 +19,45 @@ class TrackerAPI:
|
||||
return ""
|
||||
|
||||
|
||||
class DPD(TrackerAPI):
|
||||
URL = "https://tracking.dpd.de/cgi-bin/simpleTracking.cgi?parcelNr={idcode}&type=1"
|
||||
|
||||
def __init__(self, idcode):
|
||||
self.idcode = idcode
|
||||
self.url = self.URL.format(idcode=self.idcode)
|
||||
|
||||
def status(self):
|
||||
ret = {}
|
||||
progress = "n/a"
|
||||
status = "n/a"
|
||||
|
||||
with urlopen(self.url) as page:
|
||||
page = page.read()
|
||||
page = page.decode("UTF-8")
|
||||
page = page[1:-1] # strip parenthesis of the data
|
||||
|
||||
try:
|
||||
import json
|
||||
|
||||
data = json.loads(page)
|
||||
status = data["TrackingStatusJSON"]["statusInfos"][-1]["contents"][0]["label"]
|
||||
delivery_status = data["TrackingStatusJSON"]["shipmentInfo"]["deliveryStatus"]
|
||||
|
||||
# I'm not exactly sure what the deliveryStatus values mean.
|
||||
# This may break if the package can't get delivered etc.
|
||||
progress = delivery_status * 20
|
||||
except:
|
||||
pass
|
||||
|
||||
ret["progress"] = progress
|
||||
ret["status"] = status
|
||||
|
||||
return ret
|
||||
|
||||
def get_url(self):
|
||||
return "https://tracking.dpd.de/parcelstatus?query={idcode}".format(idcode=self.idcode)
|
||||
|
||||
|
||||
class DHL(TrackerAPI):
|
||||
URL = "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=en&idc={idcode}"
|
||||
|
||||
@ -133,10 +172,11 @@ class ParcelTracker(IntervalModule):
|
||||
"""
|
||||
Used to track parcel/shipments.
|
||||
|
||||
Supported carriers: DHL, UPS, Itella
|
||||
Supported carriers: DHL, UPS, DPD, Itella
|
||||
|
||||
- parcel.UPS("<id_code>")
|
||||
- parcel.DHL("<id_code>")
|
||||
- parcel.DPD("<id_code>")
|
||||
- parcel.Itella("<id_code>"[, "en"|"fi"|"sv"])
|
||||
Second parameter is language. Requires beautiful soup 4 (bs4)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user