import os from dotenv import load_dotenv import requests import datetime load_dotenv() OKAPI_POSTE_KEY = os.getenv('OKAPI_POSTE_KEY') DHL_KEY = os.getenv('DHL_KEY') DHL_SECRET = os.getenv('DHL_SECRET') POSTE_ENDPOINT = 'https://api.laposte.fr/suivi/v2/idships/' DHL_ENDPOINT = 'https://api-eu.dhl.com/track/shipments' class Event: def __init__(self, date, label, description="", location=""): self.date = date self.label = label self.description = description self.location = location def __lt__(self, other): return self.date.__lt__(other.date) def __str__(self): return "Event" def __repr__(self): return self.__str__() class Tracking: def __init__(self, tracking_num): self.tracking_num = tracking_num self.events = [] self.eta = None return def track(self): pass def get_history(self): self.events.sort() return self.events def get_last_event(self): self.events.sort() if len(self.events) == 0: return None return self.events[-1] class Poste_tracking(Tracking): def track(self): auth_headers = {'X-Okapi-Key' : OKAPI_POSTE_KEY, 'Accept' : 'application/json'} response = requests.get(POSTE_ENDPOINT + self.tracking_num, headers = auth_headers) js = response.json() if "shipment" in js: for jev in js["shipment"]["event"]: self.events.append(Event(datetime.datetime.fromisoformat(jev["date"]), jev["label"])) if "estimDate" in js["shipment"]: self.eta = datetime.datetime.fromisoformat(js["shipment"]["estimDate"]) class DHL_tracking(Tracking): def track(self): auth_headers = {'DHL-API-Key' : DHL_KEY} query = {'trackingNumber' : self.tracking_num} response = requests.get(DHL_ENDPOINT, params = query, headers = auth_headers) print(response.json()) #print('[') Ptrack = Poste_tracking("CC550445947DE") Ptrack.track() print(Ptrack.get_last_event()) print(',') Chronotrack = Poste_tracking("XA420959322FR") Chronotrack.track() print(Chronotrack.get_last_event()) print(',') #DHLtrack = DHL_tracking("CC550445947DE") #DHLtrack.track() #print(']')