import gradio as gr import re # Функция для обработки входного текста def process_text(input_text, comment_count): # Печать входных данных для отладки print(f"Входные данные: {input_text}") print(f"Ожидаемое количество комментариев: {comment_count}") # Шаблон для разделения комментариев по ключевым словам comment_blocks = re.split(r'Ответить|Действия с комментарием|Скрыть ответы|Показать перевод', input_text) # Паттерн для извлечения данных из каждого блока pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$" results = [] for block in comment_blocks: match = re.search(pattern, block.strip()) 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}) # Проверка количества комментариев actual_comment_count = len(results) if actual_comment_count != int(comment_count): return (f"Предупреждение: найдено {actual_comment_count} комментариев, " f"хотя указано {comment_count}.\n" "Пожалуйста, проверьте ввод.") # Формируем вывод output = [] for i, result in enumerate(results, 1): username, text, likes = result['Пользователь'], result['Текст'], result['Лайков'] output.append(f'{i}. Пользователь: "{username}", Текст: "{text}", Лайков: {likes}') return "\n".join(output) # Настройка Gradio интерфейса iface = gr.Interface( fn=process_text, inputs=[ gr.Textbox(lines=10, placeholder="Введите текст сюда..."), # Поле для текста комментариев gr.Number(label="Количество комментариев по данным Instagram") # Поле для количества комментариев ], outputs=gr.Textbox(lines=10, placeholder="Результат...") ) # Запуск интерфейса iface.launch()