|
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) |
|
|
|
|
|
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() |