Spaces:
Sleeping
Sleeping
File size: 9,393 Bytes
9a99aee e4fcfc2 1b91164 e34d3f1 e4fcfc2 6762b07 e4fcfc2 6762b07 e4fcfc2 6762b07 e4fcfc2 6762b07 e4fcfc2 1b91164 e4fcfc2 9a99aee 1b91164 9a99aee 1b91164 9a99aee 6762b07 9a99aee e4fcfc2 6762b07 9a99aee e4fcfc2 9a99aee e4fcfc2 6762b07 9a99aee 4ffc6c0 9a99aee e4fcfc2 9a99aee 6762b07 9a99aee e4fcfc2 6762b07 365a82e 6762b07 9a99aee 6e1e93f 9a99aee 6762b07 e4fcfc2 9a99aee 155d1d6 9a99aee be267de 9a99aee e4fcfc2 9a99aee 163f0b5 be267de 9a99aee 4ffc6c0 9a99aee 4ffc6c0 be267de 1b91164 9a99aee 6e1e93f be267de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | # Вариант 1.
# import gradio as gr
# import requests
# import random
# # Функция, которая будет вызываться при нажатии кнопки
# def generate_meme(topic):
# # 1. Генерация текста через API (для мастер-класса можно имитировать)
# # В реальности здесь был бы вызов API Qwen/DeepSeek
# # meme_text = f"Когда на уроке начинают объяснять {topic}: \n *мозг отключается*"
# meme_text = "Фотосинтез — это когда ты пытаешься взять энергию от солнца, но просыпаешься только к обеду"
# # 2. Используем заранее заготовленную картинку или шаблон
# MEME_TEMPLATES = [
# "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/1.jpeg",
# "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/2.jpeg",
# "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/3.jpeg"
# ]
# image_url = random.choice(MEME_TEMPLATES)
# # image_url = "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/3.jpg" # Ссылку меняем на свою
# # 3. Возвращаем результат (текст и ссылку на картинку)
# return meme_text, image_url
# # Создаем простой интерфейс
# with gr.Blocks() as demo:
# gr.Markdown("# 🚀 Генератор школьных мемов v1.0")
# topic_input = gr.Textbox(label="Введи скучную тему урока")
# generate_btn = gr.Button("Сгенерировать мем!")
# image_output = gr.Image(
# label="🖼️ Шаблон мема",
# height=400, # Максимальная высота
# )
# text_output = gr.Textbox(label="📄 Текст для мема:", lines=5, elem_classes=["text-output"])
# generate_btn.click(fn=generate_meme, inputs=topic_input, outputs=[text_output, image_output])
# demo.launch()
# =========================================================================================================
# Вариант 2
# import gradio as gr
# import random
# import requests
# # Ваши 15-20 шаблонов
# MEME_TEMPLATES = [
# "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/1.jpeg",
# "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/2.jpeg",
# "https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/3.jpeg",
# # ... добавьте остальные
# ]
# def generate_meme(topic):
# # 1. Генерация текста (пока заглушка)
# upper_text = f"Когда на уроке {topic}:"
# lower_text = "Твой мозг: *404 Not Found*"
# # 2. Выбор случайного шаблона
# template_url = random.choice(MEME_TEMPLATES)
# return upper_text, lower_text, template_url
# with gr.Blocks() as demo:
# gr.Markdown("# 🎯 Генератор школьных мемов")
# with gr.Row():
# with gr.Column():
# topic = gr.Textbox(label="Введи тему урока",
# placeholder="например: митоз, интегралы, ВОВ...")
# btn = gr.Button("Создать мем! 🚀")
# with gr.Column():
# upper = gr.Textbox(label="Верхняя надпись")
# lower = gr.Textbox(label="Нижняя надпись")
# image_output = gr.Image(
# label="🖼️ Шаблон мема",
# height=400, # Максимальная высота
# )
# btn.click(fn=generate_meme, inputs=topic,
# outputs=[upper, lower, image_output])
# demo.launch()
# =========================================================================================================
#Вариант 3
import gradio as gr
import random
# Ваши шаблоны изображений
MEME_TEMPLATES = [
"https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/1.jpeg",
"https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/2.jpeg",
"https://huggingface.co/datasets/MonitorKarma/school-meme-templates/resolve/main/3.jpeg",
# Добавьте остальные шаблоны здесь
]
# База данных мемных фраз для разных школьных дисциплин
MEME_PHRASES = {
# Математика/Алгебра/Геометрия
"математика": [
("Когда учитель говорит, что этот пример простой", "А ты видишь только иероглифы"),
("Когда пытаешься понять теорему", "Мозг: 'Error 404'"),
("Попытка решить уравнение", "Калькулятор: 'Я устал, я ухожу'")
],
"алгебра": [
("Попытка понять интегралы", "Это как пытаться поймать облако"),
("Решение уравнений", "Где этот икс спрятался?")
],
# Общие фразы (если предмет не найден)
"общее": [
("Когда звонок через 5 минут", "А учитель только начал новую тему"),
]
}
# Ключевые слова для определения предмета
SUBJECT_KEYWORDS = {
"математика": ["математика", "матеша", "math"],
"алгебра": ["алгебра", "алгебру", "algebra"],
}
def detect_subject(topic):
"""Определяет школьный предмет по теме"""
topic_lower = topic.lower()
for subject, keywords in SUBJECT_KEYWORDS.items():
for keyword in keywords:
if keyword in topic_lower:
return subject
return "общее"
def generate_meme(topic):
"""Генерирует мем на заданную тему"""
if not topic or not topic.strip():
return "Введите тему урока!", "Например: алгебра, физкультура, физика", random.choice(MEME_TEMPLATES)
# Определяем предмет
subject = detect_subject(topic)
# Получаем список фраз для этого предмета
phrases = MEME_PHRASES.get(subject, MEME_PHRASES["общее"])
# Выбираем случайную фразу
upper_text, lower_text = random.choice(phrases)
# Если в теме есть конкретное упоминание, можем добавить его
if subject != "общее":
upper_text = upper_text.replace("уроке", f"уроке {topic}")
# Выбираем случайный шаблон
template_url = random.choice(MEME_TEMPLATES)
return upper_text, lower_text, template_url
# Создаем интерфейс Gradio
with gr.Blocks() as demo:
gr.Markdown("""
# 🎯 Генератор школьных мемов
### Введи школьный предмет и получи смешной мем!
""")
with gr.Row():
with gr.Column(scale=1):
topic = gr.Textbox(
label="📚 Школьный предмет",
placeholder="например: алгебра, физкультура, ...",
value="алгебра"
)
# Кнопка генерации
btn = gr.Button("🎲 Создать мем!", variant="primary", size="lg")
# Подсказки
gr.Markdown("""
### 💡 Попробуй эти предметы:
- Алгебра / Геометрия
- Физкультура
- Физика
""")
with gr.Column(scale=2):
# Поля для текста мема
upper = gr.Textbox(
label="🔝 Верхняя надпись",
lines=2
)
lower = gr.Textbox(
label="🔽 Нижняя надпись",
lines=2
)
# Поле для изображения
image_output = gr.Image(
label="🖼️ Шаблон мема",
height=400,
width=400
)
# Обработчик кнопки
def generate_with_counter(topic):
upper_text, lower_text, image_url = generate_meme(topic)
return upper_text, lower_text, image_url
btn.click(
fn=generate_with_counter,
inputs=[topic],
outputs=[upper, lower, image_output]
)
# Запускаем приложение
if __name__ == "__main__":
demo.launch(debug=True,
share=False,
theme=gr.themes.Soft(),
ssr_mode=False) |