PhotopilotPhotopilot
SMB Sync

SMB Sync: från nätverksenhet till Photopilot

Ett litet program som bevakar en SMB/Samba-share (till exempel en StyleShoots-maskin) och automatiskt laddar upp fotomappar som shoots och packshots.

  • Shoots

    Mappar med namnet S-<setnummer> (t.ex. S-1234) laddas upp som shoot för den uppsättningen.

  • Packshots

    Varje annan mapp ses som en artikel: en skannad EAN/streckkod eller ett publikt artikelnummer. Bilder med back, side eller label i filnamnet kopplas som den vyn — eller via ditt eget mönster, se nedan.

  • Flat-läge

    För StyleShoots som lägger alla filer separat i mappen: sätt FLAT_PACKSHOT=true. Separata foton grupperas efter artikelidentifierare (delen före det första understrecket) och synkas som packshots.

  • Flat-läge

    För StyleShoots som lägger alla filer separat i mappen: sätt FLAT_PACKSHOT=true. Separata foton grupperas efter artikelidentifierare (delen före det första understrecket) och synkas som packshots.

  • Säkert

    En mapp synkroniseras först när inget har ändrats på 10 minuter. Okända artiklar hoppas över och provas igen senare. För packshots tar vi bara bort de filer som faktiskt har laddats upp — mappen och resten lämnas kvar.

Installation på Windows Server

  1. Ladda ner

    Ladda ner windows-amd64.exe ovan, byt namn på den till smbsync.exe och lägg den i en egen mapp, till exempel C:\Photopilot\smbsync\.

  2. Skapa en .env-fil i samma mapp
    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. Peka den mot din Samba/SMB-share

    SMB_IP är IP-adressen till maskinen med share (t.ex. StyleShoots eller din NAS). SMB_MOUNT är namnet på själva share och START_DIR är mappen i share som synkroniseras. Kontot behöver läs- och skrivrättigheter: uppladdade filer tas bort från share efter uppladdningen.

  4. Starta automatiskt med Windows

    Öppna Schemaläggaren (Task Scheduler), skapa en aktivitet som startar smbsync.exe när datorn startas och sätt 'Start in' till mappen med .env. Välj 'Kör oavsett om användaren är inloggad'.

  5. Kontrollera

    Skapa en testmapp med en EAN-kod som namn på share, lägg en bild i den och vänta ±10 minuter. Bilden visas vid artikeln i Photopilot och försvinner från share. Själva mappen ligger kvar, med en status.json som bevis på att den har bearbetats — bilder som vi inte har laddat upp ligger också kvar. Fel skickas automatiskt till oss via Sentry.

Identifiera framsida, baksida och sida

Som standard letar SMB Sync efter orden back, side och label i filnamnet. Alla andra bilder blir en egen packshot med den bilden som framsida. Alla studior anger inte vyn i namnet. StyleShoots numrerar till exempel per artikel: <EAN>_PNG_1 är framsidan, _PNG_2 är baksidan och _PNG_3 är den valfria sidan. Ange då mönstret själv i din .env:

FRONT_IDENTIFIER=_PNG_1$
BACK_IDENTIFIER=_PNG_2$
SIDE_IDENTIFIER=_PNG_3$
  • FRONT_IDENTIFIER Framsida Standard: den första bilden som inte hör till någon annan vy.
  • BACK_IDENTIFIER Baksida Standard: back i filnamnet.
  • SIDE_IDENTIFIER Sida Standard: side i filnamnet.
  • LABEL_IDENTIFIER Label (tvättråd) Standard: label i filnamnet.

Med den här inställningen kommer 8712345678906_PNG_1, _PNG_2 och _PNG_3 in tillsammans som en packshot för artikel 8712345678906 — alltså inte som tre separata foton. Saknas sida? Då lämnas den vyn helt enkelt tom.

Varje mönster är skiftlägesokänsligt och kontrolleras mot filnamnet utan filändelse, så PNG_1 fungerar lika bra som _PNG_1$ ($-tecknet betyder: i slutet av namnet). När du ställer in FRONT_IDENTIFIER laddas bara bilder upp som matchar ett av dessa mönster — övriga filer i mappen lämnas orörda. Om du utelämnar en variabel fortsätter standardregeln att gälla.

Och etikettbilden?

Etikettbilden är den extra bilden av tvätt- eller materialsammansättningsetiketten. LABEL_IDENTIFIER fungerar precis som de andra tre, med en sak att komma ihåg: variabler som du inte ställer in behåller sitt standardvärde. I exemplet ovan står LABEL_IDENTIFIER därför fortfarande på ordet label. Tre situationer:

  • Din labelbild är också numrerad Är _PNG_4 etikettbilden? Lägg till LABEL_IDENTIFIER=_PNG_4$. <EAN>_PNG_1 till och med _PNG_4 importeras då tillsammans som en packshot: framsida, baksida, sida och label.
  • Din labelbild har faktiskt ett namn Heter filen till exempel 8712345678906_label.png? Utelämna då bara LABEL_IDENTIFIER: standardregeln för ordet label förblir aktiv, även om du ställer in de andra tre på nummer. På så sätt kan du använda båda metoderna parallellt.
  • Du fotograferar inga labels Då behöver du inte göra något: foton som inte matchar något mönster hoppas över. Sätt LABEL_IDENTIFIER=off endast om ordet label av misstag kan förekomma i ett filnamn (till exempel en artikel som heter 'Label Tee') och du inte vill koppla det fotot som labelfoto.

off (eller none) fungerar också för BACK_IDENTIFIER och SIDE_IDENTIFIER och är det enda sättet att stänga av ett standardord. För FRONT_IDENTIFIER betyder off helt enkelt att gå tillbaka till standardinställningen: den första bilden som inte hör till någon annan vy.