-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjob_processor.py
More file actions
61 lines (47 loc) · 1.93 KB
/
Copy pathjob_processor.py
File metadata and controls
61 lines (47 loc) · 1.93 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
import json
import re
import os
from datetime import datetime
def load_json(file_name):
try:
with open(file_name, 'r', encoding='utf-8') as f:
return json.load(f)
except FileNotFoundError:
print(f"Error: File '{file_name}' not found.")
return None
except json.JSONDecodeError:
print(f"Error: Unable to decode JSON in '{file_name}'.")
return None
def search_keywords(job, keywords):
# Only search in specific fields: Title, Education Level, Job Category, Status, Ministry
relevant_fields = ['Title', 'Education Level', 'Job Category', 'Status', 'Ministry']
# Create a text string containing only the relevant fields
job_text = ' '.join(str(job.get(field, '')).lower() for field in relevant_fields)
for keyword in keywords:
for lang in ['en', 'fr', 'de']:
if keyword.get(lang) and re.search(r'\b' + re.escape(keyword[lang].lower()) + r'\b', job_text):
return True
return False
def get_relevant_jobs(jobs, keywords):
return [job for job in jobs if search_keywords(job, keywords)]
def save_relevant_jobs(relevant_jobs):
date_str = datetime.now().strftime("%Y-%m-%d")
folder_name = "relevant_jobs"
if not os.path.exists(folder_name):
os.makedirs(folder_name)
file_name = f"{folder_name}/relevant_jobs_{date_str}.json"
with open(file_name, 'w', encoding='utf-8') as f:
json.dump(relevant_jobs, f, ensure_ascii=False, indent=4)
return file_name
def main():
jobs = load_json('new_jobs.json')
keywords_data = load_json('keywords.json')
if not jobs or not keywords_data:
return
keywords = keywords_data['keywords']
relevant_jobs = get_relevant_jobs(jobs, keywords)
file_name = save_relevant_jobs(relevant_jobs)
print(f"Found {len(relevant_jobs)} relevant jobs. Saved to {file_name}")
return file_name
if __name__ == "__main__":
main()