Download app.py from boompack/hy: direct link, hf CLI and curl.
- Browser
- Download file 3.77 kB
-
https://huggingface.co/spaces/boompack/hy/resolve/main/app.py
- Command line
-
hf download hf://spaces/boompack/hy/app.py
-
curl -L -o app.py https://huggingface.co/spaces/boompack/hy/resolve/main/app.py
3.77 kB
| import gradio as gr | |
| import re | |
| # Функция для извлечения комментариев | |
| def extract_comments(input_text, expected_count): | |
| # Шаблон для разделения комментариев по ключевым словам | |
| comment_blocks = re.split(r'Ответить|Действия с комментарием|Скрыть ответы|Показать перевод', input_text) | |
| # Паттерны для извлечения данных | |
| patterns = [ | |
| r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$", # Нравится | |
| r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sЛайков:\s*(\d+))?\s*$", # Лайков | |
| r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sLike:\s*(\d+))?\s*$", # Like | |
| r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$", # likes | |
| r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$", # like | |
| ] | |
| results = [] | |
| # Для каждого блока текста | |
| for block in comment_blocks: | |
| block = block.strip() # Убираем лишние пробелы и пустые строки | |
| if block: # Если блок не пустой | |
| for pattern in patterns: | |
| match = re.search(pattern, block) | |
| 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}) | |
| break # Переходим к следующему блоку, как только нашли совпадение | |
| # Проверяем, совпадает ли количество комментариев с ожидаемым | |
| if len(results) == expected_count: | |
| display_text = "" | |
| for result in results: | |
| display_text += f"Пользователь: {result['Пользователь']}\n" | |
| display_text += f"Текст: {result['Текст']}\n" | |
| display_text += f"Лайков: {result['Лайков']}\n" | |
| display_text += "-" * 50 + "\n" | |
| return display_text | |
| else: | |
| return f"Ошибка! Количество найденных комментариев: {len(results)}, ожидалось: {expected_count}." | |
| # Функция для отображения результатов в удобном виде | |
| def display_results(input_text, expected_count): | |
| return extract_comments(input_text, expected_count) | |
| # Создание интерфейса с Gradio | |
| iface = gr.Interface( | |
| fn=display_results, # Функция, которая будет вызываться | |
| inputs=[ | |
| gr.Textbox(label="Введите текст комментариев", lines=10), # Текстовый ввод для комментариев | |
| gr.Number(label="Ожидаемое количество комментариев", value=94) # Ввод для количества комментариев | |
| ], | |
| outputs="text", # Вывод результатов в текстовом формате | |
| title="Анализ комментариев", # Название интерфейса | |
| description="Введите текст комментариев и ожидаемое количество, чтобы проверить, совпадает ли результат с ожиданиями.", | |
| theme="default" # Тема оформления | |
| ) | |
| # Запуск интерфейса | |
| iface.launch() |