Spaces:
Build error
Build error
| import streamlit as st | |
| def get_search_mask(df, search_query): | |
| return ( | |
| df["world"].str.contains(search_query, case=False, na=False) | | |
| df["name"].str.contains(search_query, case=False, na=False) | | |
| df["short_story"].str.contains(search_query, case=False, na=False) | | |
| df["description"].str.contains(search_query, case=False, na=False) | | |
| df["style"].str.contains(search_query, case=False, na=False) | | |
| df["first_message"].str.contains(search_query, case=False, na=False) | |
| ) | |
| def apply_filters(df, search_query, absurdity_range, selected_mood, selected_tags, sort_option): | |
| """Применение фильтров и сортировки""" | |
| filtered_df = df[ | |
| (df["absurdity"] >= absurdity_range[0]) & | |
| (df["absurdity"] <= absurdity_range[1]) | |
| ] | |
| if selected_mood != "Все": | |
| filtered_df = filtered_df[filtered_df["mood"] == selected_mood] | |
| if selected_tags: | |
| filtered_df = filtered_df[filtered_df["tags"].str.contains("|".join(selected_tags))] | |
| if search_query: | |
| mask = get_search_mask(df, search_query) | |
| filtered_df = filtered_df[mask] | |
| # Сортировка | |
| sort_columns = { | |
| "По имени (А→Я)": ("name", True), | |
| "По имени (Я→А)": ("name", False), | |
| "По абсурдности (↑)": ("absurdity", True), | |
| "По абсурдности (↓)": ("absurdity", False) | |
| } | |
| col, asc = sort_columns[sort_option] | |
| return filtered_df.sort_values(col, ascending=asc) |