PhotopilotPhotopilot
SMB Sync

SMB Sync: de unidad de red a Photopilot

Un pequeño programa que supervisa un SMB/Samba-share, como una máquina StyleShoots, y sube automáticamente carpetas de fotos como shoots y packshots.

  • Shoots

    Las carpetas con el nombre S-<setnummer> (p. ej., S-1234) se suben como shoot para ese set.

  • Packshots

    Cualquier otra carpeta se interpreta como un artículo: un EAN/código de barras escaneado o un número de artículo público. Las fotos con back, side o label en el nombre de archivo se vinculan a esa vista — o mediante tu propio patrón, consulta más abajo.

  • Modo flat

    Para StyleShoots que colocan todos los archivos sueltos en la carpeta: define FLAT_PACKSHOT=true. Las fotos sueltas se agrupan por identificador de artículo (la parte anterior al primer guion bajo) y se sincronizan como packshots.

  • Modo flat

    Para StyleShoots que colocan todos los archivos sueltos en la carpeta: define FLAT_PACKSHOT=true. Las fotos sueltas se agrupan por identificador de artículo (la parte anterior al primer guion bajo) y se sincronizan como packshots.

  • Seguro

    Una carpeta solo se sincroniza cuando no ha habido cambios durante 10 minutos. Los artículos desconocidos se omiten y se vuelven a intentar más tarde. En los packshots, solo eliminamos los archivos que se han subido realmente — la carpeta y el resto permanecen.

Instalación en Windows Server

  1. Descargar

    Descarga windows-amd64.exe arriba, cámbiale el nombre a smbsync.exe y colócalo en una carpeta propia, por ejemplo C:\Photopilot\smbsync\.

  2. Crea un archivo .env en la misma carpeta
    CUSTOMER=Bedrijfsnaam
    SMB_IP=192.168.1.10
    SMB_USERNAME=styleshootssharing
    SMB_PASSWORD=wachtwoord
    SMB_MOUNT=StyleshootsDrive
    START_DIR=sync
    API_TOKEN=jouw-api-token
    API_URL=https://app.photopilot.ai/api
    LOG_LEVEL=info
    TZ=Europe/Amsterdam
    
    # Optioneel: StyleShoots-modus waarbij alle bestanden los in START_DIR staan
    # (geen submap per artikel). Losse foto's worden gegroepeerd op artikel-
    # identifier (het deel voor de eerste underscore) en als packshots gesynct.
    FLAT_PACKSHOT=false
  3. Apúntalo a tu share Samba/SMB

    SMB_IP es la dirección IP del equipo con la share (por ejemplo, StyleShoots o tu NAS). SMB_MOUNT es el nombre de la share y START_DIR la carpeta dentro de la share que se sincroniza. La cuenta necesita permisos de lectura y escritura: los archivos subidos se eliminan de la share después de la subida.

  4. Iniciar automáticamente con Windows

    Abre el Programador de tareas (Task Scheduler), crea una tarea que inicie smbsync.exe al arrancar el ordenador y configura 'Iniciar en' con la carpeta que contiene el archivo .env. Selecciona 'Ejecutar tanto si el usuario inició sesión como si no'.

  5. Comprobar

    Crea una carpeta de prueba en el share con un código EAN como nombre, añade una foto y espera ±10 minutos. La foto aparecerá en el artículo en Photopilot y desaparecerá del share. La carpeta seguirá ahí, con un status.json dentro como prueba de que se ha procesado — las fotos que no hayamos subido también se quedarán. Los errores nos llegan automáticamente a través de Sentry.

Reconocer vista frontal, trasera y lateral

De forma predeterminada, SMB Sync busca las palabras back, side y label en el nombre de archivo; todas las demás fotos se convierten en un packshot propio con esa foto como vista frontal. No todos los estudios indican la vista en el nombre. StyleShoots, por ejemplo, numera por artículo: <EAN>_PNG_1 es la vista frontal, _PNG_2 la vista trasera y _PNG_3 la vista lateral opcional. En ese caso, define tú el patrón en tu .env:

FRONT_IDENTIFIER=_PNG_1$
BACK_IDENTIFIER=_PNG_2$
SIDE_IDENTIFIER=_PNG_3$
  • FRONT_IDENTIFIER Vista frontal Predeterminado: la primera foto que no pertenece a ninguna otra vista.
  • BACK_IDENTIFIER Vista trasera Predeterminado: back en el nombre de archivo.
  • SIDE_IDENTIFIER Vista lateral Predeterminado: side en el nombre de archivo.
  • LABEL_IDENTIFIER Etiqueta (instrucciones de lavado) Predeterminado: label en el nombre de archivo.

Con esta configuración, 8712345678906_PNG_1, _PNG_2 y _PNG_3 entran juntos como un único packshot del artículo 8712345678906 — no como tres fotos separadas. ¿Falta la vista lateral? Entonces esa vista se queda vacía.

Cada patrón no distingue entre mayúsculas y minúsculas y se comprueba contra el nombre del archivo sin extensión, así que PNG_1 funciona igual de bien que _PNG_1$ (el signo $ significa: al final del nombre). En cuanto configures FRONT_IDENTIFIER, solo se subirán las fotos que coincidan con uno de estos patrones — los demás archivos de la carpeta no se tocarán. Si omites una variable, seguirá aplicándose la regla predeterminada.

¿Y la foto de la etiqueta?

La foto de la etiqueta es la foto adicional de la etiqueta de lavado o composición. LABEL_IDENTIFIER funciona exactamente igual que las otras tres, con una cosa que debes recordar: las variables que no configures mantienen su valor predeterminado. En el ejemplo anterior, LABEL_IDENTIFIER sigue teniendo la palabra label. Tres situaciones:

  • Tu foto de label también está numerada ¿_PNG_4 es la foto de la etiqueta? Añade LABEL_IDENTIFIER=_PNG_4$. Entonces <EAN>_PNG_1 hasta <EAN>_PNG_4 entran juntos como un único packshot: vista frontal, vista trasera, vista lateral y label.
  • Tu foto de label sí tiene nombre ¿Se llama, por ejemplo, 8712345678906_label.png? Entonces deja LABEL_IDENTIFIER sin configurar: la regla predeterminada para la palabra label seguirá activa, aunque configures las otras tres con números. Así puedes usar ambos métodos a la vez.
  • No fotografías labels Entonces no tienes que hacer nada: las fotos que no encajan con ningún patrón se omiten. Configura LABEL_IDENTIFIER=off solo si la palabra label puede aparecer por error en un nombre de archivo (por ejemplo, un artículo llamado 'Label Tee') y no quieres vincular esa foto como foto de etiqueta.

off (o none) también funciona para BACK_IDENTIFIER y SIDE_IDENTIFIER, y es la única forma de desactivar una palabra predeterminada. En FRONT_IDENTIFIER, off simplemente significa volver al valor predeterminado: la primera foto que no pertenece a ninguna otra vista.