boompack commited on
Commit
674e2be
1 Parent(s): 895ca00

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -35
app.py CHANGED
@@ -1,47 +1,51 @@
1
- import re
2
  import gradio as gr
 
3
 
4
- def parse_comments(raw_text):
5
- # Разбиваем текст на отдельные комментарии по "Ответить", что указывает на конец каждого блока комментария
6
- comment_blocks = raw_text.split("Ответить")
7
-
8
- results = []
9
- for block in comment_blocks:
10
- # Находим никнейм пользователя, начиная с начала строки до первого не-буквенного символа или цифры
11
- user_match = re.search(r'^([a-zA-Z0-9_]+)', block.strip())
12
- # Находим текст комментария, который начинается после никнейма и перед временем ("1 нед." или "1 дн.")
13
- text_match = re.search(r'@\w+\s+(.+?)(?:\d+\s(?:нед|дн)\.)', block)
14
- # Находим количество лайков, если оно указано
15
- likes_match = re.search(r'Нравится:\s*(\d+)', block)
16
-
17
- if user_match and text_match:
18
- user = user_match.group(1)
19
- text = text_match.group(1).strip()
20
- likes = int(likes_match.group(1)) if likes_match else 0
21
-
22
- # Добавляем результат в список только если текст не пустой
23
- if text:
24
- results.append({"Пользователь": user, "Текст": text, "Лайков": likes})
25
 
26
- return results
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- def format_output(parsed_comments):
29
- # Форматируем вывод в текстовом формате
30
- formatted_output = ""
31
- for comment in parsed_comments:
32
- formatted_output += f"Пользователь: {comment['Пользователь']}\n"
33
- formatted_output += f"Текст: {comment['Текст']}\n"
34
- formatted_output += f"Лайков: {comment['Лайков']}\n\n"
35
- return formatted_output
36
 
37
- def process_text(raw_text):
38
- parsed_comments = parse_comments(raw_text)
39
- return format_output(parsed_comments)
40
 
41
  # Настройка Gradio интерфейса
42
  iface = gr.Interface(
43
  fn=process_text,
44
- inputs=gr.Textbox(lines=10, placeholder="Введите текст сюда..."),
 
 
 
45
  outputs=gr.Textbox(lines=10, placeholder="Результат...")
46
  )
47
 
 
 
1
  import gradio as gr
2
+ import re
3
 
4
+ # Функция для обработки входного текста
5
+ def process_text(input_text, comment_count):
6
+ # Печать входных данных для отладки
7
+ print(f"Входные данные: {input_text}")
8
+ print(f"Ожидаемое количество комментариев: {comment_count}")
9
+
10
+ # Регулярное выражение для извлечения данных
11
+ pattern = r"([a-zA-Z0-9_@]+(?:[a-zA-Z0-9_]+)?)\s*(.*?)\s*(?:Нравится:\s*(\d+))"
12
+
13
+ # Проверка пустого ввода
14
+ if not input_text.strip():
15
+ return "Пожалуйста, введите текст."
16
+
17
+ # Поиск всех совпадений в тексте
18
+ matches = re.findall(pattern, input_text)
 
 
 
 
 
 
19
 
20
+ # Печать найденных совпадений для отладки
21
+ print(f"Найденные совпадения: {matches}")
22
+
23
+ # Проверка наличия совпадений
24
+ if not matches:
25
+ return "Совпадения не найдены. Пожалуйста, проверьте ввод."
26
+
27
+ # Проверка количества комментариев
28
+ actual_comment_count = len(matches)
29
+ if actual_comment_count != int(comment_count):
30
+ return (f"Предупреждение: найдено {actual_comment_count} комментариев, "
31
+ f"хотя указано {comment_count}.\n"
32
+ "Пожалуйста, проверьте ввод.")
33
 
34
+ # Формируем вывод
35
+ output = []
36
+ for i, match in enumerate(matches, 1):
37
+ username, text, likes = match
38
+ output.append(f'{i}. Пользователь: "{username}", Текст: "{text.strip()}", Лайков: {likes or 0}')
 
 
 
39
 
40
+ return "\n".join(output)
 
 
41
 
42
  # Настройка Gradio интерфейса
43
  iface = gr.Interface(
44
  fn=process_text,
45
+ inputs=[
46
+ gr.Textbox(lines=10, placeholder="Введите текст сюда..."), # Поле для текста комментариев
47
+ gr.Number(label="Количество комментариев по данным Instagram") # Поле для количества комментариев
48
+ ],
49
  outputs=gr.Textbox(lines=10, placeholder="Результат...")
50
  )
51