diff --git a/__pycache__/ausweisstatus.d.er b/__pycache__/ausweisstatus.d.er new file mode 100644 index 0000000..76999c5 --- /dev/null +++ b/__pycache__/ausweisstatus.d.er @@ -0,0 +1,46 @@ +##[pylyzer] failed /home/adrian/Coding/ausweisstatus/ausweisstatus.py 1750941218 1934 +.requests = pyimport "requests" + +.___v_desugar_1 = pyimport "bs4" +.bs4 = pyimport "bs4" +.BeautifulSoup: {bs4.BeautifulSoup} +.sys = pyimport "sys" + + + + + + + +.seriennummer: Str +.geburtsdatum: Str +.URL1: {"https:..ausweisstatus.regioit.de.antragsstatusausweis_regioit.?kunde=05334002"} +.URL2: {"https:..ausweisstatus.regioit.de.antragsstatusausweis_regioit.statusrequest.jsf"} +.URL3: {"https:..ausweisstatus.regioit.de.antragsstatusausweis_regioit.statusresponse.jsf"} +sessions = pyimport "sessions" +.session: sessions.Session +.resp1: Never +.soup: Never +.viewstate: Never +.headers: global::Dict!({{"Content-Type"}: {"application.x-www-form-urlencoded"}}) +.data: Never + +.resp3: Never +.soup: Never +.status_div: Never + + + + + +.status: Never + + +geburtsdatum"}: {"01.01.1970"}, {"antragsForm:passauswahl"}: {"B"}, {"antragsForm:j_id22"}: {"Antragsstatus ermitteln"}}) + +.resp3: Never +.soup: Never +.status_div: Never +.status: Never + + diff --git a/ausweisstatus.py b/ausweisstatus.py index c4f1177..0cdc1bf 100755 --- a/ausweisstatus.py +++ b/ausweisstatus.py @@ -2,11 +2,33 @@ import requests from bs4 import BeautifulSoup +import sys -URL1 = "https://ausweisstatus.regioit.de/antragsstatusausweis_regioit/?kunde=05334002" +# parse args +if len(sys.argv) != 4: + print(f"Usage: {sys.argv[0]} \nP: Personalausweis\nR: Reisepass\nID: eID-Karte", file=sys.stderr) + exit(1) + +passauswahl = None +match sys.argv[1]: + case "P": + passauswahl = "B" + case "R": + passauswahl = "R" + case "ID": + passauswahl = "UB" + case other: + print(f"Invalid passauswahl: {other}. Valid options are: P, R, ID") + exit(2) + +seriennummer = sys.argv[2] +geburtsdatum = sys.argv[3] + +URL1 = "https://ausweisstatus.regioit.de/aachen" URL2 = "https://ausweisstatus.regioit.de/antragsstatusausweis_regioit/statusrequest.jsf" URL3 = "https://ausweisstatus.regioit.de/antragsstatusausweis_regioit/statusresponse.jsf" +# create session for requests to preserve cookies session = requests.Session() # get session cookie and javax viewstate @@ -14,24 +36,31 @@ resp1 = session.get(URL1) soup = BeautifulSoup(resp1.text, "html.parser") viewstate = soup.find(id="javax.faces.ViewState")["value"] +if not viewstate: + print("Failed to determine session viewstate", file=sys.stderr) + exit(10) + # send post request with payload headers = { "Content-Type": "application/x-www-form-urlencoded", } data = { "antragsForm": "antragsForm", - "antragsForm:passauswahl": "B", # B: perso, R: reisepass - "antragsForm:seriennummer": "AAAAAAAAA", - "antragsForm:geburtsdatum": "01.01.1970", + "antragsForm:passauswahl": passauswahl, # B: perso, R: reisepass, UB: eid-karte + "antragsForm:seriennummer": seriennummer, + "antragsForm:geburtsdatum": geburtsdatum, "antragsForm:j_id22": "Antragsstatus ermitteln", "javax.faces.ViewState": viewstate, } -session.post(URL2, headers=headers, data=data) +session.post(URL2, headers=headers, data=data) # this returns 404 for some reason but works # send get request to get current status resp3 = session.get(URL3) soup = BeautifulSoup(resp3.text, "html.parser") status_div = soup.find(id="statusAnzeige") +if not status_div: + print("Could not determine status, please ensure the given serial number and birthday are valid", file=sys.stderr) + exit(3) status = status_div.find("strong").get_text(strip=True) print(status)