added resume upload
This commit is contained in:
parent
40cf3e4d34
commit
d9ffc7542c
1 changed files with 62 additions and 76 deletions
|
|
@ -1,21 +1,13 @@
|
||||||
<<<<<<< HEAD
|
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
from linkedin_api import Linkedin
|
from linkedin_api import Linkedin
|
||||||
from typing import Optional, Union, Literal
|
from typing import Optional, Union, Literal
|
||||||
from urllib.parse import quote, urlencode, parse_qs, urlparse
|
from urllib.parse import quote, urlencode, parse_qs, urlparse
|
||||||
=======
|
|
||||||
>>>>>>> upstream/v3
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Dict, List
|
import json
|
||||||
from typing import Optional, Union, Literal
|
|
||||||
from urllib.parse import urlencode
|
|
||||||
|
|
||||||
from linkedin_api import Linkedin
|
|
||||||
|
|
||||||
# set log to all debug
|
# set log to all debug
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
class LinkedInEvolvedAPI(Linkedin):
|
class LinkedInEvolvedAPI(Linkedin):
|
||||||
already_applied_jobs: List[str] = []
|
already_applied_jobs: List[str] = []
|
||||||
|
|
||||||
|
|
@ -176,7 +168,7 @@ class LinkedInEvolvedAPI(Linkedin):
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def get_fields_for_easy_apply(self, job_id: str) -> List[Dict]:
|
def get_fields_for_easy_apply(self,job_id: str) -> List[Dict]:
|
||||||
"""Get fields needed for easy apply jobs.
|
"""Get fields needed for easy apply jobs.
|
||||||
|
|
||||||
:param job_id: Job ID
|
:param job_id: Job ID
|
||||||
|
|
@ -190,11 +182,13 @@ class LinkedInEvolvedAPI(Linkedin):
|
||||||
|
|
||||||
headers: Dict[str, str] = self._headers()
|
headers: Dict[str, str] = self._headers()
|
||||||
|
|
||||||
|
|
||||||
headers["Accept"] = "application/vnd.linkedin.normalized+json+2.1"
|
headers["Accept"] = "application/vnd.linkedin.normalized+json+2.1"
|
||||||
headers["csrf-token"] = cookies["JSESSIONID"].replace('"', "")
|
headers["csrf-token"] = cookies["JSESSIONID"].replace('"', "")
|
||||||
headers["Cookie"] = cookie_str
|
headers["Cookie"] = cookie_str
|
||||||
headers["Connection"] = "keep-alive"
|
headers["Connection"] = "keep-alive"
|
||||||
|
|
||||||
|
|
||||||
default_params = {
|
default_params = {
|
||||||
"decorationId": "com.linkedin.voyager.dash.deco.jobs.OnsiteApplyApplication-67",
|
"decorationId": "com.linkedin.voyager.dash.deco.jobs.OnsiteApplyApplication-67",
|
||||||
"jobPostingUrn": f"urn:li:fsd_jobPosting:{job_id}",
|
"jobPostingUrn": f"urn:li:fsd_jobPosting:{job_id}",
|
||||||
|
|
@ -259,7 +253,7 @@ class LinkedInEvolvedAPI(Linkedin):
|
||||||
|
|
||||||
return form_components
|
return form_components
|
||||||
|
|
||||||
def apply_to_job(self, job_id: str, fields: dict, followCompany: bool = True) -> bool:
|
def apply_to_job(self,job_id: str, fields: dict, followCompany: bool = True) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# ToDo: Implement apply to job parser first
|
# ToDo: Implement apply to job parser first
|
||||||
|
|
@ -275,7 +269,7 @@ class LinkedInEvolvedAPI(Linkedin):
|
||||||
# EXAMPLE OF WORKING PAYLOAD
|
# EXAMPLE OF WORKING PAYLOAD
|
||||||
# 4005350454 is job_id, so need to be replaced with the job_id
|
# 4005350454 is job_id, so need to be replaced with the job_id
|
||||||
|
|
||||||
# {
|
#{
|
||||||
# "followCompany": true,
|
# "followCompany": true,
|
||||||
# "responses": [
|
# "responses": [
|
||||||
# {
|
# {
|
||||||
|
|
@ -355,10 +349,9 @@ class LinkedInEvolvedAPI(Linkedin):
|
||||||
# }
|
# }
|
||||||
# ],
|
# ],
|
||||||
# "trackingId": ""
|
# "trackingId": ""
|
||||||
# }
|
#}
|
||||||
|
|
||||||
# Push the commit to the repository and create a pull request to the v3 branch.
|
# Push the commit to the repository and create a pull request to the v3 branch.
|
||||||
<<<<<<< HEAD
|
|
||||||
|
|
||||||
def create_request_pdf(self, filename: str) -> str | None:
|
def create_request_pdf(self, filename: str) -> str | None:
|
||||||
"""
|
"""
|
||||||
|
|
@ -476,13 +469,10 @@ class LinkedInEvolvedAPI(Linkedin):
|
||||||
with open(file_path, 'rb') as file:
|
with open(file_path, 'rb') as file:
|
||||||
binary_data = file.read()
|
binary_data = file.read()
|
||||||
return binary_data
|
return binary_data
|
||||||
=======
|
|
||||||
>>>>>>> upstream/v3
|
|
||||||
|
|
||||||
def set_job_as_applied(self, job_id: str) -> None:
|
def set_job_as_applied(self, job_id: str) -> None:
|
||||||
self.already_applied_jobs.append(job_id)
|
self.already_applied_jobs.append(job_id)
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
def upload_linkedin_resume(self, cv_path: str) -> str | bool:
|
def upload_linkedin_resume(self, cv_path: str) -> str | bool:
|
||||||
url = self.create_request_pdf("resume.pdf")
|
url = self.create_request_pdf("resume.pdf")
|
||||||
if url:
|
if url:
|
||||||
|
|
@ -501,14 +491,6 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
api: LinkedInEvolvedAPI = LinkedInEvolvedAPI(username="", password="")
|
api: LinkedInEvolvedAPI = LinkedInEvolvedAPI(username="", password="")
|
||||||
jobs = api.search_jobs(keywords="Frontend Developer", location_name="Italia", limit=100, easy_apply=True, offset=1, listed_at=None)
|
jobs = api.search_jobs(keywords="Frontend Developer", location_name="Italia", limit=100, easy_apply=True, offset=1, listed_at=None)
|
||||||
=======
|
|
||||||
|
|
||||||
## EXAMPLE USAGE
|
|
||||||
if __name__ == "__main__":
|
|
||||||
api: LinkedInEvolvedAPI = LinkedInEvolvedAPI(username="", password="")
|
|
||||||
jobs = api.search_jobs(keywords="Frontend Developer", location_name="Italia", limit=100, easy_apply=True, offset=1,
|
|
||||||
listed_at=None)
|
|
||||||
>>>>>>> upstream/v3
|
|
||||||
for job in jobs:
|
for job in jobs:
|
||||||
job_id: str = job["job_id"]
|
job_id: str = job["job_id"]
|
||||||
|
|
||||||
|
|
@ -532,3 +514,7 @@ if __name__ == "__main__":
|
||||||
print(field)
|
print(field)
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue