import gradio as gr import re # Функция для извлечения комментариев def extract_comments(input_text, expected_count): # Шаблон для разделения комментариев по ключевым словам comment_blocks = re.split(r'Ответить|Действия с комментарием|Скрыть ответы|Показать перевод', input_text) # Паттерны для извлечения данных patterns = [ r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$", # Нравится r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sЛайков:\s*(\d+))?\s*$", # Лайков r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sLike:\s*(\d+))?\s*$", # Like r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$", # likes r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$", # like ] results = [] # Для каждого блока текста for block in comment_blocks: block = block.strip() # Убираем лишние пробелы и пустые строки if block: # Если блок не пустой for pattern in patterns: match = re.search(pattern, block) if match: # Извлекаем данные username = match.group(1) text = match.group(2).strip() likes = int(match.group(3)) if match.group(3) else 0 # Добавляем в результаты results.append({"Пользователь": username, "Текст": text, "Лайков": likes}) break # Переходим к следующему блоку, как только нашли совпадение # Проверяем, совпадает ли количество комментариев с ожидаемым if len(results) == expected_count: display_text = "" for result in results: display_text += f"Пользователь: {result['Пользователь']}\n" display_text += f"Текст: {result['Текст']}\n" display_text += f"Лайков: {result['Лайков']}\n" display_text += "-" * 50 + "\n" return display_text else: return f"Ошибка! Количество найденных комментариев: {len(results)}, ожидалось: {expected_count}." # Функция для отображения результатов в удобном виде def display_results(input_text, expected_count): return extract_comments(input_text, expected_count) # Создание интерфейса с Gradio iface = gr.Interface( fn=display_results, # Функция, которая будет вызываться inputs=[ gr.Textbox(label="Введите текст комментариев", lines=10), # Текстовый ввод для комментариев gr.Number(label="Ожидаемое количество комментариев", value=94) # Ввод для количества комментариев ], outputs="text", # Вывод результатов в текстовом формате title="Анализ комментариев", # Название интерфейса description="Введите текст комментариев и ожидаемое количество, чтобы проверить, совпадает ли результат с ожиданиями.", theme="default" # Тема оформления ) # Запуск интерфейса iface.launch()