Spaces:
Sleeping
Sleeping
import streamlit as st | |
from streamlit_local_storage import LocalStorage | |
from database import init_supabase | |
from utils import apply_filters, apply_sort | |
from locales import load_locale, lang_codes | |
from data_loader import load_data, get_unique_mood, get_unique_tags | |
from ui_components import render_sidebar, render_main_content, load_css | |
DEFAULT_LANG = "en" | |
# Настройки страницы | |
st.set_page_config(layout="wide", page_icon="🧙", page_title="Fantasy Characters Explorer") | |
localS = LocalStorage() | |
# Загрузка данных | |
database = init_supabase() | |
df = load_data() | |
st.session_state.lang = localS.getItem("lang") | |
all_langs = lang_codes() | |
if st.session_state.lang not in all_langs: | |
st.session_state.lang = (st.context.locale.split("-", 1)[0] if st.context.locale else DEFAULT_LANG) | |
localS.setItem("lang", st.session_state.lang) | |
locale = load_locale(st.session_state.lang) | |
if 'rated' not in st.session_state: | |
st.session_state.rated = localS.getItem("rated") | |
if st.session_state.rated is None: | |
st.session_state.rated = [] | |
# Загрузка стилей | |
st.markdown(f"<style>{load_css()}</style>", unsafe_allow_html=True) | |
# Получение уникальных значений для фильтров | |
moods = [locale['filter_all']] + get_unique_mood(df) | |
all_tags = get_unique_tags(df) | |
# Рендеринг сайдбара с фильтрами | |
selected_filters = render_sidebar(localS, locale, all_langs, moods, all_tags) | |
# Применение фильтров | |
filtered_df = apply_filters( | |
locale, | |
df=df, | |
search_query=selected_filters['search_query'], | |
absurdity_range=selected_filters['absurdity_range'], | |
selected_mood=selected_filters['selected_mood'], | |
selected_tags=selected_filters['selected_tags'] | |
) | |
sorted_df = apply_sort(locale, filtered_df, selected_filters['sort_option']) | |
# Основной контент | |
render_main_content(locale, database, localS, sorted_df) |