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