|
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) |
|
|
|
|
|
iface = gr.Interface( |
|
fn=process_text, |
|
inputs=[ |
|
gr.Textbox(lines=10, placeholder="Введите текст сюда..."), |
|
gr.Number(label="Количество комментариев по данным Instagram") |
|
], |
|
outputs=gr.Textbox(lines=10, placeholder="Результат...") |
|
) |
|
|
|
|
|
iface.launch() |