muhammadsalmanalfaridzi commited on
Commit
094420a
·
verified ·
1 Parent(s): dfc3347

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -12
app.py CHANGED
@@ -6,13 +6,14 @@ from weasyprint import HTML
6
  from markitdown import MarkItDown
7
  from cerebras.cloud.sdk import Cerebras
8
 
9
- # Pastikan file style.css tersedia sesuai path (misalnya di folder "resumes" atau di direktori yang sama)
 
10
 
11
  # Dapatkan API key dari environment variables
12
  api_key = os.environ.get("CEREBRAS_API_KEY")
13
 
14
- # Inisialisasi MarkItDown dengan semua optional dependencies (pastikan Anda telah menginstal 'markitdown[all]')
15
- md_converter = MarkItDown(enable_plugins=True)
16
 
17
  def create_prompt(resume_string: str, jd_string: str) -> str:
18
  """
@@ -107,12 +108,16 @@ def process_resume(resume, jd_string):
107
  Memproses file resume yang di-upload dan job description, lalu
108
  menghasilkan resume yang telah dioptimasi + saran perbaikan.
109
  """
110
- # Gunakan file-like stream dari upload (tanpa cek ekstensi, dukung semua format yang didukung MarkItDown)
111
- try:
112
- result = md_converter.convert(resume.file)
 
 
 
 
113
  resume_string = result.text_content # konten Markdown hasil konversi
114
- except Exception as e:
115
- return f"Conversion failed: {str(e)}", "", "", "", ""
116
 
117
  # Buat prompt untuk AI
118
  prompt = create_prompt(resume_string, jd_string)
@@ -123,7 +128,6 @@ def process_resume(resume, jd_string):
123
  # Pisahkan response menjadi "optimized resume" dan "additional suggestions"
124
  response_list = response_string.split("## Additional Suggestions")
125
  new_resume = response_list[0].strip()
126
- # Ganti tanda asterisk di awal baris menjadi tanda "-" untuk bullet list standar
127
  new_resume = re.sub(r'^\* ', '- ', new_resume, flags=re.MULTILINE)
128
  suggestions = "## Additional Suggestions\n\n" + response_list[1].strip() if len(response_list) > 1 else ""
129
 
@@ -156,7 +160,7 @@ def export_resume(new_resume):
156
  menggunakan WeasyPrint.
157
  """
158
  try:
159
- # Konversi Markdown ke HTML dengan ekstensi tambahan agar format terjaga
160
  html_content = markdown.markdown(new_resume, extensions=['extra', 'nl2br'])
161
 
162
  # Path output PDF
@@ -165,7 +169,7 @@ def export_resume(new_resume):
165
  # Gunakan stylesheet (pastikan path style.css benar)
166
  HTML(string=html_content).write_pdf(
167
  output_pdf_file,
168
- stylesheets=["resumes/style.css"]
169
  )
170
 
171
  return output_pdf_file
@@ -214,4 +218,4 @@ with gr.Blocks() as app:
214
  outputs=[export_result]
215
  )
216
 
217
- app.launch()
 
6
  from markitdown import MarkItDown
7
  from cerebras.cloud.sdk import Cerebras
8
 
9
+ # Pastikan Anda memiliki file style.css di direktori yang sama
10
+ # atau sesuaikan path 'stylesheets' di fungsi export_resume
11
 
12
  # Dapatkan API key dari environment variables
13
  api_key = os.environ.get("CEREBRAS_API_KEY")
14
 
15
+ # Inisialisasi MarkItDown
16
+ md_converter = MarkItDown()
17
 
18
  def create_prompt(resume_string: str, jd_string: str) -> str:
19
  """
 
108
  Memproses file resume yang di-upload dan job description, lalu
109
  menghasilkan resume yang telah dioptimasi + saran perbaikan.
110
  """
111
+ # Format yang didukung
112
+ supported_extensions = ('.pptx', '.docx', '.pdf', '.jpg', '.jpeg', '.png', '.xlsx')
113
+
114
+ # Cek apakah file resume memiliki ekstensi yang didukung
115
+ if resume.name.lower().endswith(supported_extensions):
116
+ # Konversi file ke Markdown menggunakan MarkItDown
117
+ result = md_converter.convert(resume.name)
118
  resume_string = result.text_content # konten Markdown hasil konversi
119
+ else:
120
+ return "File format not supported for conversion to Markdown.", "", "", "", ""
121
 
122
  # Buat prompt untuk AI
123
  prompt = create_prompt(resume_string, jd_string)
 
128
  # Pisahkan response menjadi "optimized resume" dan "additional suggestions"
129
  response_list = response_string.split("## Additional Suggestions")
130
  new_resume = response_list[0].strip()
 
131
  new_resume = re.sub(r'^\* ', '- ', new_resume, flags=re.MULTILINE)
132
  suggestions = "## Additional Suggestions\n\n" + response_list[1].strip() if len(response_list) > 1 else ""
133
 
 
160
  menggunakan WeasyPrint.
161
  """
162
  try:
163
+ # Konversi Markdown ke HTML
164
  html_content = markdown.markdown(new_resume, extensions=['extra', 'nl2br'])
165
 
166
  # Path output PDF
 
169
  # Gunakan stylesheet (pastikan path style.css benar)
170
  HTML(string=html_content).write_pdf(
171
  output_pdf_file,
172
+ stylesheets=["resumes/style.css"] # atau "resumes/style.css" jika style.css di folder "resumes"
173
  )
174
 
175
  return output_pdf_file
 
218
  outputs=[export_result]
219
  )
220
 
221
+ app.launch()