Hello world!
import streamlit as st
# ✅ Функция для сброса состояния при новом выборе цвета
def restart_if_needed():
if "analyze" in st.session_state:
del st.session_state["analyze"]
del st.session_state["q3"]
del st.session_state["q4"]
st.rerun()
# ✅ Инициализация session_state
if "q3" not in st.session_state:
st.session_state["q3"] = ""
if "q4" not in st.session_state:
st.session_state["q4"] = ""
# 🎵 Музыкальные рекомендации по Владимиру Элькину
music_elkin = {
"🔵 Синий": ["Ария на струне соль (И.С. Бах)", "Лунная соната (Л. Бетховен)", "Зима из Времен года (А. Вивальди)"],
"🟢 Зелёный": ["Симфония №5 (Л. Бетховен)", "Симфония №40 (В.А. Моцарт)", "Марш воинов (Ф. Шуберт)"],
"🔴 Красный": ["Увертюра 1812 года (П.И. Чайковский)", "Танец рыцарей (С. Прокофьев)", "Carmina Burana - O Fortuna (К. Орф)"],
"🟡 Жёлтый": ["Концерт для флейты (В.А. Моцарт)", "Весна из Времен года (А. Вивальди)", "Вальс На прекрасном голубом Дунае (И. Штраус)"],
"🟣 Фиолетовый": ["Поэма экстаза (А. Скрябин)", "Лунный свет (К. Дебюсси)", "Гимнопедии (Э. Сати)"],
"🟤 Коричневый": ["Бранденбургские концерты (И.С. Бах)", "Симфония №6 Пасторальная (Л. Бетховен)"],
"⚫ Чёрный": ["Второй концерт для фортепиано (С. Рахманинов)", "Песнь о земле (Г. Малер)", "Лебединое озеро (П.И. Чайковский)"],
"⚪ Серый": ["Шум дождя, морских волн", "Тибетские напевы"]
}
# 🎭 Данные для терапии пользователя
correction_data = {
"🔵 Синий": ("Покой, удовлетворение, внутренний мир", "«Покой не во внешнем, а внутри нас.»"),
"🟢 Зелёный": ("Воля, упорство, преодоление", "«Дорогу осилит идущий.»"),
"🔴 Красный": ("Энергия, динамика, победа", "«Энергия приходит с первым шагом.»"),
"🟡 Жёлтый": ("Радость, надежда, оптимизм", "«Улыбка – это ключ к новой двери.»"),
"🟣 Фиолетовый": ("Творчество, мечтательность, фантазия", "«Мечтай смело – это путь к реальности.»"),
"🟤 Коричневый": ("Заземлённость, стабильность", "«Стабильность – это основа для роста.»"),
"⚫ Чёрный": ("Глубокая печаль, драматизм, трансформация", "«Трансформация начинается с принятия.»"),
"⚪ Серый": ("Нейтральность, отстранённость, баланс", "«Баланс – это искусство находить середину.»")
}
# 🌟 Выбор цветов
st.title("🎵 Подбор музыки и коррекция состояния")
# 🔥 Сброс состояния при изменении выбора
selected_favorite = st.radio("1️⃣ Какой цвет вам сейчас наиболее приятен?", list(music_elkin.keys()), key="favorite_color", on_change=restart_if_needed)
selected_disliked = st.radio("2️⃣ Какой цвет вам сейчас НЕ нравится?", list(music_elkin.keys()), key="disliked_color", on_change=restart_if_needed)
submitted = st.button("🔍 Анализировать")
if submitted:
st.session_state["q3"] = selected_favorite.strip()
st.session_state["q4"] = selected_disliked.strip()
st.session_state["analyze"] = True # 🔥 Флаг для анализа
# 🔥 Показываем анализ только после нажатия кнопки
if st.session_state.get("analyze"):
st.divider()
st.subheader("🔍 Анализ вашего состояния")
q3 = st.session_state["q3"]
q4 = st.session_state["q4"]
# ✅ Вывод выбора
st.write(f"🌟 **Вы выбрали:** {q3}")
st.write(f"❌ **Вам не нравится:** {q4}")
st.subheader("🎵 Музыкальные рекомендации:")
# ✅ Музыка на основе любимого цвета
st.write(f"🎶 **Рекомендации на основе вашего выбора {q3}:**")
for song in music_elkin[q3]:
st.markdown(f"[🎵 {song}](https://www.youtube.com/results?search_query={song.replace(' ', '+')})")
# ✅ Музыка для балансировки состояния (на основе нелюбимого цвета)
st.write(f"💡 **Музыка для балансировки (разрешение конфликта с {q4}):**")
for song in music_elkin[q4]:
st.markdown(f"[🎵 {song}](https://www.youtube.com/results?search_query={song.replace(' ', '+')})")
# 🎭 Коррекция состояния через цитаты
st.divider()
st.subheader("💬 Коррекция состояния")
# ✅ Фраза по выбранному цвету
st.write(f"✨ **Ваше текущее состояние:** {correction_data[q3][0]}")
st.write(f"💡 {correction_data[q3][1]}")
# ✅ Фраза по отверженному цвету (балансировка)
st.write(f"🔄 **Вам трудно принять:** {correction_data[q4][0]}")
st.write(f"💡 {correction_data[q4][1]}")
st.write("\n💡 Используйте музыку и слова как инструмент управления эмоциями! 🎶")