Spaces:
Build error
Build error
| import streamlit as st | |
| from datetime import datetime | |
| 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(locale, df, search_query, absurdity_range, selected_mood, selected_tags): | |
| """Применение фильтров и сортировки""" | |
| filtered_df = df[ | |
| (df['absurdity'] >= absurdity_range[0]) & | |
| (df['absurdity'] <= absurdity_range[1]) | |
| ] | |
| if selected_mood != locale['filter_all']: | |
| 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] | |
| return filtered_df | |
| def apply_sort(locale, df, sort_option): | |
| # Сортировка | |
| sort_columns = { | |
| locale['filter_sort'][0]: ("name", True), | |
| locale['filter_sort'][1]: ("name", False), | |
| locale['filter_sort'][2]: ("absurdity", True), | |
| locale['filter_sort'][3]: ("absurdity", False), | |
| locale['filter_sort'][4]: ("random", None) | |
| } | |
| col, asc = sort_columns[sort_option] | |
| if col == "random": | |
| return df.sample(frac=1, random_state=int(datetime.now().timestamp())) | |
| else: | |
| return df.sort_values(col, ascending=asc) |