get_base_search_url fixed

This commit is contained in:
feder-cr 2024-08-10 19:02:45 +01:00
parent 6f549222cc
commit 450fba94ac

View file

@ -5,10 +5,8 @@ import time
import traceback import traceback
from itertools import product from itertools import product
from pathlib import Path from pathlib import Path
from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
import utils import utils
from job import Job from job import Job
from linkedIn_easy_applier import LinkedInEasyApplier from linkedIn_easy_applier import LinkedInEasyApplier
@ -106,7 +104,6 @@ class LinkedInJobManager:
except Exception: except Exception:
traceback.format_exc() traceback.format_exc()
pass pass
time_left = minimum_page_time - time.time() time_left = minimum_page_time - time.time()
if time_left > 0: if time_left > 0:
utils.printyellow(f"Sleeping for {time_left} seconds.") utils.printyellow(f"Sleeping for {time_left} seconds.")
@ -176,21 +173,26 @@ class LinkedInJobManager:
utils.printred(f"Details: Answer type: {answer_type}, Question: {question_text}") utils.printred(f"Details: Answer type: {answer_type}, Question: {question_text}")
def get_base_search_url(self, parameters): def get_base_search_url(self, parameters):
remote_url = "f_CF=f_WRA" if parameters['remote'] else "" url_parts = []
experience_url = "f_E=" + "%2C".join( if parameters['remote']:
str(i+1) for i, v in enumerate(parameters.get('experienceLevel', [])) if v url_parts.append("f_CF=f_WRA")
) experience_levels = [str(i+1) for i, v in enumerate(parameters.get('experienceLevel', [])) if v]
distance_url = "?distance=" + str(parameters['distance']) if experience_levels:
job_types_url = "f_JT=" + "%2C".join( url_parts.append(f"f_E={','.join(experience_levels)}")
k[0].upper() for k, v in parameters.get('experienceLevel', {}).items() if v url_parts.append(f"distance={parameters['distance']}")
) job_types = [key[0].upper() for key, value in parameters.get('jobTypes', {}).items() if value]
date_url = next( if job_types:
(v for k, v in { url_parts.append(f"f_JT={','.join(job_types)}")
"all time": "", "month": "&f_TPR=r2592000", "week": "&f_TPR=r604800", "24 hours": "&f_TPR=r86400" date_mapping = {
}.items() if parameters.get('date', {}).get(k)), "" "all time": "",
) "month": "&f_TPR=r2592000",
easy_apply_url = "&f_LF=f_AL" "week": "&f_TPR=r604800",
return f"{distance_url}&{remote_url}&{job_types_url}&{experience_url}{easy_apply_url}{date_url}" "24 hours": "&f_TPR=r86400"
}
date_param = next((v for k, v in date_mapping.items() if parameters.get('date', {}).get(k)), "")
url_parts.append("f_LF=f_AL") # Easy Apply
base_url = "&".join(url_parts)
return f"?{base_url}{date_param}"
def next_job_page(self, position, location, job_page): def next_job_page(self, position, location, job_page):
self.driver.get(f"https://www.linkedin.com/jobs/search/{self.base_search_url}&keywords={position}{location}&start={job_page * 25}") self.driver.get(f"https://www.linkedin.com/jobs/search/{self.base_search_url}&keywords={position}{location}&start={job_page * 25}")