Upload 7 files
Browse files- databases.py +41 -0
- page_modules/analyze_audiodescriptions.py +8 -16
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 |
-
|
| 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
|
| 156 |
-
|
| 157 |
-
accessible_rows = get_accessible_videos_with_sha1(session_id)
|
| 158 |
|
| 159 |
-
# DEBUG: llistar parelles <sha1sum, video_name> extretes de
|
| 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 |
-
#
|
| 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
|
| 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
|