From 381304c9bc6742bb39ff8fa7e6e6dee8725dfdb3 Mon Sep 17 00:00:00 2001 From: Paul Friedrich Date: Sat, 7 Jan 2017 21:34:08 +0100 Subject: [PATCH 1/4] added dpd tracking --- i3pystatus/parcel.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/i3pystatus/parcel.py b/i3pystatus/parcel.py index ce04b8f..caf885e 100644 --- a/i3pystatus/parcel.py +++ b/i3pystatus/parcel.py @@ -19,6 +19,42 @@ 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"][0]["contents"][0]["label"] + except: + pass + + ret["progress"] = progress + ret["status"] = status + + return ret + + + def get_url(self): + return self.url + + class DHL(TrackerAPI): URL = "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=en&idc={idcode}" From 5c2e1033ad9d6c7e7dbb6416375f64f6d445459c Mon Sep 17 00:00:00 2001 From: Paul Friedrich Date: Mon, 9 Jan 2017 12:55:59 +0100 Subject: [PATCH 2/4] always get the latest status message --- i3pystatus/parcel.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/i3pystatus/parcel.py b/i3pystatus/parcel.py index caf885e..e38816a 100644 --- a/i3pystatus/parcel.py +++ b/i3pystatus/parcel.py @@ -26,7 +26,6 @@ class DPD(TrackerAPI): self.idcode = idcode self.url = self.URL.format(idcode=self.idcode) - def status(self): ret = {} progress = "n/a" @@ -41,7 +40,7 @@ class DPD(TrackerAPI): import json data = json.loads(page) - status = data["TrackingStatusJSON"]["statusInfos"][0]["contents"][0]["label"] + status = data["TrackingStatusJSON"]["statusInfos"][-1]["contents"][0]["label"] except: pass @@ -50,7 +49,6 @@ class DPD(TrackerAPI): return ret - def get_url(self): return self.url From 4f8bb2f9c1d6c7ad4113acdc3a1495d9b369bd6e Mon Sep 17 00:00:00 2001 From: Paul Friedrich Date: Tue, 10 Jan 2017 20:10:37 +0100 Subject: [PATCH 3/4] Added progress value. Open the real tracking page instead of the api page on click --- i3pystatus/parcel.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/i3pystatus/parcel.py b/i3pystatus/parcel.py index e38816a..bfaa925 100644 --- a/i3pystatus/parcel.py +++ b/i3pystatus/parcel.py @@ -41,6 +41,11 @@ class DPD(TrackerAPI): 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 @@ -50,7 +55,7 @@ class DPD(TrackerAPI): return ret def get_url(self): - return self.url + return "https://tracking.dpd.de/parcelstatus?query={idcode}".format(idcode=self.idcode) class DHL(TrackerAPI): From 909a39bece52bddbf9a5f3d59675b1d73024ed1d Mon Sep 17 00:00:00 2001 From: Paul Friedrich Date: Tue, 10 Jan 2017 20:20:46 +0100 Subject: [PATCH 4/4] added DPD to the documentation --- i3pystatus/parcel.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i3pystatus/parcel.py b/i3pystatus/parcel.py index bfaa925..460abb6 100644 --- a/i3pystatus/parcel.py +++ b/i3pystatus/parcel.py @@ -172,10 +172,11 @@ class ParcelTracker(IntervalModule): """ Used to track parcel/shipments. - Supported carriers: DHL, UPS, Itella + Supported carriers: DHL, UPS, DPD, Itella - parcel.UPS("") - parcel.DHL("") + - parcel.DPD("") - parcel.Itella(""[, "en"|"fi"|"sv"]) Second parameter is language. Requires beautiful soup 4 (bs4)