Spaces:
Sleeping
Sleeping
| 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() |