VeuReu commited on
Commit
d657d41
·
verified ·
1 Parent(s): d287707

Upload 7 files

Browse files
databases.py CHANGED
@@ -340,6 +340,47 @@ def get_audiodescription(sha1sum: str, version: str) -> Optional[sqlite3.Row]:
340
  return None
341
 
342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  def get_audiodescription_history(sha1sum: str, version: str) -> list[sqlite3.Row]:
344
  """Retorna només la darrera fila d'audiodescriptions per sha1sum+version.
345
 
 
340
  return None
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.
386
 
page_modules/analyze_audiodescriptions.py CHANGED
@@ -7,6 +7,7 @@ import io
7
  from pathlib import Path
8
  from typing import Dict, Optional
9
  import hashlib
 
10
 
11
  import streamlit as st
12
  import yaml
@@ -14,7 +15,7 @@ import yaml
14
  from utils import save_bytes
15
  from persistent_data_gate import ensure_media_for_video
16
  from databases import (
17
- get_accessible_videos_with_sha1,
18
  insert_demo_feedback_row,
19
  get_audiodescription,
20
  get_audiodescription_history,
@@ -152,11 +153,10 @@ def load_eval_values(vid_dir: Path, version: str, eval_content: Optional[str] =
152
  def render_analyze_audiodescriptions_page(api, permissions: Dict[str, bool]) -> None:
153
  st.header("Analitzar audiodescripcions")
154
 
155
- # Llista de vídeos accessibles des de demo/temp/videos.db
156
- session_id = st.session_state.get("session_id")
157
- accessible_rows = get_accessible_videos_with_sha1(session_id)
158
 
159
- # DEBUG: llistar parelles <sha1sum, video_name> extretes de videos.db
160
  try:
161
  debug_pairs = [(row.get("sha1sum"), row.get("video_name")) for row in accessible_rows]
162
  print(f"[DEBUG] accessible_rows (sha1sum, video_name) des de videos.db: {debug_pairs}")
@@ -167,18 +167,10 @@ def render_analyze_audiodescriptions_page(api, permissions: Dict[str, bool]) ->
167
  base_dir = Path(__file__).resolve().parent.parent
168
  base_media_dir = base_dir / "temp" / "media"
169
 
170
- # Filtrar vídeos que tinguin carpeta de media disponible
171
- filtered_rows = []
172
- for row in accessible_rows:
173
- sha1 = row.get("sha1sum")
174
- if not sha1:
175
- continue
176
- media_dir = base_media_dir / sha1
177
- if media_dir.exists() and media_dir.is_dir():
178
- filtered_rows.append(row)
179
-
180
  if not filtered_rows:
181
- st.info("No hi ha cap vídeo amb media disponible a temp/media per analitzar.")
182
  st.stop()
183
 
184
  # DEBUG: llistar subcarpetes actuals sota demo/temp/media
 
7
  from pathlib import Path
8
  from typing import Dict, Optional
9
  import hashlib
10
+ import runpy
11
 
12
  import streamlit as st
13
  import yaml
 
15
  from utils import save_bytes
16
  from persistent_data_gate import ensure_media_for_video
17
  from databases import (
18
+ get_videos_from_audiodescriptions,
19
  insert_demo_feedback_row,
20
  get_audiodescription,
21
  get_audiodescription_history,
 
153
  def render_analyze_audiodescriptions_page(api, permissions: Dict[str, bool]) -> None:
154
  st.header("Analitzar audiodescripcions")
155
 
156
+ # Llista de vídeos disponibles segons demo/temp/db/audiodescriptions.db
157
+ accessible_rows = get_videos_from_audiodescriptions()
 
158
 
159
+ # DEBUG: llistar parelles <sha1sum, video_name> extretes de audiodescriptions.db
160
  try:
161
  debug_pairs = [(row.get("sha1sum"), row.get("video_name")) for row in accessible_rows]
162
  print(f"[DEBUG] accessible_rows (sha1sum, video_name) des de videos.db: {debug_pairs}")
 
167
  base_dir = Path(__file__).resolve().parent.parent
168
  base_media_dir = base_dir / "temp" / "media"
169
 
170
+ # Ja no filtrem per media: mostrem tots els vídeos presents a audiodescriptions.db
171
+ filtered_rows = accessible_rows
 
 
 
 
 
 
 
 
172
  if not filtered_rows:
173
+ st.info("No hi ha cap vídeo disponible per analitzar a audiodescriptions.db.")
174
  st.stop()
175
 
176
  # DEBUG: llistar subcarpetes actuals sota demo/temp/media