Course_rec / app /data_process.py
Tao Wu
initial
3430cbb
raw
history blame
No virus
3.85 kB
from config import *
import pandas as pd
import requests
def build_skill_query(skill):
skill_query = skill['preferredLabel']['de'] +" " + skill['preferredLabel']['en']+" "+ skill['description']['de']+ " "+ skill['description']['en']
if skill['borderConcept']['broaderHierarchyConcept']:
broader_hierarchy_concept_str = ", ".join(skill['borderConcept']['broaderHierarchyConcept'])
skill_query += " " + broader_hierarchy_concept_str
else:
pass
if skill['borderConcept']['broaderSkill']:
broaderSkill_str = ", ".join(skill['borderConcept']['broaderSkill'])
skill_query += " " + broaderSkill_str
else:
pass
if skill['alternativeLabel']['de']:
alternativeLabel_de_str = ", ".join(skill['alternativeLabel']['de'])
skill_query += " " + alternativeLabel_de_str
else:
pass
if skill['alternativeLabel']['en']:
alternativeLabel_en_str = ", ".join(skill['alternativeLabel']['en'])
skill_query += " " + alternativeLabel_en_str
else:
pass
return skill_query
def build_occupation_query(occupation):
occupation_query = occupation['preferredLabel'].get('de','') +" " + occupation['preferredLabel'].get('en','')+" "+ occupation['description'].get('de','').get('literal','') + " "+ occupation['description'].get('en','').get('literal','')
if occupation['_links']['broaderIscoGroup']:
for group in occupation['_links']['broaderIscoGroup']:
occupation_query += " " + group['title']
else:
pass
return occupation_query
# Get occupations from a CSV
def get_occupations_from_csv(file_path):
df = pd.read_csv(file_path)
return df[['preferredLabel', 'conceptUri']].set_index('preferredLabel').to_dict()['conceptUri']
def get_oauth_token():
# API endpoint URL
token_url = "https://rest.arbeitsagentur.de/oauth/gettoken_cc"
# Client credentials
client_id = "38053956-6618-4953-b670-b4ae7a2360b1"
client_secret = "c385073c-3b97-42a9-b916-08fd8a5d1795"
grant_type = "client_credentials"
# Prepare request data
payload = {
"client_id": client_id,
"client_secret": client_secret,
"grant_type": grant_type
}
# Send request and get response
response = requests.post(token_url, data=payload)
# Check if the request was successful
if response.status_code == 200:
return response.json().get("access_token")
else:
print("Token request failed:", response.text)
return None
def query_weiterbildungssuche_api(token, params):
# Set API URL
api_url = "https://rest.arbeitsagentur.de/infosysbub/wbsuche/pc/v2/bildungsangebot"
# Prepare request headers
headers = {
"Authorization": f"Bearer {token}"
}
# Send GET request
response = requests.get(api_url, headers=headers, params=params)
if response.status_code == 200:
return response.json()
else:
print("API request failed:", response.text)
return None
def get_courses_from_BA(ids):
# Get OAuth token
token = get_oauth_token()
if token:
# Set query parameters
params = {
"ids": list(ids)
}
# Use token to query the API
result = query_weiterbildungssuche_api(token, params)
return result
def get_occupation_detial(oc_uri):
uri = f'https://ec.europa.eu/esco/api/resource/occupation?selectedVersion=v1.0.9&language=en&uri={oc_uri}'
try:
occupation_response = requests.get(uri)
occupation_response.raise_for_status()
occupation_json = occupation_response.json()
return occupation_json
except requests.RequestException as e:
print(f"Error while fetching skill details: {e}")