File size: 2,918 Bytes
cab5c74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import streamlit as st
from langchain_community.document_loaders import WebBaseLoader
from LangChainConnect import LangChainConnect
from langchain_community.document_loaders import PyPDFLoader

class CoverLetterGenerator:
    def __init__(self):
        st.title('Cover letter generator')
        self.url_input=st.text_input("Enter the Job URL: *", value=None)
        self.tell_about_yourself_name=st.text_input("Your name: *", value=None)
        self.tell_about_yourself_experience=st.text_input("Years of experience: *", value=None)
        self. resume_file = st.file_uploader(label="Upload your resume in PDF format: *")
        self.submit_button = st.button("submit")
        self.lang_chain_connect = LangChainConnect()

    def check_button_click(self):
        if self.submit_button:
            if self.url_input is None or self.tell_about_yourself_name is None or self.tell_about_yourself_experience is None or self.resume_file is None:
                st.code("Job URL,Name,Experience and Resume are mandatory fields", language='markdown')
                exit(0)
            try:
                cover_letter_content = self.generate_cover_letter()
                st.code(f"{cover_letter_content}", language='markdown')
            except Exception as e:
                raise Exception(f"Exception occured {e}")

    def save_resume(self):
        if self.resume_file:
            file_path = f"./{self.resume_file.name}"
            # Save the uploaded file to the working directory
            with open(file_path, "wb") as f:
                f.write(self.resume_file.getbuffer())
            return file_path
        else:
            st.code("Invalid Resume")
            exit(0)

    def load_resume_pdf(self, file_path):
        pages = []
        loader = PyPDFLoader(file_path)
        pages_lazy = loader.lazy_load()
        for page in pages_lazy:
            pages.append(page)
        return pages


    def generate_cover_letter(self):
        loader = WebBaseLoader([self.url_input])
        docs=loader.load().pop().page_content
        json_content_description = self.lang_chain_connect.extract_job_content(docs)
        resume_path = self.save_resume()
        pdf_resume = self.load_resume_pdf(resume_path)
        resume_content = ""
        for page in pdf_resume:
            resume_content += page.page_content
            resume_content+="\n"
        # st.code(f"{resume_content}", language='markdown')
        # exit(0)
        os.remove(resume_path)
        cover_letter_content = self.lang_chain_connect.write_cover_letter(json_content_description,"sample",self.tell_about_yourself_name,self.tell_about_yourself_experience,self.url_input, resume_content)
        return cover_letter_content


if __name__ == "__main__":
    cover_letter = CoverLetterGenerator()
    cover_letter.check_button_click()