new-space / app.py
boompack's picture
Update app.py
e344c67 verified
raw
history blame
3.22 kB
import gradio as gr
import re
# Функция для анализа поста
def analyze_post(content_type, link_to_post, post_likes, post_date, description, comment_count, all_comments):
# Паттерн для извлечения никнейма, текста комментария и лайков
pattern = r"Фото профиля (\S+)\n(.+?)\n\d+ (?:ч|дн)\.(?:\"Нравится\": (\d+))?(?:Ответить)?"
matches = re.findall(pattern, all_comments)
# Обрабатываем результаты
usernames_output = "\n".join([match[0] for match in matches]) # Никнеймы (Output 1)
comments_output = "\n".join([match[1] for match in matches]) # Тексты комментариев (Output 2)
# Лайки на комментариях по порядку (Output 3)
likes_chronology_output = "\n".join([match[2] if match[2] else "0" for match in matches])
# Сумма всех лайков на комментариях (Output 4)
total_likes_sum = sum(int(match[2]) for match in matches if match[2])
# Сводная информация о посте
post_summary = (
f"Content Type: {content_type}\n"
f"Link to Post: {link_to_post}\n"
f"Post Information\n"
f"Likes: {post_likes}\n"
f"Post Date: {post_date}\n"
f"Description: {description}\n"
f"Total Comments (Expected): {comment_count}\n"
f"Extracted Comments: {len(matches)}\n"
f"Total Likes on Comments: {total_likes_sum}\n"
)
return post_summary, usernames_output, comments_output, likes_chronology_output, total_likes_sum
# Создаем интерфейс Gradio
iface = gr.Interface(
fn=analyze_post,
inputs=[
gr.Radio(["Photo", "Video"], label="Content Type"), # Выбор типа контента
gr.Textbox(label="Link to Post", placeholder="Введите ссылку на пост"), # Ссылка на пост
gr.Number(label="Likes"), # Лайки на посте
gr.Textbox(label="Post Date", placeholder="Введите дату публикации"), # Дата публикации
gr.Textbox(label="Description", placeholder="Введите описание поста"), # Описание поста
gr.Number(label="Total Comment Count"), # Общее количество комментариев
gr.Textbox(label="All Comments", placeholder="Введите комментарии в формате, как указано в примере") # Все комментарии
],
outputs=[
gr.Textbox(label="Post Summary"), # Сводная информация о посте
gr.Textbox(label="Usernames (Output 1)"), # Никнеймы
gr.Textbox(label="Comments (Output 2)"), # Комментарии
gr.Textbox(label="Likes Chronology (Output 3)"), # Лайки по порядку
gr.Textbox(label="Total Likes on Comments (Output 4)") # Сумма лайков на комментариях
],
title="Instagram Comment Analyzer",
description="Analyze comments for a specific Instagram post."
)
iface.launch()