VeuReu commited on
Commit
1f5fcba
·
verified ·
1 Parent(s): 3b0aab5

Upload 7 files

Browse files
Files changed (1) hide show
  1. 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 retorna una llista de
347
- diccionaris amb claus com a mínim: sha1sum i video_name.
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
- # Detectar si existeix la columna video_name
359
- cols = [r[1] for r in cur.execute("PRAGMA table_info(audiodescriptions)")]
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.