Update app.py
Browse files
app.py
CHANGED
|
@@ -1,10 +1,9 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
-
from sentence_transformers import SentenceTransformer
|
| 3 |
import os
|
| 4 |
import time
|
| 5 |
import threading
|
| 6 |
import queue
|
| 7 |
-
import torch
|
| 8 |
import psycopg2
|
| 9 |
import zlib
|
| 10 |
import numpy as np
|
|
@@ -152,18 +151,20 @@ def get_movies_without_embeddings():
|
|
| 152 |
# Получаем список всех фильмов из таблицы Movies с подготовленной строкой
|
| 153 |
cur.execute(f"""
|
| 154 |
SELECT id, data,
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
|
|
|
| 160 |
FROM "{movies_table}"
|
| 161 |
""")
|
| 162 |
all_movies = cur.fetchall()
|
| 163 |
|
| 164 |
# Фильтруем только те фильмы, которых нет в таблице эмбеддингов
|
| 165 |
-
for movie_id, movie_data,
|
| 166 |
if movie_id not in existing_ids:
|
|
|
|
| 167 |
movies_to_process.append((movie_id, movie_data, prepared_string))
|
| 168 |
|
| 169 |
logging.info(f"Найдено {len(movies_to_process)} фильмов для обработки.")
|
|
@@ -286,15 +287,17 @@ def get_movie_data_from_db(conn, movie_ids):
|
|
| 286 |
with conn.cursor() as cur:
|
| 287 |
cur.execute(f"""
|
| 288 |
SELECT id, data,
|
| 289 |
-
|
| 290 |
-
|
| 291 |
-
|
| 292 |
-
|
| 293 |
-
|
|
|
|
| 294 |
FROM "{movies_table}"
|
| 295 |
WHERE id IN %s
|
| 296 |
""", (tuple(movie_ids),))
|
| 297 |
-
for movie_id, movie_data,
|
|
|
|
| 298 |
movie_data_dict[movie_id] = (movie_data, prepared_string)
|
| 299 |
except Exception as e:
|
| 300 |
logging.error(f"Ошибка при получении данных фильмов из БД: {e}")
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
+
from sentence_transformers import SentenceTransformer
|
| 3 |
import os
|
| 4 |
import time
|
| 5 |
import threading
|
| 6 |
import queue
|
|
|
|
| 7 |
import psycopg2
|
| 8 |
import zlib
|
| 9 |
import numpy as np
|
|
|
|
| 151 |
# Получаем список всех фильмов из таблицы Movies с подготовленной строкой
|
| 152 |
cur.execute(f"""
|
| 153 |
SELECT id, data,
|
| 154 |
+
jsonb_build_object(
|
| 155 |
+
'Название', data->>'name',
|
| 156 |
+
'Год', data->>'year',
|
| 157 |
+
'Жанры', (SELECT string_agg(genre->>'name', ', ') FROM jsonb_array_elements(data->'genres') AS genre),
|
| 158 |
+
'Описание', COALESCE(data->>'description', '')
|
| 159 |
+
) AS prepared_json
|
| 160 |
FROM "{movies_table}"
|
| 161 |
""")
|
| 162 |
all_movies = cur.fetchall()
|
| 163 |
|
| 164 |
# Фильтруем только те фильмы, которых нет в таблице эмбеддингов
|
| 165 |
+
for movie_id, movie_data, prepared_json in all_movies:
|
| 166 |
if movie_id not in existing_ids:
|
| 167 |
+
prepared_string = f"Название: {prepared_json['Название']}\nГод: {prepared_json['Год']}\nЖанры: {prepared_json['Жанры']}\nОписание: {prepared_json['Описание']}"
|
| 168 |
movies_to_process.append((movie_id, movie_data, prepared_string))
|
| 169 |
|
| 170 |
logging.info(f"Найдено {len(movies_to_process)} фильмов для обработки.")
|
|
|
|
| 287 |
with conn.cursor() as cur:
|
| 288 |
cur.execute(f"""
|
| 289 |
SELECT id, data,
|
| 290 |
+
jsonb_build_object(
|
| 291 |
+
'Название', data->>'name',
|
| 292 |
+
'Год', data->>'year',
|
| 293 |
+
'Жанры', (SELECT string_agg(genre->>'name', ', ') FROM jsonb_array_elements(data->'genres') AS genre),
|
| 294 |
+
'Описание', COALESCE(data->>'description', '')
|
| 295 |
+
) AS prepared_json
|
| 296 |
FROM "{movies_table}"
|
| 297 |
WHERE id IN %s
|
| 298 |
""", (tuple(movie_ids),))
|
| 299 |
+
for movie_id, movie_data, prepared_json in cur.fetchall():
|
| 300 |
+
prepared_string = f"Название: {prepared_json['Название']}\nГод: {prepared_json['Год']}\nЖанры: {prepared_json['Жанры']}\nОписание: {prepared_json['Описание']}"
|
| 301 |
movie_data_dict[movie_id] = (movie_data, prepared_string)
|
| 302 |
except Exception as e:
|
| 303 |
logging.error(f"Ошибка при получении данных фильмов из БД: {e}")
|