parmuza / app.py
boompack's picture
Update app.py
895ca00 verified
raw
history blame
2.41 kB
import re
import gradio as gr
def parse_comments(raw_text):
# Разбиваем текст на отдельные комментарии по "Ответить", что указывает на конец каждого блока комментария
comment_blocks = raw_text.split("Ответить")
results = []
for block in comment_blocks:
# Находим никнейм пользователя, начиная с начала строки до первого не-буквенного символа или цифры
user_match = re.search(r'^([a-zA-Z0-9_]+)', block.strip())
# Находим текст комментария, который начинается после никнейма и перед временем ("1 нед." или "1 дн.")
text_match = re.search(r'@\w+\s+(.+?)(?:\d+\s(?:нед|дн)\.)', block)
# Находим количество лайков, если оно указано
likes_match = re.search(r'Нравится:\s*(\d+)', block)
if user_match and text_match:
user = user_match.group(1)
text = text_match.group(1).strip()
likes = int(likes_match.group(1)) if likes_match else 0
# Добавляем результат в список только если текст не пустой
if text:
results.append({"Пользователь": user, "Текст": text, "Лайков": likes})
return results
def format_output(parsed_comments):
# Форматируем вывод в текстовом формате
formatted_output = ""
for comment in parsed_comments:
formatted_output += f"Пользователь: {comment['Пользователь']}\n"
formatted_output += f"Текст: {comment['Текст']}\n"
formatted_output += f"Лайков: {comment['Лайков']}\n\n"
return formatted_output
def process_text(raw_text):
parsed_comments = parse_comments(raw_text)
return format_output(parsed_comments)
# Настройка Gradio интерфейса
iface = gr.Interface(
fn=process_text,
inputs=gr.Textbox(lines=10, placeholder="Введите текст сюда..."),
outputs=gr.Textbox(lines=10, placeholder="Результат...")
)
# Запуск интерфейса
iface.launch()