test / app.py
0qwpifs's picture
Update app.py
0914cec verified
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()