hy / app.py
boompack's picture
Update app.py
53f820e verified
raw
history blame
3.54 kB
import gradio as gr
import re
# Функция для обработки входного текста
def process_text(input_text, comment_count, pattern):
# Печать входных данных для отладки
print(f"Входные данные: {input_text}")
# Регулярное выражение для извлечения данных
if pattern == "Нравится":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$"
elif pattern == "Лайков":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sЛайков:\s*(\d+))?\s*$"
elif pattern == "Like":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sLike:\s*(\d+))?\s*$"
elif pattern == "likes":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$"
elif pattern == "like":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$"
elif pattern == "like +":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*\+\s*$"
elif pattern == "Плюс":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\+\s*$"
elif pattern == "Минус":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*-\s*$"
elif pattern == "Равно":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*=\s*$"
elif pattern == "Точка":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\.\s*$"
elif pattern == "Запятая":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\,\s*$"
elif pattern == "Точка с запятой":
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\;\s*$"
# Проверка пустого ввода
if not input_text.strip():
return "Пожалуйста, введите текст."
# Поиск всех совпадений в тексте
matches = re.findall(pattern, input_text)
# Печать найденных совпадений для отладки
print(f"Найденные совпадения: {matches}")
# Проверка наличия совпадений
if not matches:
return "Совпадения не найдены. Пожалуйста, проверьте ввод."
# Проверка количества комментариев
actual_comment_count = len(matches)
if actual_comment_count != int(comment_count):
return f"Предупреждение: найдено {actual_comment_count} комментариев, но указано {comment_count}."
# Формируем вывод
output = []
for i, match in enumerate(matches, 1):
username, text, likes = match
output.append(f'{i}. Пользователь: "{username}", Текст: "{text.strip()}", Лайков: {likes}')
return "\n".join(output)
# Настройка Gradio интерфейса
iface = gr.Interface(
fn=lambda input_text, comment_count, pattern: process_text(input_text, comment_count, pattern),
inputs=[gr.Textbox(lines=10, placeholder="Введите текст сюда..."),
gr.Number(label="Количество комментариев", value=0),
gr.Dropdown(label="Шаблон", choices=["Нравится", "Лайков", "Like", "likes", "like", "like +", "Плюс", "Минус", "Равно", "Точка", "Запятая", "Точка с запятой"])],
outputs=gr.Textbox(lines=10, placeholder="Результат...")
)
# Запуск интерфейса
iface.launch()