File size: 3,542 Bytes
a539744
11ef3f4
5be6938
11ef3f4
53f820e
3cafd09
 
 
11ef3f4
53f820e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76e2c17
ae8ac5b
 
 
60e12de
11ef3f4
 
3cafd09
 
 
60e12de
ae8ac5b
 
 
 
53f820e
 
 
 
 
11ef3f4
 
 
3cafd09
 
a539744
11ef3f4
a539744
11ef3f4
 
53f820e
 
 
 
ae8ac5b
11ef3f4
556706a
11ef3f4
 
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
import gradio as gr
import re

# Функция для обработки входного текста
def process_text(input_text, comment_count, pattern):
    # Печать входных данных для отладки
    print(f"Входные данные: {input_text}")

    # Регулярное выражение для извлечения данных
    if pattern == "Нравится":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$"
    elif pattern == "Лайков":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sЛайков:\s*(\d+))?\s*$"
    elif pattern == "Like":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sLike:\s*(\d+))?\s*$"
    elif pattern == "likes":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$"
    elif pattern == "like":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$"
    elif pattern == "like +":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*\+\s*$"
    elif pattern == "Плюс":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\+\s*$"
    elif pattern == "Минус":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*-\s*$"
    elif pattern == "Равно":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*=\s*$"
    elif pattern == "Точка":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\.\s*$"
    elif pattern == "Запятая":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\,\s*$"
    elif pattern == "Точка с запятой":
        pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\;\s*$"

    # Проверка пустого ввода
    if not input_text.strip():
        return "Пожалуйста, введите текст."

    # Поиск всех совпадений в тексте
    matches = re.findall(pattern, input_text)
    
    # Печать найденных совпадений для отладки
    print(f"Найденные совпадения: {matches}")

    # Проверка наличия совпадений
    if not matches:
        return "Совпадения не найдены. Пожалуйста, проверьте ввод."

    # Проверка количества комментариев
    actual_comment_count = len(matches)
    if actual_comment_count != int(comment_count):
        return f"Предупреждение: найдено {actual_comment_count} комментариев, но указано {comment_count}."

    # Формируем вывод
    output = []
    for i, match in enumerate(matches, 1):
        username, text, likes = match
        output.append(f'{i}. Пользователь: "{username}", Текст: "{text.strip()}", Лайков: {likes}')

    return "\n".join(output)

# Настройка Gradio интерфейса
iface = gr.Interface(
    fn=lambda input_text, comment_count, pattern: process_text(input_text, comment_count, pattern),  
    inputs=[gr.Textbox(lines=10, placeholder="Введите текст сюда..."), 
            gr.Number(label="Количество комментариев", value=0), 
            gr.Dropdown(label="Шаблон", choices=["Нравится", "Лайков", "Like", "likes", "like", "like +", "Плюс", "Минус", "Равно", "Точка", "Запятая", "Точка с запятой"])],  
    outputs=gr.Textbox(lines=10, placeholder="Результат...")
)

# Запуск интерфейса
iface.launch()