Spaces:
Sleeping
Sleeping
File size: 1,957 Bytes
995a61e cc146e8 d7c3acb a8a7773 6e00079 a8a7773 995a61e cc146e8 995a61e cc146e8 995a61e cc146e8 a8a7773 cc146e8 a8a7773 cc146e8 6e00079 995a61e 6e00079 7aaf509 6e00079 995a61e 6e00079 cc146e8 995a61e 6e00079 a8a7773 6e00079 7aaf509 d7c3acb 6e00079 995a61e d7c3acb 6e00079 cc146e8 |
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 |
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) |