Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from qdrant_client import QdrantClient | |
| from sentence_transformers import SentenceTransformer | |
| from groq import Groq | |
| import os | |
| class MediaSearchApp: | |
| def __init__(self): | |
| # Указываем абсолютный путь к базе данных | |
| base_dir = os.path.dirname(os.path.abspath(__file__)) | |
| qdrant_path = os.path.join(base_dir, "src", "tv", "qdrant_db", "collection") | |
| # Проверка существования базы данных и прав доступа | |
| try: | |
| if not os.path.exists(qdrant_path): | |
| st.error(f"База данных не найдена по пути: {qdrant_path}") | |
| st.info("Убедитесь, что структура папок соответствует: src/tv/qdrant_db/collection") | |
| st.stop() | |
| # Проверка прав доступа | |
| test_file = os.path.join(qdrant_path, "meta.json") | |
| if not os.access(test_file, os.R_OK): | |
| st.error(f"Нет прав доступа к файлу {test_file}") | |
| st.info("Проверьте права доступа к файлам базы данных") | |
| st.stop() | |
| # Инициализация клиента | |
| self.client = QdrantClient( | |
| path=qdrant_path, | |
| prefer_grpc=False, | |
| force_disable_check_same_thread=True | |
| ) | |
| # Проверка существования коллекции | |
| collections = self.client.get_collections() | |
| if not any(col.name == "movies_books_collection" for col in collections.collections): | |
| st.error("Коллекция 'movies_books_collection' не найдена в базе данных") | |
| st.stop() | |
| except Exception as e: | |
| st.error(f"Ошибка при инициализации Qdrant: {str(e)}") | |
| st.stop() | |
| # Модель для эмбеддингов | |
| try: | |
| self.embedding_model = SentenceTransformer("sentence-transformers/all-mpnet-base-v2") | |
| except Exception as e: | |
| st.error(f"Ошибка при загрузке модели: {str(e)}") | |
| st.stop() | |
| # Инициализация Groq | |
| self.groq_api_key = "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" | |
| try: | |
| self.groq_client = Groq(api_key=self.groq_api_key) | |
| # Тестовый запрос | |
| self.groq_client.models.list() | |
| except Exception as e: | |
| st.error(f"Ошибка при инициализации Groq: {str(e)}") | |
| st.warning("Функция генерации описаний будет недоступна") | |
| self.groq_client = None | |
| # ... остальные методы без изменений ... | |
| def main(): | |
| st.set_page_config(page_title="Поиск фильмов и сериалов", layout="wide") | |
| app = MediaSearchApp() | |
| app.search_media() | |
| if __name__ == "__main__": | |
| main() |