Spaces:
Sleeping
Sleeping
| # Вариант 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) |