PhotopilotPhotopilot
SMB Sync

SMB Sync: fra netværksdrev til Photopilot

Et lille program, der overvåger et SMB/Samba-share (f.eks. en StyleShoots-maskine) og automatisk uploader fotomapper som shoots og packshots.

  • Shoots

    Mapper med navnet S-<setnummer> (f.eks. S-1234) uploades som shoot for det sæt.

  • Packshots

    Alle andre mapper ses som en vare: en scannet EAN/stregkode eller et offentligt varenummer. Fotos med back, side eller label i filnavnet kobles til den visning — eller via dit eget mønster, se nedenfor.

  • Flat-tilstand

    Til StyleShoots, der lægger alle filer enkeltvis i mappen: sæt FLAT_PACKSHOT=true. Enkeltfotos grupperes efter vareidentifieren (delen før den første underscore) og synkroniseres som packshots.

  • Flat-tilstand

    Til StyleShoots, der lægger alle filer enkeltvis i mappen: sæt FLAT_PACKSHOT=true. Enkeltfotos grupperes efter vareidentifieren (delen før den første underscore) og synkroniseres som packshots.

  • Sikker

    En mappe synkroniseres først, når der ikke er foretaget ændringer i 10 minutter. Ukendte varer springes over og prøves igen senere. Ved packshots sletter vi kun de filer, der faktisk er uploadet — mappen og resten bliver liggende.

Installation på Windows Server

  1. Download

    Download windows-amd64.exe ovenfor, omdøb den til smbsync.exe, og læg den i sin egen mappe, f.eks. C:\Photopilot\smbsync\.

  2. Opret en .env-fil i den samme mappe
    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. Peg den mod din Samba/SMB-share

    SMB_IP er IP-adressen på maskinen med sharet (f.eks. StyleShoots eller din NAS). SMB_MOUNT er navnet på selve sharet, og START_DIR er den mappe i sharet, der synkroniseres. Kontoen skal have læse- og skriverettigheder: uploadede filer slettes fra sharet efter upload.

  4. Start automatisk med Windows

    Åbn Opgavestyring (Task Scheduler), opret en opgave, der starter smbsync.exe, når computeren starter, og sæt 'Start in' til mappen med .env. Vælg 'Uitvoeren ongeacht of de gebruiker is aangemeld'.

  5. Kontrollér

    Opret en testmappe med en EAN-kode som navn på share, læg et billede i den, og vent ±10 minutter. Billedet vises ved artiklen i Photopilot og forsvinder fra share. Selve mappen bliver stående med en status.json som dokumentation for, at den er behandlet — billeder, som vi ikke har uploadet, bliver også bare stående. Fejl sendes automatisk til os via Sentry.

Genkend forside, bagside og side

Som standard søger SMB Sync efter ordene back, side og label i filnavnet; alle øvrige billeder bliver til hvert sit packshot med det billede som forside. Ikke alle studier angiver visningen i navnet. StyleShoots nummererer for eksempel pr. vare: <EAN>_PNG_1 er forsiden, _PNG_2 er bagsiden, og _PNG_3 er den valgfrie side. Angiv så selv mønsteret i din .env:

FRONT_IDENTIFIER=_PNG_1$
BACK_IDENTIFIER=_PNG_2$
SIDE_IDENTIFIER=_PNG_3$
  • FRONT_IDENTIFIER Forside Standard: det første billede, der ikke hører til en anden visning.
  • BACK_IDENTIFIER Bagside Standard: back i filnavnet.
  • SIDE_IDENTIFIER Side Standard: side i filnavnet.
  • LABEL_IDENTIFIER Label (vaskeanvisning) Standard: label i filnavnet.

Med denne indstilling importeres 8712345678906_PNG_1, _PNG_2 og _PNG_3 samlet som ét packshot for varen 8712345678906 — altså ikke som tre separate billeder. Mangler side? Så forbliver den visning bare tom.

Hvert mønster skelner ikke mellem store og små bogstaver og matches mod filnavnet uden filtypenavn, så PNG_1 fungerer lige så godt som _PNG_1$ ($-tegnet betyder: i slutningen af navnet). Når du indstiller FRONT_IDENTIFIER, uploades kun fotos, der matcher et af disse mønstre — øvrige filer i mappen bliver ikke rørt. Udelader du en variabel, gælder standardreglen stadig.

Og labelbilledet?

Labelbilledet er det ekstra billede af vaske- eller sammensætningslabelen. LABEL_IDENTIFIER fungerer præcis som de tre andre, men husk én ting: variabler, du ikke angiver, beholder deres standardværdi. I eksemplet ovenfor står LABEL_IDENTIFIER derfor stadig på ordet label. Tre situationer:

  • Dit labelfoto er også nummereret Er _PNG_4 labelbilledet? Tilføj LABEL_IDENTIFIER=_PNG_4$. <EAN>_PNG_1 til og med _PNG_4 importeres så samlet som ét packshot: forside, bagside, side og label.
  • Dit labelfoto har faktisk et navn Hedder den for eksempel 8712345678906_label.png? Så lad bare LABEL_IDENTIFIER være tom: standardreglen for ordet label er stadig aktiv, selvom du sætter de tre andre til tal. På den måde kan du bruge begge metoder samtidig.
  • Du fotograferer ikke labels Så behøver du ikke gøre noget: fotos, der ikke passer til noget mønster, springes over. Sæt kun LABEL_IDENTIFIER=off, hvis ordet label ved en fejl kan forekomme i et filnavn (f.eks. en vare, der hedder 'Label Tee'), og du ikke vil knytte det foto som labelfoto.

off (eller none) virker også for BACK_IDENTIFIER og SIDE_IDENTIFIER og er den eneste måde at slå et standardord fra på. For FRONT_IDENTIFIER betyder off blot tilbage til standarden: det første foto, der ikke hører til nogen anden visning.