-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.py
109 lines (87 loc) · 5.91 KB
/
main.py
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import os
from pyChatGPT import ChatGPT
from mailmerge import MailMerge
from docx2pdf import convert
from datetime import datetime
COVER_LETTER='data/cover_letter_template.docx'
SESSION_TOKEN='eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..yY78KtFUuN2LdkqA.HLcUN499vB0-Ogz0mSDeNvuIVGSsTO4yG4HeBvYLJlRyC8yGYwt8LA-y9Bl-YpvZ-IP3VGjKGrTKYN4iLRKRl7DXDfvNhrbT0WDdy0FyIhao6DLaexmCznmNehOz6Y9d6KnLRI4LaMp_p8gnjVmuvI4LD20bSsD6z4KtkZJLdfQn3j58SM0rlWeQzNg1mw2sI_T6KQh12t-BylZYt5BuBlTgFaf_3Qloqb-Elh38C77ltBy-xkIRuGCrBWiiLdOjl7-NoH1fUOsiZk9_OfthYhhQ_k9g4RxJY2zairqz2lm4kIfs7gjKWBVHSxCtP0YOgbIr7hiBWPfJL-_Rx-oDrgL1crYN5402pvVP3VCkFzUzZ3vmNhENm5X8F0MfEiz9xPAdy6hYvWlpRnYV-S7bjTPKGIrCYqIFZlM3W8M_EsarchLzCN7TMK7hNIFhw5zlmU5K2DAxNGU3vLygdGieIyILTuL5M0sb4NKQm2PZxdNQqClGFVSrLpaAKIzaz_T-n4mOwaWCx3QYNIo8CAcN2vXgVL4PHOEUog9z-VxkupjNSHaJHqSPPsbxBH3eO0Wn4_L657Gu1I5QMPxOW7R7gtHKgP--4nMb_E8gf9VVytu7CTo_9fSkeqHmDtaWEXGUmhZakyR0kUp2sulvdLmRMWtlfeCoLiEVmG3lasz70KkfvTQ392wze4TmcqxA-A3nIH2JzeMGd9QZeYycqgf0ZggzbFK5vp7kECXgdBTOqTWZSvE1uSDGkhfZQr0jzO-eX5WpFS4lPP0UcAFyl89EV3zWJ2K-SN8anSv_zgsBMN-8TYEy7q7yrPsL7d2bgN-Hlj4eX5u5cK9Ol4fEQt5RbgP7FQzUzovYk-QIG0nyCKtrxppMgUGDwK5bOjJZbWRrk6mlCSTomyDQposRFCAe-GP3N1hbAD9XsnRgHne4Sb6ryjywGFjBel3bKGZ-3sCm3qMsDIb8rkMu_CBXflfRoUNHuhjHE2vnjvtGOdiJrEBmlotr3Ox130GVR7J6dhxHqKNfdetMwEYvS4Oas3qO4whnjQ5plAam6S3Spt186u6sWH0JhlZTRSySFNncr66oJk-1AqfJW4UGPSfL8teoslVUmUhjwn95e-MBRYMtkSgSjLPv7yMhqbtBNG_r0Q9Zv6KhHF5B0XzTa0nLd2q2xuoQ8meN1ddGf3R_pS7Rzu4btCR6PVZY2PTo-C4wRtPpZKr3Dgr1symF7JTauVe3kOxDfyjQ4Iq00aE1-E1Am9VbuG2y_yvAcXLt5xScFJAvBudLeA9DZ-JLOXKk6RlYLV6_OgwRUOJLJAEelxKV55Jua49wAZ88M4ytTDfR9n3lF5iSa63sRnnB-ScL5DT7GuLg1UaeozQCuYf3z4ZwlV2jVfkUVkNkm2awqhr7jpFB4iIVXPoLu3U8646-JoGzPGgXEsvWz3PAqrflowVdhjasQuHXKJowd0LfHk3LoZ1YNN3jC0NF3AfyNPuCLLXvtYYBbFMLavNmWmS94QEmYUU6H-2FNjo3T_km9uurHqtF9evfZm1ZaHPHDviyhg6C0SqEJ5qjqM3V_Uvm4Yl12us_FqBRDUZbUj3KAwlQBNnHWj9VT92_Z8knLdWOHzlu_RaoBg9GauNedvwgg7HUUgiCy3kQvA74GgHf6PwkmmF2RmrXxEJZ5SLdvga2KBNHJ7dZwHhCQPWTvDz8UJqP9mWQ8MSqsT_5x1PCsVEZVGc9h8zyd8cxyIKNu4M3EVqg7NFUS7PK6HkmZVJcDo4Jlh_hbzJdkrQs4l_iWliK6arVaUnGIA1B-s4iS0GYAIfr0ednxUPflozeYr8I47qGsY8V02Gy7KeI4WFP82sfIIl-MjIqDsArBIl4L8BDCWSZkibV93cOYbUQrBwOs_u_HBY1FnQsj2RvYMHeabU8F3qoi4vWTGPASiiVZDb3go2io5eR6apvjKDgmuJGZbG_DKuOIzb34UO_Bwv0J1bsdCa6f4IEoh-l5PVDuVhsxs1nPyeJuVxOdPNmmtTXC0BYSqx1QE9RxmyBTAsta_bypxT4VV6ijsZ8oLXqcCuApb27ZQOTapwSyb6qRTa8pcCxW2SO6CBXJa-z253--nXgeVIyp6EooVNYz3rnDixDCRT3gSbqk4ien9TMR7BlbiFjcrx7YYZ4Bgd4aGHNjPMbUUEBaYomFVnnBm22pLDb_eXDqVPgL52N0Td6bgSzAaq0ZkUzaxzv0F7t3ONMDfbZOuTDWQ6k9UWjs4TN73c23HaS-1HYSTGh1EMvKDOyR_de4nq05u1NexVokrcI12IoG8Cle8OceUyhzHlworuPg1fi8kfS6gXncQJBlSi6Nnbuw9cQdYzQRiRcRBRaEkwvaoMzz0JaWhAPs0PWEr1k5-5_ldIO-ovvJqyKimO1NEi0WFMh0ShEXtvAlR-1eCYFOqL2b-tQKlmGWyZpDfn5O99rB1NOaAVke4IuZfSxbrbvizbU3VJChVJewujRIqPukP_P48woizk6qFRON42QJWhIEfWiExBmOVDyV5uFwP_tRMKaZPxSFjdfaEBaHw.LumSyO3L7UWxSYe-L22prw'
TEMPLATE='data/template.txt'
def mail_merge(template):
document=MailMerge(template)
return document
def auth_chat_gpt():
api=ChatGPT(SESSION_TOKEN,moderation=False,auth_type='openai', captcha_solver='2captcha', solver_apikey='abc')
return api
def create_new_file():
f = open("data/template.txt", "w")
f.write("""Name: |\n\nLocation: |\n\nPosition: |
\nCompany Description: |\n\nJob Description: |
\nQualification: |""")
f.close()
def reuse_template(template):
with open(template, 'r') as f:
txt = f.read()
record = txt.split('|')
old_file=template
file_pattern= old_file.split('.')
new_file=file_pattern[0]+'_'+record[0].split(':')[1].strip()+'.'+file_pattern[1]
os.rename(old_file,new_file)
create_new_file()
return record
def parse_record(record,index) : return record[index].split(':')[1].replace('\n',' ').rstrip().lstrip()
def convert_to_pdf(folder,file):convert(folder+'/'+file,folder+'/'+file.split('.')[0]+'.pdf')
def file_name(record,type):
## r -> resume, c -> cover letter
name='Rajiv-Luitel'
position=record.get('company')[0]['position'].replace(' ','-')
company=record.get('company')[0]['name'].replace(' ','-')
if type=='r':
return name+'-'+position+'-'+company+'-'+'Resume.docx'
else:
return name+'-'+position+'-'+company+'-'+'Cover-Letter.docx'
def gpt_cover_letter(message):
PROMT_COVER_LETTER=\
"""
I want you to act as a recruiter.
Use this text and create a short sentence about why you like the company.
Make the sentence start from I become an admirer.
"{company_description}"
""".format(company_description=message)
api=auth_chat_gpt()
response=api.send_message(PROMT_COVER_LETTER)['message']
return str(response).rstrip().lstrip().replace('"','')
def job_description():
record=reuse_template(TEMPLATE)
DATE=datetime.today().strftime('%B %d, %Y')
container={
'company':[
{
'name':parse_record(record,0),
'location':parse_record(record,1),
'position':parse_record(record,2),
'background':parse_record(record,3)
}
],
'description':parse_record(record,4),
'skills':parse_record(record,5),
'date':DATE
}
return container
def generate_cover_letter(container,template):
document=mail_merge(template)
message=container.get('company')[0]['background']
document.merge(DATE=container.get('date'),
COMPANY_NAME=container.get('company')[0]['name'],
COMPANY_LOCATION=str(container.get('company')[0]['location']),
POSITION=container.get('company')[0]['position'],
MESSAGE=gpt_cover_letter(message))
folder='output/'+container.get('company')[0]['name']
file=file_name(container,'c')
os.makedirs(folder)
document.write(folder+'/'+file)
convert_to_pdf(folder,file)
def generate_resume(template):
pass
response=job_description()
print(response.get('company')[0]['position'])
generate_cover_letter(response,COVER_LETTER)