Film-search / src /streamlit_app.py
Skyer-cpu's picture
Update src/streamlit_app.py
87098ef verified
Raw
History Blame Contribute Delete
3.18 kB
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()