-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathapi_example.py
More file actions
66 lines (55 loc) · 2.2 KB
/
api_example.py
File metadata and controls
66 lines (55 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import base64
import requests
HEADERS = {
'User-Agent': 'Jobsuche/2.9.2 (de.arbeitsagentur.jobboerse; build:1077; iOS 15.1.0) Alamofire/5.4.4',
'Host': 'rest.arbeitsagentur.de',
'X-API-Key': 'jobboerse-jobsuche',
'Connection': 'keep-alive',
}
def search(what, where):
"""search for jobs. params can be found here: https://jobsuche.api.bund.dev/"""
params = (
('angebotsart', '1'),
('page', '1'),
('pav', 'false'),
('size', '100'),
('umkreis', '25'),
('was', what),
('wo', where),
)
response = requests.get('https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/pc/v4/app/jobs',
headers=HEADERS, params=params, verify=False)
return response.json()
def get_job_details(refnr):
"""Retrieve job details by refnr. The refnr is base64-encoded before sending."""
encrypted = base64.b64encode(refnr.encode()).decode()
response = requests.get(
f'https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/pc/v4/jobdetails/{encrypted}',
headers=HEADERS, verify=False)
return response.json()
def get_employer_logo(kundennummer_hash):
"""Retrieve employer logo by arbeitgeberKundennummerHash from job details.
Returns None if no logo is available (404).
"""
import urllib.parse
encoded_hash = urllib.parse.quote(kundennummer_hash, safe='')
response = requests.get(
f'https://rest.arbeitsagentur.de/vermittlung/ag-darstellung-service/ct/v1/arbeitgeberlogo/{encoded_hash}',
headers=HEADERS, verify=False)
if response.status_code == 404:
return None
return response.content
result = search("bahn", "berlin")
refnr = result['stellenangebote'][0]["refnr"]
print("refnr:", refnr)
details = get_job_details(refnr)
print("Titel:", details.get("stellenangebotsTitel") or details.get("titel"))
kundennummer_hash = details.get("arbeitgeberKundennummerHash")
if kundennummer_hash:
logo = get_employer_logo(kundennummer_hash)
if logo:
print("Logo gefunden, Größe:", len(logo), "Bytes")
else:
print("Kein Logo für diesen Arbeitgeber vorhanden.")
else:
print("Kein arbeitgeberKundennummerHash – kein Logo verfügbar.")