File size: 6,151 Bytes
f1c202b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cc8ed94
f1c202b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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()