PhotopilotPhotopilot
SMB Sync

SMB Sync : du lecteur réseau vers Photopilot

Un petit programme qui surveille un partage SMB/Samba (comme une machine StyleShoots) et téléverse automatiquement les dossiers photo comme shoots et packshots.

  • Shoots

    Les dossiers nommés S-<numéro de set> (p. ex. S-1234) sont téléversés comme shoot pour ce set.

  • Packshots

    Tout autre dossier est considéré comme un article : un EAN/barcode scanné ou un numéro d'article public. Les photos avec back, side ou label dans le nom de fichier sont associées à cette vue — ou via votre propre motif, voir ci-dessous.

  • Mode plat

    Pour les configurations StyleShoots qui déposent tous les fichiers en vrac dans le dossier : définissez FLAT_PACKSHOT=true. Les photos en vrac sont regroupées par identifiant d'article (la partie avant le premier trait de soulignement) et synchronisées en tant que packshots.

  • Mode plat

    Pour les configurations StyleShoots qui déposent tous les fichiers en vrac dans le dossier : définissez FLAT_PACKSHOT=true. Les photos en vrac sont regroupées par identifiant d'article (la partie avant le premier trait de soulignement) et synchronisées en tant que packshots.

  • Sûr

    Un dossier n'est synchronisé que s'il n'y a eu aucun changement pendant 10 minutes. Les articles inconnus sont ignorés et réessayés plus tard. Pour les packshots, nous supprimons uniquement les fichiers qui ont été effectivement téléchargés — le dossier et le reste restent en place.

Installation sur Windows Server

  1. Télécharger et décompresser

    Téléchargez windows-amd64.exe.gz ci-dessus, décompressez-le et placez smbsync.exe dans son propre dossier, par exemple C:\Photopilot\smbsync\.

  2. Créez un fichier .env dans le même dossier
    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. Pointez-le vers votre partage Samba/SMB

    SMB_IP est l'adresse IP de la machine avec le partage (par exemple, le StyleShoots ou votre NAS). SMB_MOUNT est le nom du partage lui-même et START_DIR le dossier à l'intérieur du partage qui est synchronisé. Le compte a besoin de droits de lecture et d'écriture : les fichiers téléchargés sont supprimés du partage après le téléchargement.

  4. Démarrer automatiquement avec Windows

    Ouvrez le Planificateur de tâches (Task Scheduler), créez une tâche qui démarre smbsync.exe au démarrage de l'ordinateur et définissez « Commencer dans » sur le dossier contenant le .env. Choisissez « Exécuter même si l'utilisateur n'est pas connecté ».

  5. Vérifier

    Créez un dossier de test avec un code EAN comme nom sur le partage, mettez-y une photo et attendez ±10 minutes. La photo apparaît avec l'article dans Photopilot et disparaît du partage. Le dossier lui-même reste en place, avec un status.json comme preuve qu'il a été traité — les photos que nous n'avons pas téléchargées restent également en place. Les erreurs nous parviennent automatiquement via Sentry.

Reconnaître l'avant, l'arrière et le côté

Par défaut, SMB Sync recherche les mots back, side et label dans le nom de fichier ; toutes les autres photos deviennent un packshot avec cette photo comme avant. Toutes les studios ne nomment pas la vue dans le nom. StyleShoots numérote par exemple par article : <EAN>_PNG_1 est l'avant, _PNG_2 l'arrière et _PNG_3 le côté optionnel. Spécifiez alors vous-même le motif dans votre .env :

FRONT_IDENTIFIER=_PNG_1$
BACK_IDENTIFIER=_PNG_2$
SIDE_IDENTIFIER=_PNG_3$
  • FRONT_IDENTIFIER Avant Par défaut : la première photo qui ne correspond à aucune autre vue.
  • BACK_IDENTIFIER Dos Par défaut : back dans le nom de fichier.
  • SIDE_IDENTIFIER Côté Par défaut : side dans le nom de fichier.
  • LABEL_IDENTIFIER Étiquette (instructions de lavage) Par défaut : label dans le nom de fichier.

Avec ce paramètre, 8712345678906_PNG_1, _PNG_2 et _PNG_3 sont combinés en un seul packshot pour l'article 8712345678906 — donc pas comme trois photos distinctes. Le côté manque-t-il ? Cette vue reste alors simplement vide.

Chaque motif est insensible à la casse et est testé sur le nom de fichier sans extension, donc PNG_1 fonctionne aussi bien que _PNG_1$ (le signe $ signifie : à la fin du nom). Dès que vous configurez FRONT_IDENTIFIER, seules les photos correspondant à l'un de ces motifs sont téléchargées — les autres fichiers du dossier restent intacts. Si vous omettez une variable, la règle par défaut s'applique.

Et la photo d'étiquette ?

La photo d'étiquette est la photo supplémentaire de l'étiquette de lavage ou de composition. LABEL_IDENTIFIER fonctionne exactement comme les trois autres, avec une chose à retenir : les variables que vous ne définissez pas conservent leur valeur par défaut. Dans l'exemple ci-dessus, LABEL_IDENTIFIER est donc toujours sur le mot label. Trois situations :

  • Votre photo d'étiquette est également numérotée Est-ce que _PNG_4 est la photo d'étiquette ? Ajoutez LABEL_IDENTIFIER=_PNG_4$. <EAN>_PNG_1 à _PNG_4 sont alors combinés en un seul packshot : avant, arrière, côté et étiquette.
  • Votre photo d'étiquette a bien un nom S'appelle-t-il par exemple 8712345678906_label.png ? Dans ce cas, laissez simplement LABEL_IDENTIFIER de côté : la règle par défaut sur le mot label reste active, même si vous mettez les trois autres sur des numéros. Vous pouvez ainsi utiliser les deux méthodes de manière interchangeable.
  • Vous ne photographiez pas d'étiquettes Vous n'avez rien à faire : les photos qui ne correspondent à aucun motif sont ignorées. Réglez LABEL_IDENTIFIER=off uniquement si le mot label peut accidentellement apparaître dans un nom de fichier (par exemple, un article appelé 'Label Tee') et que vous ne souhaitez pas associer cette photo comme photo d'étiquette.

off (ou none) fonctionne également pour BACK_IDENTIFIER et SIDE_IDENTIFIER et est le seul moyen de désactiver un mot par défaut. Pour FRONT_IDENTIFIER, off signifie simplement revenir à la valeur par défaut : la première photo qui ne correspond à aucune autre vue.