Merge pull request #519 from pf56/added-dpd

Added parcel tracking support for DPD
This commit is contained in:
enkore 2017-01-11 12:36:16 +01:00 committed by GitHub
commit 403e0b2ac1

View File

@ -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)