bundesAPI / jobsuche-api

API zur Bundesagentur für Arbeit Jobsuche
https://jobsuche.api.bund.dev/
77 stars 16 forks source link

HashId nicht mehr verfügbar #49

Closed mokuhn closed 5 months ago

mokuhn commented 6 months ago

Beim letzten Datenabruf mit der Jobsuche war die HashID nicht mehr Teil der erhaltenen Daten. Es war damit auch nicht mehr möglich die HashId zu nutzen, um die Jobdetails abzurufen. Gibt es die Möglichkeit die "refnr." stattdessen zu nutzen, um die Jobdetails abzurufen? Warum wird die HashId nicht mehr geliefert?

smortBlob commented 5 months ago

Beim letzten Datenabruf mit der Jobsuche war die HashID nicht mehr Teil der erhaltenen Daten. Es war damit auch nicht mehr möglich die HashId zu nutzen, um die Jobdetails abzurufen. Gibt es die Möglichkeit die "refnr." stattdessen zu nutzen, um die Jobdetails abzurufen? Warum wird die HashId nicht mehr geliefert?

Meinst du damit die Beschreibung? Falls ja, dann geht das wenn du die "refnr" aus dem ersten Request base64 codierst

z.B. mit

def EncodeToBase64(inputString):
    """This function takes a string input and returns its base64 encoding"""
    byteString = inputString.encode('ascii')
    base64Bytes = base64.b64encode(byteString)
    base64String = base64Bytes.decode('ascii')
    return base64String

dann einfach den string an die etwas anders lautende URL für den zweiten Request anhängen

def GetJobDescription(base64EncodedRefNr):
    response = requests.get("https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/pc/v3/jobdetails/" + base64EncodedRefNr,
                            headers=headers, verify=False)

    return response.json()

Das Firmenlogo bekommt man dann wieder von einer anderen URL mit dem "kundennummerHash" aus dem ersten Request oder aus dem Zweiten für die Jobbeschreibung. In der zweiten Json ist sie als "arbeitgeberKundennummerHash" hinterlegt. Für das Firmenlogo ist auch keine Authehtifizierung nötig

def GetCompanyLogo(kundennummerHash):
    response = requests.get("https://rest.arbeitsagentur.de/vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/" + kundennummerHash)
    img = Image.open(BytesIO(response.content))

    return img

Die Firmenvorstellung oder Firmenbeschreibung gibts ebenso mit Hilfe des "kundennummerHash" als Json

def GetCompanyDescription(kundennummerHash):
    response = requests.get("https://rest.arbeitsagentur.de/vermittlung/ag-darstellung-service/pc/v1/arbeitgeberdarstellung/" + kundennummerHash,
                            headers=headers, verify=False)

    return response.json()

Und zu guter Letzt den Firmenkontakt, der aber leider hinter einem Captcha gesichert ist und der Request so leider nicht klappt. Jedenfalls wird hier wieder base64 der "refnr" benötigt

def GetCompanyContactInfo(base64EncodedRefNr):
    response = requests.get("https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/pc/v3/jobs/" + base64EncodedRefNr + "/bewerbung",
                            headers=headers, verify=False)

    return response.json()

In headers btw. ist einfach nur X-API-Key: "jobboerse-jobsuche" hinterlegt, der auch auf deren eigenen Webseite genutzt wird (ist das erlaubt?) Auch mit bruno (oder Postman) überprüft. Kurz gesagt sind wohl noch alle Infos ohne Weiteres abrufbar bis auf die Kontaktdetails hinter dem Captcha So weit meine Erkenntnisse. Hoffe das hilft irgendwie :)

[^1].

[^1]: Bin ein Noob und würde mich deshalb über Feedback und Kritik freuen :) I'm a noob and appreciate any Feedback or constructive criticism :)

mokuhn commented 5 months ago

Hallo, das ist sehr hilfreich und scheint auch so zu funktionieren. Vielen Dank.