- Tras «Aplicar» en una carpeta grande el inventario se ponía al día con la base tomada más de diez minutos y
«Buscar clips» se rendía con «database is locked». Ahora las preguntas al disco van antes y en paralelo y
lo de dentro de cada carpeta se busca por índice: 1,3 s para 2.493 movimientos, mismas filas de archivos
que antes y 183 carpetas que antes se perdían. La lectura de clips reintenta si la base está ocupada.
- Las fotos de «Alta» y «Baja» chocaban al juntarse en una carpeta: las subcarpetas con sentido se
conservan, el plan avisa antes de dos archivos iguales en una fila, y un número entre dos palabras
(«Fiesta 6 Años») ya no se quita.
- Los fallos de «Aplicar» se agrupan por motivo y dicen qué hacer; el banco de material se explica en llano.
- Fechas raras (el reloj de una cámara), escaneo profundo, buscar en todos los clientes, traer lo que el
cliente tiene en otros discos, el banco por temas o por fecha, y «Calcular de nuevo» más rápido.
- Mover reintenta un momento si el archivo está abierto un instante (lectura de clips, antivirus).
- .github/workflows/publicar.yml para compilar y publicar desde un PC del estudio; las pruebas devuelven
error si algo falla.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Al terminar algo (elegir el tipo de trabajo, apartar stock, juntar repetidos, la bandeja, convertir) la ficha
desaparecía sin decir nada y no se sabía por dónde se iba. Ahora cada paso hecho se queda con su ✓ y «Hecho hoy
a las 07:41: …», arriba se cuentan los hechos, y lo que acaba de pasar a hecho se ilumina. Aplicar el plan
apunta qué pasos entraron; elegir el tipo y nombrar una carpeta quedan en la bitácora. «Basura y proxies» deja
de pedirse cuando lo que queda es lo de «No tocar» o lo que va sin marcar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- El botón «Calcular» (y «Reanudar» la cola, y «Volver a pintar») quedaba deshabilitado para siempre tras
la primera vez: al cambiar de carpeta «Qué va a pasar» no calculaba nada.
- «material» suelto ya no ignora una carpeta; «No tocar» es un banco de material: los temas se quedan y,
dentro, las grabaciones van por fecha y cámara, todo sin marcar.
- «Hacer de una vez» y la pasada de la noche ya no mueven basura ni proxies sin marcar; un proxy sin su
original va sin marcar.
- «Qué pesa» entra nivel a nivel con el detalle de cada carpeta; repetidos, plan e Inicio mucho más rápidos;
aviso cuando el tipo de trabajo de la carpeta no es el del cliente.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Las grabaciones van siempre a su día de rodaje y dentro a una carpeta por fuente; el DJI Mic, la Tascam y
las Zoom se reconocen por su nombre y van a DJI_MIC, TASCAM y ZOOM en vez de caer juntas en AUDIO. El plan
repasa lo ya ordenado sin carpeta de día o con la grabadora en AUDIO. «Mapa» pasa a «Organizar carpetas»:
el árbol salía en fila por una regla CSS del ejemplo de tipo de trabajo; ahora va en vertical a toda la
altura y a la derecha, fijos, «Qué va en esta carpeta» y «¿Dónde va a parar este archivo?».
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Auditoría de «mover y reorganizar». El motor movía bien, pero el plan en memoria solo se olvidaba al aplicar
desde «Qué va a pasar»: tras «Hacer las N de una vez», apartar stock, juntar repetidos, reemplazar o deshacer,
Inicio seguía ofreciendo lo ya hecho («5 cambios · Ver y aplicar», «Plan listo: 7 de 9») o, tras deshacer,
daba por hecho lo que volvía a estar en desorden. Ahora cualquier movimiento olvida el plan y lo vuelve a
pensar en segundo plano; un plan sin nada marcado es «hecho», cada ficha dice cuándo se hizo y cuántos
movimientos, y el diagnóstico no cuenta como basura lo que ya está en _Para borrar.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Las tres propuestas que faltaban del lienzo:
- La cola respeta un horario (espera entre clip y clip) y espera si Resolve, Premiere o After Effects
están usando la tarjeta (nvidia-smi pmon). La pasada automática puede meter en cola lo de más de N
meses hasta un tope de GB. Al acabar, un aviso de Windows con la identidad del programa.
- Cada tanda deja un resumen en la bitácora (op tanda): clips, pesos, tiempo, nota, fallos, por
carpeta. Sale en Convertir con «Exportar CSV» y «Abrir la carpeta», y en Historial cuenta clips.
- Barra de marcar con criterio (tamaño, cámara, mes, antigüedad) y buscador.
Pruebas: probar 19, prueba_orden 33, prueba_funcional 32 (nueva: resumen de la tanda), prueba_ventana 18.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Munka eligió tres de seis propuestas dibujadas en un lienzo (quedan el horario nocturno, el resumen
al acabar y marcar con criterio):
- La lista va por carpetas (la ruta una sola vez), el clip que se convierte lleva su barra y lo que le
queda, «primero este» adelanta uno, y los excluidos salen en grupos con su porqué. Antes y después en
una barra. La cola mide su ritmo y dice cuánto falta y a qué hora acaba (eta en /api/optimizar/cola).
- «Comparar»: el mismo cuadro del original y del convertido en tres instantes, con lupa, y «Medir la
calidad» (VMAF) que se guarda en el trabajo; braw.py cuadro y braw.py calidad revelan el BRAW con la
misma curva. Medido: 97,8 en 14 s con un BRAW de 16,5 GB.
- Un solo botón grande según el momento: buscar, convertir (con «reemplazar solo cuando estén
verificados», optimizar.auto_reemplazar), la tanda con Detener, reanudar, o reemplazar lo verificado.
Pruebas: probar 19, prueba_funcional 31 (nueva: comparar), prueba_ventana 18.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Munka, con el plan de Diana Méndez delante: «se lee mucho pero se entiende poco», «lo de ordenar
por año y por mes, ¿me toca seleccionar uno a uno o lo hace todo?», y quería una barra para saber
por dónde va y si hace falta algo.
- Una frase arriba y un solo botón, «Aplicar los N cambios»: un clic lo hace todo, en orden.
- Tres fichas, una por paso, con cambios, peso y cuántos quedan sin marcar; se pulsa una y se ve.
- Un ejemplo animado: la fila más representativa del paso como dos ramas de carpetas, «Ahora» y
«Después», y lo que se mueve vuela de una a otra; debajo, la frase y el porqué. «Otro ejemplo»
recorre las filas.
- La lista, corta: de dónde → a dónde y la cuenta; el motivo solo con «ver por qué». Lo que no va
solo queda aparte y contado (cosméticos «01 - Celular» → «01- Celular», y dudosos), con «marcar
los cosméticos».
- Al aplicar, el servidor cuenta archivo a archivo (/api/aplicando) y la interfaz lo sondea: barra,
qué se mueve ahora, y al acabar qué se hizo, qué falló y qué queda sin hacer.
- Los avisos van plegados bajo «N cosas que conviene mirar antes de aplicar».
Pruebas: probar 19, prueba_orden 33, prueba_funcional 30 (comprueba que el avance acaba en tantas
de tantas), prueba_ventana 18.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Munka no podía reconvertir archivos que antes sí. Auditado sobre la carpeta de Andrea Galeano:
- Los BRAW nunca habían salido: 87 clips (496 GB), tres tandas por el guion de Resolve y ni un
clip convertido. Ahora los lee el decodificador de Blackmagic que instala Resolve (braw.py,
en un proceso aparte), sin abrir Resolve, y ffmpeg los codifica como cualquier otro clip.
Probado con clips del NAS: 15,6 GB → 394 MB con sus 7.004 cuadros, VMAF 96,0 contra el BRAW
revelado sin pérdida. Las conversiones de BRAW que fallaron por Resolve pasan solas al lector.
- Lo que «antes podía» eran reconversiones de lo ya convertido: ahorraban un 5 % con pérdida.
Siguen sin ofrecerse, y lo que ya viene comprimido de cámara solo se ofrece si compensa.
- La tarjeta codifica con «uhq»: entre un 19 y un 55 % menos de peso con la misma calidad
medida, siempre H.265 de 10 bits.
- Una conversión que no aligera (más del 80 % del clip, o reconversión de una conversión) no
reemplaza al original: queda «no compensa» y lo que salió va a _Para borrar\descartados.
De paso: los MP4 guardan las etiquetas de la cámara; un intento que no pasó la verificación se
puede reintentar; un H.264 de más de 4.096 px de lado va por CPU; el motivo de un fallo se lee
entero; el guion de Resolve llega con tildes y borra su ficha.
Pruebas: prueba_orden.py 33 (una con un BRAW de verdad), probar.py 19, prueba_funcional.py 30,
prueba_ventana.py 18 desde el código y 17 con el paquete.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Las cuatro funciones que eligió Munka tras la 3.2.0:
- Nueva pieza: crea «NN- Título» en su mes con el número que toca y sus subcarpetas; si la
pieza ya existe, lo dice. Se deshace mientras siga vacía.
- Bandeja de entrada: lo que se deje en _Entrada se reparte por mes, día de rodaje y cámara.
«Traer material» copia una tarjeta comprobando cada archivo (se vuelve a leer y se compara
la huella), conserva la fecha del rodaje y no toca el origen.
- Versiones del mismo clip: dos clips de cámara que se llaman igual, duran lo mismo y tienen
la misma forma son el mismo clip; se queda el de más imagen y el otro va a Duplicados.
- Orden automático, apagado de fábrica: una tarea del Programador de tareas de Windows lanza
«automatico», que lee todas las carpetas y hace solo lo seguro. No toca una carpeta que no
se pueda leer entera ni una cuyo plan mueva más de 3.000 archivos, y si el programa ya está
abierto se lo pide a él. Desinstalar quita la tarea.
De paso: una ruta que empieza por guion bajo ya no pierde el guion al ir a la papelera.
Pruebas: prueba_orden.py 24, probar.py 19, prueba_funcional.py 29, prueba_ventana.py 18
desde el código y 17 con el paquete.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Medido sobre una carpeta de cliente real (8.207 archivos, 920 GB) antes de tocar nada:
- «Por nombrar» solo pregunta por lo que el plan llega a ver y no sabe resolver; ya no por las
carpetas de la app ni por lo de dentro de la papelera. Lo aprendido vale por el nombre entero.
- Una carpeta es una grabación por lo que tiene dentro: una pieza montada no se desarma, y lo
que no es rodaje no acaba en 00_Grabacion\OTROS. Se conserva el nombre de cada sesión.
- Una carpeta que guarda meses o años dentro se abre y cada cosa va a su mes; si la pieza ya
existe allí, se junta con ella.
- Repaso de lo ya ordenado: lo que está en un mes que no es el de su rodaje vuelve al suyo.
- El año de un clip de Blackmagic sale de los demás clips de su tarjeta y día; un rodaje que
pasa de medianoche cuenta como uno.
- Un clip convertido sigue siendo de su cámara, y el convertidor no repite lo que ya convirtió.
- «Exportados» junto a «_Exportados» y «_Papelera» junto a «_Para borrar» se juntan.
- «Hacer de una vez» solo mueve lo marcado; lo dudoso que queda no cuenta como pendiente.
- El inventario lleva la versión de las reglas: uno anterior pide escanear otra vez.
Pruebas: prueba_orden.py (nueva, 19 casos), probar.py 19, prueba_funcional.py 26,
prueba_ventana.py 18 desde el código y 17 con el paquete.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- ventana.py: la ventana es un marco Win32 propio con WebView2 dentro,
manejado por COM con ctypes. Fuera pywebview, pythonnet y clr_loader y
sus binarios sin firmar. Identidad en la barra de tareas, una sola copia
abierta por carpeta de datos, selector de carpetas de Windows, rutas
completas al soltar, avance en la barra de tareas, memoria de posición,
aviso al cerrar con trabajo en marcha, y nada de navegador (menú, F5,
zoom, permisos). Si el motor se cae, se monta de nuevo solo.
- arranque.py y empaquetar.py: el paquete ya no lleva binario propio.
OrganizadorLabstream.exe es pythonw.exe (firmado por la PSF) con otro
nombre y arranca el programa desde sitecustomize; abre con Smart App
Control encendido. Fuera PyInstaller. Al empaquetar se comprueba la firma
de cada binario con Windows y se arranca el motor del paquete.
- instalar.py: accesos directos en Inicio y Escritorio con la identidad de
la ventana, y la línea en Configuración › Aplicaciones. Se ofrece una vez,
la primera que se abre un paquete en un equipo.
- Dos copias sobre los mismos datos ya no se pisan: la segunda trae la
ventana al frente (antes abría el navegador y daba por huérfanas las
conversiones en marcha de la primera). Si el puerto 8765 está ocupado
por otro programa, se toma uno libre.
- Por consola, el paquete ya no consulta si hay versión nueva con las
actualizaciones automáticas apagadas.
- Pruebas: probar.py 17, prueba_funcional.py 26 de 26 y prueba_ventana.py
(nueva), que abre la ventana de verdad: 17 comprobaciones desde el código
y 8 arrancando el paquete por su .exe.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sale a la red solo lo que se pide: la tipografía viene con el programa
(static/manrope.woff2) y el comprobador de versiones tiene interruptor en
Ajustes. Nueva prueba funcional (prueba_funcional.py) que levanta una copia
sobre un cliente de ensayo y ejercita las 26 funciones por su API, con una
conversión real: 26 de 26.
Fallos que sacó y quedan arreglados:
- Un renombrado solo de mayúsculas («10- octubre» → «10- Octubre») se
descartaba en Plan.agregar y en mover; deshacer decía «sitio ocupado».
- Las carpetas que crea el plan no entraban en el inventario hasta el
siguiente escaneo (_recontar_carpetas las da de alta y recuenta).
- Una fusión de carpetas cortaba en el primer archivo que tropezaba.
- «Viejo» era distinto en convertidor, stock y respaldo: ahora es_viejo.
- /api/actualizacion informaba versión vacía hasta la primera consulta.
- Filas de sueltos por carpeta de origen; mes del stock el más repetido;
fuera tres rutas sin uso.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>