Upload 7 files
Browse files- databases.py +36 -29
databases.py
CHANGED
|
@@ -341,45 +341,52 @@ def get_audiodescription(sha1sum: str, version: str) -> Optional[sqlite3.Row]:
|
|
| 341 |
|
| 342 |
|
| 343 |
def get_videos_from_audiodescriptions() -> List[Dict[str, Any]]:
|
| 344 |
-
"""Retorna vídeos disponibles segons audiodescriptions.db.
|
| 345 |
|
| 346 |
-
Llegeix demo/temp/db/audiodescriptions.db i
|
| 347 |
-
|
| 348 |
-
|
| 349 |
-
- Si la taula té columna video_name, es fa DISTINCT(sha1sum, video_name).
|
| 350 |
-
- Si no la té, es fa DISTINCT(sha1sum) i s'utilitza sha1sum com a
|
| 351 |
-
video_name de manera per defecte.
|
| 352 |
"""
|
| 353 |
|
|
|
|
| 354 |
try:
|
| 355 |
with _connect_audiodescriptions_db() as conn:
|
| 356 |
cur = conn.cursor()
|
| 357 |
-
|
| 358 |
-
|
| 359 |
-
|
| 360 |
-
has_video_name = "video_name" in cols
|
| 361 |
-
|
| 362 |
-
if has_video_name:
|
| 363 |
-
cur.execute("SELECT DISTINCT sha1sum, video_name FROM audiodescriptions")
|
| 364 |
-
rows = cur.fetchall()
|
| 365 |
-
result: List[Dict[str, Any]] = []
|
| 366 |
-
for r in rows:
|
| 367 |
-
sha1 = r["sha1sum"]
|
| 368 |
-
vname = r["video_name"] or r["sha1sum"]
|
| 369 |
-
result.append({"sha1sum": sha1, "video_name": vname})
|
| 370 |
-
return result
|
| 371 |
-
else:
|
| 372 |
-
cur.execute("SELECT DISTINCT sha1sum FROM audiodescriptions")
|
| 373 |
-
rows = cur.fetchall()
|
| 374 |
-
result = []
|
| 375 |
-
for r in rows:
|
| 376 |
-
sha1 = r["sha1sum"]
|
| 377 |
-
result.append({"sha1sum": sha1, "video_name": sha1})
|
| 378 |
-
return result
|
| 379 |
except sqlite3.OperationalError:
|
| 380 |
# Taula o BD encara no creada
|
| 381 |
return []
|
| 382 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 383 |
|
| 384 |
def get_audiodescription_history(sha1sum: str, version: str) -> list[sqlite3.Row]:
|
| 385 |
"""Retorna només la darrera fila d'audiodescriptions per sha1sum+version.
|
|
|
|
| 341 |
|
| 342 |
|
| 343 |
def get_videos_from_audiodescriptions() -> List[Dict[str, Any]]:
|
| 344 |
+
"""Retorna vídeos disponibles segons audiodescriptions.db i videos.db.
|
| 345 |
|
| 346 |
+
1) Llegeix demo/temp/db/audiodescriptions.db i obté els DISTINCT sha1sum.
|
| 347 |
+
2) Per a cada sha1sum, mira a demo/temp/db/videos.db quin és el video_name.
|
| 348 |
+
Si no el troba, fa servir el sha1sum com a fallback.
|
|
|
|
|
|
|
|
|
|
| 349 |
"""
|
| 350 |
|
| 351 |
+
sha1_list: List[str] = []
|
| 352 |
try:
|
| 353 |
with _connect_audiodescriptions_db() as conn:
|
| 354 |
cur = conn.cursor()
|
| 355 |
+
cur.execute("SELECT DISTINCT sha1sum FROM audiodescriptions")
|
| 356 |
+
rows = cur.fetchall()
|
| 357 |
+
sha1_list = [str(r["sha1sum"]) for r in rows if r["sha1sum"]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 358 |
except sqlite3.OperationalError:
|
| 359 |
# Taula o BD encara no creada
|
| 360 |
return []
|
| 361 |
|
| 362 |
+
if not sha1_list:
|
| 363 |
+
return []
|
| 364 |
+
|
| 365 |
+
# Map sha1sum -> video_name utilitzant videos.db
|
| 366 |
+
result: List[Dict[str, Any]] = []
|
| 367 |
+
try:
|
| 368 |
+
with _connect_videos_db() as vconn:
|
| 369 |
+
vcur = vconn.cursor()
|
| 370 |
+
for sha1 in sha1_list:
|
| 371 |
+
try:
|
| 372 |
+
row = vcur.execute(
|
| 373 |
+
"SELECT video_name FROM videos WHERE sha1sum = ? LIMIT 1",
|
| 374 |
+
(sha1,),
|
| 375 |
+
).fetchone()
|
| 376 |
+
if row is not None and row["video_name"]:
|
| 377 |
+
vname = str(row["video_name"])
|
| 378 |
+
else:
|
| 379 |
+
vname = sha1
|
| 380 |
+
except sqlite3.OperationalError:
|
| 381 |
+
vname = sha1
|
| 382 |
+
|
| 383 |
+
result.append({"sha1sum": sha1, "video_name": vname})
|
| 384 |
+
except sqlite3.OperationalError:
|
| 385 |
+
# Si videos.db no existeix o té un esquema incompatible, fem servir sha1 com a nom
|
| 386 |
+
result = [{"sha1sum": sha1, "video_name": sha1} for sha1 in sha1_list]
|
| 387 |
+
|
| 388 |
+
return result
|
| 389 |
+
|
| 390 |
|
| 391 |
def get_audiodescription_history(sha1sum: str, version: str) -> list[sqlite3.Row]:
|
| 392 |
"""Retorna només la darrera fila d'audiodescriptions per sha1sum+version.
|