daswer123's picture
Update app.py
cc8ed94 verified
import gradio as gr
from module import generate_resume_urls
import os
import tempfile
import shutil
def write_result_to_file(result, filename="result.txt"):
# Create temp folder
result = "\n\n".join(result)
temp_dir = tempfile.mkdtemp()
# Write result to file
with open(os.path.join(temp_dir, filename), "w") as f:
f.write(result)
f.close()
return os.path.join(temp_dir, filename)
def get_links(job_search_status_enable,gender_enable,salary_enable,education_level_enable,experience_enable,age_enable,
links,use_filters,use_inc_values,job_search_status,gender,age_from,age_to,salary_from,salary_to,education_level,experience):
result_links = []
cout_slogan = "Кол-во ссылок: "
links_list = links.split("\n")
# Remove empy elemts from links_list
links_list = [link for link in links_list if link]
if not use_filters:
for link in links_list:
result = generate_resume_urls(link)
result_links += result
cout_slogan = cout_slogan + str(len(result_links))
return write_result_to_file(result_links),cout_slogan
# When use_filters is True
else:
selected_filters = []
filter_values = {}
for link in links_list:
if age_enable:
selected_filters.append("age")
# print(age_from,age_to)
filter_values["age"] = list(range(age_from,age_to))
diffrence = age_to - age_from
if diffrence <= 0:
filter_values["age"].append(age_from)
else:
filter_values["age"].append(age_to)
if job_search_status_enable:
selected_filters.append("job_search_status")
print(job_search_status)
filter_values["job_search_status"] = job_search_status
if gender_enable:
selected_filters.append("gender")
filter_values["gender"] = gender
if salary_enable:
selected_filters.append("salary")
filter_values["salary_from"] = salary_from
filter_values["salary_to"] = salary_to
if education_level_enable:
selected_filters.append("education_level")
filter_values["education_level"] = education_level
if experience_enable:
selected_filters.append("experience")
filter_values["experience"] = experience
for link in links_list:
result = generate_resume_urls(link, selected_filters, filter_values, use_inc_values)
result_links += result
cout_slogan = cout_slogan + str(len(result_links))
return write_result_to_file(result_links),cout_slogan
with gr.Blocks() as demo:
gr.Markdown("# Web-интерфейс настройки правил фильтрации Модуля контроля")
with gr.Row():
links = gr.TextArea(label="Введите ссылки",placeholder="https://hh.ru/search/resume?text=Региональный+визуальный+мерчендайзер")
use_filters = gr.Checkbox(label="Использовать Фильтры ( если выключенно, создается максимально кол-во ссылок )")
with gr.Accordion("Фильтры",open=True):
# Набор фильтров
use_inc_values = gr.Checkbox(label="Добавить к списку резюме, список без указанного возраста и зарплаты")
with gr.Row():
with gr.Row():
job_search_status_enable = gr.Checkbox(label="Статус поиска работы",value=True)
gender_enable = gr.Checkbox(label="Пол",value=True)
with gr.Row():
age_enable = gr.Checkbox(label="Возраст",value=True)
with gr.Row():
salary_enable = gr.Checkbox(label="Зарплата",value=True)
education_level_enable = gr.Checkbox(label="Образование",value=True)
experience_enable = gr.Checkbox(label="Опыт работы",value=True)
with gr.Accordion("Настройка фильтров",open=False):
with gr.Row():
job_search_status = gr.CheckboxGroup(["unknown", "not_looking_for_job", "looking_for_offers", "active_search", "has_job_offer", "accepted_job_offer"], label="Статус поиска работы")
gender = gr.Radio(["male", "female","both"], label="Пол")
with gr.Row():
age_from = gr.Slider(18, 70,value=18, step=1, label="Возраст от")
age_to = gr.Slider(18, 70,value=71,step=1, label="Возраст до")
with gr.Row():
salary_from = gr.Slider(0, 1000000000,step=1,value=0, label="Зарплата от")
salary_to = gr.Slider(0, 1000000000,step=1,value=1000000000,label="Зарплата до")
education_level = gr.CheckboxGroup(["secondary", "special_secondary", "unfinished_higher", "bachelor", "master", "doctor", "candidate", "higher"], label="Уровень образования")
experience = gr.CheckboxGroup(["noExperience", "between1And3", "between3And6", "moreThan6"], label="Опыт работы")
with gr.Row():
get_result_btn = gr.Button("Получить")
with gr.Row():
result_field = gr.File(label="Результат", interactive=False)
with gr.Row():
result_count_field = gr.Label(value="Кол-во ссылок")
get_result_btn.click(fn=get_links,inputs=
[ job_search_status_enable,gender_enable,salary_enable,education_level_enable,experience_enable,age_enable,
links,use_filters,use_inc_values,job_search_status,gender,age_from,age_to,salary_from,salary_to,education_level,experience],
outputs=[result_field,result_count_field])
demo.launch()