boompack commited on
Commit
e344c67
·
verified ·
1 Parent(s): 169468d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -32
app.py CHANGED
@@ -2,42 +2,35 @@ import gradio as gr
2
  import re
3
 
4
  # Функция для анализа поста
5
- def analyze_post(content_type, link_to_post, post_likes, post_date, description, comments_likes, comments_count, total_comments_likes, all_comments):
6
- # Анализ общей информации поста
7
- total_likes = int(post_likes)
8
- total_comments = int(comments_count)
9
- total_likes_on_comments = int(total_comments_likes)
10
-
11
- # Расчет средней вовлеченности
12
- avg_likes_per_comment = total_likes_on_comments / total_comments if total_comments > 0 else 0
13
-
14
- # Паттерн для извлечения никнейма, комментария и лайков
15
  pattern = r"Фото профиля (\S+)\n(.+?)\n\d+ (?:ч|дн)\.(?:\"Нравится\": (\d+))?(?:Ответить)?"
16
  matches = re.findall(pattern, all_comments)
17
 
18
- # Форматируем выводы
19
- users_output = "\n".join([match[0] for match in matches]) # Никнеймы
20
- comments_output = "\n".join([match[1] for match in matches]) # Комментарии
21
-
22
- # Output 3: Лайки по хронологии
23
  likes_chronology_output = "\n".join([match[2] if match[2] else "0" for match in matches])
24
-
25
- # Output 4: Общая сумма лайков на всех комментариях
26
  total_likes_sum = sum(int(match[2]) for match in matches if match[2])
27
 
28
- # Итоговый вывод
29
- result = (
30
  f"Content Type: {content_type}\n"
31
  f"Link to Post: {link_to_post}\n"
32
  f"Post Information\n"
33
- f"Likes: {total_likes}\n"
34
  f"Post Date: {post_date}\n"
35
- f"Description: {description}\n\n"
36
- f"Total Comments: {total_comments}\n"
37
- f"Average Likes per Comment: {avg_likes_per_comment:.2f}\n"
 
38
  )
39
 
40
- return result, users_output, comments_output, likes_chronology_output, total_likes_sum
41
 
42
  # Создаем интерфейс Gradio
43
  iface = gr.Interface(
@@ -48,15 +41,18 @@ iface = gr.Interface(
48
  gr.Number(label="Likes"), # Лайки на посте
49
  gr.Textbox(label="Post Date", placeholder="Введите дату публикации"), # Дата публикации
50
  gr.Textbox(label="Description", placeholder="Введите описание поста"), # Описание поста
51
- gr.Number(label="Количество лайков на комментарии"), # Количество лайков на комментариях
52
- gr.Number(label="Количество комментариев"), # Количество комментариев
53
- gr.Number(label="Общее количество лайков на комментариях"), # Общая сумма лайков на комментариях
54
- gr.Textbox(label="Все комментарии", placeholder="Введите комментарии в формате, как указано в примере") # Все комментарии
 
 
 
 
 
55
  ],
56
- outputs=["text", "text", "text", "text", "number"],
57
- title="Анализ Instagram-поста",
58
- description="Введите данные о посте в Instagram для анал��за. Формат комментариев: 'Фото профиля [ник]\n[комментарий]\n[время]\"Нравится\": [число]Ответить'"
59
  )
60
 
61
- # Запуск приложения
62
  iface.launch()
 
2
  import re
3
 
4
  # Функция для анализа поста
5
+ def analyze_post(content_type, link_to_post, post_likes, post_date, description, comment_count, all_comments):
6
+ # Паттерн для извлечения никнейма, текста комментария и лайков
 
 
 
 
 
 
 
 
7
  pattern = r"Фото профиля (\S+)\n(.+?)\n\d+ (?:ч|дн)\.(?:\"Нравится\": (\d+))?(?:Ответить)?"
8
  matches = re.findall(pattern, all_comments)
9
 
10
+ # Обрабатываем результаты
11
+ usernames_output = "\n".join([match[0] for match in matches]) # Никнеймы (Output 1)
12
+ comments_output = "\n".join([match[1] for match in matches]) # Тексты комментариев (Output 2)
13
+
14
+ # Лайки на комментариях по порядку (Output 3)
15
  likes_chronology_output = "\n".join([match[2] if match[2] else "0" for match in matches])
16
+
17
+ # Сумма всех лайков на комментариях (Output 4)
18
  total_likes_sum = sum(int(match[2]) for match in matches if match[2])
19
 
20
+ # Сводная информация о посте
21
+ post_summary = (
22
  f"Content Type: {content_type}\n"
23
  f"Link to Post: {link_to_post}\n"
24
  f"Post Information\n"
25
+ f"Likes: {post_likes}\n"
26
  f"Post Date: {post_date}\n"
27
+ f"Description: {description}\n"
28
+ f"Total Comments (Expected): {comment_count}\n"
29
+ f"Extracted Comments: {len(matches)}\n"
30
+ f"Total Likes on Comments: {total_likes_sum}\n"
31
  )
32
 
33
+ return post_summary, usernames_output, comments_output, likes_chronology_output, total_likes_sum
34
 
35
  # Создаем интерфейс Gradio
36
  iface = gr.Interface(
 
41
  gr.Number(label="Likes"), # Лайки на посте
42
  gr.Textbox(label="Post Date", placeholder="Введите дату публикации"), # Дата публикации
43
  gr.Textbox(label="Description", placeholder="Введите описание поста"), # Описание поста
44
+ gr.Number(label="Total Comment Count"), # Общее количество комментариев
45
+ gr.Textbox(label="All Comments", placeholder="Введите комментарии в формате, как указано в примере") # Все комментарии
46
+ ],
47
+ outputs=[
48
+ gr.Textbox(label="Post Summary"), # Сводная информация о посте
49
+ gr.Textbox(label="Usernames (Output 1)"), # Никнеймы
50
+ gr.Textbox(label="Comments (Output 2)"), # Комментарии
51
+ gr.Textbox(label="Likes Chronology (Output 3)"), # Лайки по порядку
52
+ gr.Textbox(label="Total Likes on Comments (Output 4)") # Сумма лайков на комментариях
53
  ],
54
+ title="Instagram Comment Analyzer",
55
+ description="Analyze comments for a specific Instagram post."
 
56
  )
57
 
 
58
  iface.launch()