import gradio as gr
import random
from transformers import pipeline

# Инициализация модели для текстовой генерации
generator = pipeline('text-generation', model='gpt2-medium')

# Функции для генерации никнеймов и аватарок
def generate_username():
    prefixes = ['gay_', 'ebat_', 'ded_', 'gandon_', 'top_']
    suffixes = ['penis', 'ebal', 'gandon', 'gomo', 'top', 'bot', 'sosi']
    return f"{random.choice(prefixes)}{random.choice(suffixes)}"

def generate_anime_avatar():
    return "https://picsum.photos/seed/anime/200/200"

# Функция для генерации ответа
def generate_response(text):
    result = generator(
        text,
        max_length=100,
        num_return_sequences=1,
        temperature=0.7
    )
    return result[0]['generated_text']

# Хранилище постов
posts = []

# Функция для добавления поста
def add_post(text, image, username, avatar):
    new_post = {
        "text": text,
        "image": image,
        "username": username,
        "avatar": avatar,
        "responses": []
    }
    posts.append(new_post)
    return "", None, update_feed()

# Функция для обновления ленты
def update_feed():
    feed_html = "<div class='feed'>"
    for post in reversed(posts):  # Показывать последние посты сверху
        feed_html += f"""
        <div class='post'>
            <div class='post-header'>
                <img src='{post['avatar']}' class='avatar' />
                <div class='post-info'>
                    <div class='username'>{post['username']}</div>
                </div>
            </div>
            <div class='post-content'>{post['text']}</div>
            <div class='post-image'><img src='{post['image']}' style='max-width: 100%; border-radius: 8px;'/></div>
            <div class='responses'>
                {chr(10).join(f'<div class="response">{r}</div>' for r in post['responses'])}
            </div>
        </div>
        """
    feed_html += "</div>"
    return feed_html

# Основной интерфейс
with gr.Blocks() as demo:
    gr.Markdown("# 0qwpif Talk")
    
    # Таб "Главная"
    with gr.Tab("Главная"):
        with gr.Row():
            with gr.Column():
                post_input = gr.Textbox(label="Напишите пост", placeholder="Что происходит?")
                post_image = gr.Image(label="Изображение", interactive=True, type="filepath")
                username_input = gr.Textbox(label="Никнейм", value=generate_username)
                avatar_input = gr.Image(label="Аватарка", interactive=True, type="filepath", value=generate_anime_avatar)
                gr.Button("Отправить").click(
                    add_post,
                    [post_input, post_image, username_input, avatar_input],
                    [post_input, post_image, "feed"]
                )
            with gr.Column():
                response_output = gr.Textbox(label="Ответы", interactive=False)
                generate_btn = gr.Button("Сгенерировать ответ")
                generate_btn.click(generate_response, post_input, response_output)
        
        # Лента постов
        feed = gr.HTML(value=update_feed)
    
    # Таб "Профиль"
    with gr.Tab("Профиль"):
        with gr.Row():
            username_profile = gr.Textbox(label="Никнейм", value=generate_username)
            avatar_profile = gr.Image(label="Аватарка", interactive=True, type="filepath", value=generate_anime_avatar)
        with gr.Row():
            bio_profile = gr.Textbox(label="О себе", lines=4)
            gr.Button("Обновить профиль")

demo.launch()