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()