parmuza / app.py
boompack's picture
Update app.py
44e06ad verified
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()