diff options
Diffstat (limited to 'helpers.py')
-rw-r--r-- | helpers.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/helpers.py b/helpers.py new file mode 100644 index 0000000..414cb87 --- /dev/null +++ b/helpers.py @@ -0,0 +1,70 @@ +import requests +import json +from datetime import datetime, timezone, timedelta +from functools import lru_cache + +def formatEndDate(st): + if st is None: + return (None, None) + dt = datetime.strptime(st, "%Y-%m-%dT%H:%M:%S.%f0%z") + formatted = dt.strftime("%d.%m.%Y") + + # print days from today to date + daysRemaining = (dt - datetime.now(timezone.utc)).days + + return (formatted, daysRemaining) + + +purl = "https://evinjeta.dars.si/selfcare/api/eshop/shopping-cart/validate" + +json_dump = open("payload.txt", "r").read() +payload = json.loads(json_dump) + + +def get_headers(): + hdump = [x.split(":") for x in [t for t in open("headers.txt", "r")][1:]] + headers = {h[0]: h[1].strip() for h in hdump} + return headers + +@lru_cache(maxsize=None) +def veljavnost(registrska: str): + today = datetime.now() + one_year_after = today + timedelta(days=365) + payload["registrationNumber"] = registrska + payload["registrationNumberAgain"] = registrska + payload["vignetteValidityStart"] = today.strftime("%Y-%m-%dT%H:%M:%S.%fZ") + payload["vignetteValidityEnd"] = one_year_after.strftime( + "%Y-%m-%dT%H:%M:%S.%f0%z") + r = requests.post(purl, json=payload, headers=get_headers(), verify=False) + # print("\n"+r.text+"\n------------------\n\n\n") + print(r.status_code, r.reason, r.url) + return r.json() + + +def aux(registrska): + registrska = registrska.upper().replace(" ", "").replace("-", "").strip() + if len(registrska) > 8 or len(registrska) < 5 or not registrska.isalnum(): + return None + if registrska == "FTEST": + t = 1/0 + if registrska[:3] == "XXX": + return None + jdump = veljavnost(registrska)["vignetteValidationResult"] + if "exemptedVehicles" in jdump and len(jdump["exemptedVehicles"]) > 0: + return f'Oproščeno {jdump["exemptedVehicles"][0]["exemptionReasonId"]["text"]}' + + # for k, v in jdump.items(): + # print(f"{k}: {v}") + max_date = None + for v in jdump["vignettes"]: + print(v) + date_1 = v["vignetteValidityStart"] + date_2 = v["vignetteValidityEnd"] + if max_date is None or date_2 > max_date: + max_date = date_2 + # resp.append(f"Obstaja vinjeta veljavna od {formatEndDate(date_1)[0]} do {formatEndDate(date_2)[0]}, torej je veljavna še {formatEndDate(date_2)[1]} dni") + return formatEndDate(max_date)[0] + + +if __name__ == "__main__": + pass |