Upload api.py
Browse files
api.py
CHANGED
|
@@ -182,6 +182,26 @@ def process_video_job(job_id: str):
|
|
| 182 |
for char in characters:
|
| 183 |
print(f"[{job_id}] - {char['name']}: {char['num_faces']} caras")
|
| 184 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 185 |
# Guardar resultados primero y luego marcar como completado (evita carreras)
|
| 186 |
job["results"] = {
|
| 187 |
"characters": characters,
|
|
|
|
| 182 |
for char in characters:
|
| 183 |
print(f"[{job_id}] - {char['name']}: {char['num_faces']} caras")
|
| 184 |
|
| 185 |
+
# Enriquecer info de personajes con listado real de imágenes disponibles
|
| 186 |
+
try:
|
| 187 |
+
import glob, os
|
| 188 |
+
for ch in characters:
|
| 189 |
+
folder = ch.get("folder")
|
| 190 |
+
face_files = []
|
| 191 |
+
if folder and os.path.isdir(folder):
|
| 192 |
+
# soportar patrones face_*.jpg y representative.jpg
|
| 193 |
+
face_files = sorted([os.path.basename(p) for p in glob.glob(os.path.join(folder, "face_*.jpg"))])
|
| 194 |
+
# Garantizar que representative.jpg está accesible aunque no haya faces
|
| 195 |
+
rep_path = os.path.join(folder, "representative.jpg")
|
| 196 |
+
if os.path.exists(rep_path) and "representative.jpg" not in face_files:
|
| 197 |
+
face_files.insert(0, "representative.jpg")
|
| 198 |
+
ch["face_files"] = face_files
|
| 199 |
+
# Ajustar num_faces si hay discrepancia
|
| 200 |
+
if face_files:
|
| 201 |
+
ch["num_faces"] = len(face_files)
|
| 202 |
+
except Exception as _e:
|
| 203 |
+
print(f"[{job_id}] WARN - No se pudo enumerar face_files: {_e}")
|
| 204 |
+
|
| 205 |
# Guardar resultados primero y luego marcar como completado (evita carreras)
|
| 206 |
job["results"] = {
|
| 207 |
"characters": characters,
|