From 21facf1a98a1d642f2f312603d59e7470474f335 Mon Sep 17 00:00:00 2001 From: Federico <85809106+feder-cr@users.noreply.github.com> Date: Mon, 12 Aug 2024 23:34:38 +0100 Subject: [PATCH 1/7] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 05ac37e..b31b0a8 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ Join our **Telegram community** for: 📲 **[Join now!](https://t.me/AIhawkCommunity)** -#Networking #JobOpportunities #ResumeTips #AIhawkSupport #CareerSupport ## Table of Contents 1. [Introduction](#introduction) From 4388a3dfc5b747de6482ecb391e64c1844f13ef2 Mon Sep 17 00:00:00 2001 From: Arpit Pathak <119810812+Thepathakarpit@users.noreply.github.com> Date: Wed, 14 Aug 2024 11:04:58 +0530 Subject: [PATCH 2/7] Create setup.sh --- setup.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 setup.sh diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..f6834e3 --- /dev/null +++ b/setup.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Define paths and URLs +REPO_URL="https://github.com/feder-cr/LinkedIn_AIHawk_automatic_job_application" +REPO_DIR="LinkedIn_AIHawk_automatic_job_application" +PYTHON_EXE="python3" +CONFIG_EXAMPLE="data_folder_example" + +# Check if Python is installed +if ! command -v $PYTHON_EXE &> /dev/null +then + echo "Python is not installed. Please install Python and rerun the script." + exit 1 +fi + +# Clone the repository +if [ -d "$REPO_DIR" ]; then + echo "Repository already exists. Pulling latest changes..." + cd $REPO_DIR + git pull + cd .. +else + echo "Cloning the repository..." + git clone $REPO_URL + cd $REPO_DIR +fi + +# Install Python packages and ChromeDriver +echo "Installing required Python packages and ChromeDriver..." +$PYTHON_EXE -m pip install -r requirements.txt +$PYTHON_EXE -m pip install webdriver-manager + +# Copy example configuration files +echo "Setting up configuration files..." +mkdir -p data_folder +cp -r $CONFIG_EXAMPLE/* data_folder/ +echo "Please update data_folder/secrets.yaml and data_folder/config.yaml with your credentials and preferences." + +# Run the application with ChromeDriver managed automatically +echo "Running the application..." +$PYTHON_EXE -c "from webdriver_manager.chrome import ChromeDriverManager; from selenium import webdriver; driver = webdriver.Chrome(ChromeDriverManager().install()); driver.get('https://www.google.com');" + +exit 0 From ae866a185dc4d6f96912124f11bd7bb844ec4b46 Mon Sep 17 00:00:00 2001 From: Arpit Pathak <119810812+Thepathakarpit@users.noreply.github.com> Date: Wed, 14 Aug 2024 11:06:16 +0530 Subject: [PATCH 3/7] Create setup.bat --- setup.bat | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 setup.bat diff --git a/setup.bat b/setup.bat new file mode 100644 index 0000000..d3512e4 --- /dev/null +++ b/setup.bat @@ -0,0 +1,49 @@ +@echo off +setlocal + +REM Define paths and URLs +set REPO_URL=https://github.com/feder-cr/LinkedIn_AIHawk_automatic_job_application +set REPO_DIR=LinkedIn_AIHawk_automatic_job_application +set PYTHON_EXE=python +set CONFIG_EXAMPLE=data_folder_example + +REM Check if Python is installed +where %PYTHON_EXE% >nul 2>&1 +if %errorlevel% neq 0 ( + echo Python is not installed. Downloading and installing Python... + start https://www.python.org/downloads/ + echo Please install Python manually and run this script again. + exit /b 1 +) + +REM Clone the repository +if exist %REPO_DIR% ( + echo Repository already exists. Pulling latest changes... + cd %REPO_DIR% + git pull + cd .. +) else ( + echo Cloning the repository... + git clone %REPO_URL% + cd %REPO_DIR% +) + +REM Install Python packages and ChromeDriver +echo Installing required Python packages and ChromeDriver... +%PYTHON_EXE% -m pip install -r requirements.txt +%PYTHON_EXE% -m pip install webdriver-manager + +REM Copy example configuration files +echo Setting up configuration files... +if not exist data_folder ( + mkdir data_folder +) +xcopy /E /I %CONFIG_EXAMPLE% data_folder\ +echo Please update data_folder\secrets.yaml and data_folder\config.yaml with your credentials and preferences. + +REM Run the application with ChromeDriver managed automatically +echo Running the application... +%PYTHON_EXE% -c "from webdriver_manager.chrome import ChromeDriverManager; from selenium import webdriver; driver = webdriver.Chrome(ChromeDriverManager().install()); driver.get('https://www.google.com');" + +endlocal +pause From a300ca64ada2f843acce4bd194a55f86c358aa0b Mon Sep 17 00:00:00 2001 From: Drew Haile Date: Thu, 15 Aug 2024 03:06:37 -0400 Subject: [PATCH 4/7] Fix get_base_search_url to respect user's experience level preferences - Iterate through 'experienceLevel' dictionary - Include only levels set to True - Map indexes to LinkedIn's experience level values (1-6) --- linkedIn_job_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkedIn_job_manager.py b/linkedIn_job_manager.py index 6fbe3bf..db50633 100644 --- a/linkedIn_job_manager.py +++ b/linkedIn_job_manager.py @@ -176,7 +176,7 @@ class LinkedInJobManager: url_parts = [] if parameters['remote']: url_parts.append("f_CF=f_WRA") - experience_levels = [str(i+1) for i, v in enumerate(parameters.get('experienceLevel', [])) if v] + experience_levels = [str(i+1) for i, (level, v) in enumerate(parameters.get('experienceLevel', {}).items()) if v] if experience_levels: url_parts.append(f"f_E={','.join(experience_levels)}") url_parts.append(f"distance={parameters['distance']}") From c32a66144dc12a34cf65fcd9115c3ef3284453e8 Mon Sep 17 00:00:00 2001 From: Federico <85809106+feder-cr@users.noreply.github.com> Date: Sun, 18 Aug 2024 01:07:37 +0100 Subject: [PATCH 5/7] Delete setup.sh --- setup.sh | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 setup.sh diff --git a/setup.sh b/setup.sh deleted file mode 100644 index f6834e3..0000000 --- a/setup.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -# Define paths and URLs -REPO_URL="https://github.com/feder-cr/LinkedIn_AIHawk_automatic_job_application" -REPO_DIR="LinkedIn_AIHawk_automatic_job_application" -PYTHON_EXE="python3" -CONFIG_EXAMPLE="data_folder_example" - -# Check if Python is installed -if ! command -v $PYTHON_EXE &> /dev/null -then - echo "Python is not installed. Please install Python and rerun the script." - exit 1 -fi - -# Clone the repository -if [ -d "$REPO_DIR" ]; then - echo "Repository already exists. Pulling latest changes..." - cd $REPO_DIR - git pull - cd .. -else - echo "Cloning the repository..." - git clone $REPO_URL - cd $REPO_DIR -fi - -# Install Python packages and ChromeDriver -echo "Installing required Python packages and ChromeDriver..." -$PYTHON_EXE -m pip install -r requirements.txt -$PYTHON_EXE -m pip install webdriver-manager - -# Copy example configuration files -echo "Setting up configuration files..." -mkdir -p data_folder -cp -r $CONFIG_EXAMPLE/* data_folder/ -echo "Please update data_folder/secrets.yaml and data_folder/config.yaml with your credentials and preferences." - -# Run the application with ChromeDriver managed automatically -echo "Running the application..." -$PYTHON_EXE -c "from webdriver_manager.chrome import ChromeDriverManager; from selenium import webdriver; driver = webdriver.Chrome(ChromeDriverManager().install()); driver.get('https://www.google.com');" - -exit 0 From 084fd0251e1eceb00b1b57f6484e08a827bb2fe9 Mon Sep 17 00:00:00 2001 From: Federico <85809106+feder-cr@users.noreply.github.com> Date: Sun, 18 Aug 2024 01:07:52 +0100 Subject: [PATCH 6/7] Delete setup.bat --- setup.bat | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 setup.bat diff --git a/setup.bat b/setup.bat deleted file mode 100644 index d3512e4..0000000 --- a/setup.bat +++ /dev/null @@ -1,49 +0,0 @@ -@echo off -setlocal - -REM Define paths and URLs -set REPO_URL=https://github.com/feder-cr/LinkedIn_AIHawk_automatic_job_application -set REPO_DIR=LinkedIn_AIHawk_automatic_job_application -set PYTHON_EXE=python -set CONFIG_EXAMPLE=data_folder_example - -REM Check if Python is installed -where %PYTHON_EXE% >nul 2>&1 -if %errorlevel% neq 0 ( - echo Python is not installed. Downloading and installing Python... - start https://www.python.org/downloads/ - echo Please install Python manually and run this script again. - exit /b 1 -) - -REM Clone the repository -if exist %REPO_DIR% ( - echo Repository already exists. Pulling latest changes... - cd %REPO_DIR% - git pull - cd .. -) else ( - echo Cloning the repository... - git clone %REPO_URL% - cd %REPO_DIR% -) - -REM Install Python packages and ChromeDriver -echo Installing required Python packages and ChromeDriver... -%PYTHON_EXE% -m pip install -r requirements.txt -%PYTHON_EXE% -m pip install webdriver-manager - -REM Copy example configuration files -echo Setting up configuration files... -if not exist data_folder ( - mkdir data_folder -) -xcopy /E /I %CONFIG_EXAMPLE% data_folder\ -echo Please update data_folder\secrets.yaml and data_folder\config.yaml with your credentials and preferences. - -REM Run the application with ChromeDriver managed automatically -echo Running the application... -%PYTHON_EXE% -c "from webdriver_manager.chrome import ChromeDriverManager; from selenium import webdriver; driver = webdriver.Chrome(ChromeDriverManager().install()); driver.get('https://www.google.com');" - -endlocal -pause From acc6b442518a8751bcb3611cd6320d8588ec836b Mon Sep 17 00:00:00 2001 From: Federico <85809106+feder-cr@users.noreply.github.com> Date: Tue, 20 Aug 2024 18:12:31 +0100 Subject: [PATCH 7/7] little fix --- linkedIn_easy_applier.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/linkedIn_easy_applier.py b/linkedIn_easy_applier.py index 4bc0451..89e8baa 100644 --- a/linkedIn_easy_applier.py +++ b/linkedIn_easy_applier.py @@ -174,6 +174,13 @@ class LinkedInEasyApplier: self._create_and_upload_resume(element) elif 'cover' in parent.text.lower(): self._create_and_upload_cover_letter(element) + else: + if self.resume_dir != None: + resume_path = self.resume_dir.resolve() + if self.resume_dir != None and resume_path.exists() and resume_path.is_file(): + element.send_keys(str(resume_path)) + else: + self._create_and_upload_resume(element) def _create_and_upload_resume(self, element): max_retries = 3