SMB Sync: van netwerkschijf naar Photopilot
Een klein programma dat een SMB/Samba-share (zoals een StyleShoots-machine) in de gaten houdt en fotomappen automatisch uploadt als shoots en packshots.
Een klein programma dat een SMB/Samba-share (zoals een StyleShoots-machine) in de gaten houdt en fotomappen automatisch uploadt als shoots en packshots.
Mappen met de naam S-<setnummer> (bijv. S-1234) worden geüpload als shoot voor die set.
Elke andere map wordt gezien als artikel: een gescande EAN/barcode of een publiek artikelnummer. Foto's met back, side of label in de bestandsnaam worden als die weergave gekoppeld — of via je eigen patroon, zie hieronder.
Voor StyleShoots die alle bestanden los in de map zetten: zet FLAT_PACKSHOT=true. Losse foto's worden gegroepeerd op artikel-identifier (het deel voor de eerste underscore) en als packshots gesynct.
Voor StyleShoots die alle bestanden los in de map zetten: zet FLAT_PACKSHOT=true. Losse foto's worden gegroepeerd op artikel-identifier (het deel voor de eerste underscore) en als packshots gesynct.
Een map wordt pas gesynchroniseerd als er 10 minuten niets is gewijzigd. Onbekende artikelen worden overgeslagen en later opnieuw geprobeerd. Bij packshots verwijderen we alleen de bestanden die daadwerkelijk zijn geüpload — de map en de rest blijven staan.
Kies de versie voor jouw systeem. De download is een .gz-bestand: uitpakken met 7-Zip (Windows) of gunzip (macOS/Linux).
Download windows-amd64.exe.gz hierboven, pak het uit en zet smbsync.exe in een eigen map, bijvoorbeeld C:\Photopilot\smbsync\.
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=falseSMB_IP is het IP-adres van de machine met de share (bijv. de StyleShoots of je NAS). SMB_MOUNT is de naam van de share zelf en START_DIR de map binnen de share die gesynchroniseerd wordt. Het account heeft lees- en schrijfrechten nodig: geüploade bestanden worden na de upload van de share verwijderd.
Open Taakplanner (Task Scheduler), maak een taak die smbsync.exe start bij het opstarten van de computer en zet 'Start in' op de map met de .env. Kies 'Uitvoeren ongeacht of de gebruiker is aangemeld'.
Maak een testmap met een EAN-code als naam op de share, zet er een foto in en wacht ±10 minuten. De foto verschijnt bij het artikel in Photopilot en verdwijnt van de share. De map zelf blijft staan, met daarin een status.json als bewijs dat hij verwerkt is — foto's die we niet hebben geüpload blijven ook gewoon staan. Fouten komen automatisch bij ons binnen via Sentry.
Standaard kijkt SMB Sync naar de woorden back, side en label in de bestandsnaam; alle overige foto's worden een eigen packshot met die foto als voorkant. Niet elke studio benoemt de weergave in de naam. StyleShoots nummert bijvoorbeeld per artikel: <EAN>_PNG_1 is de voorkant, _PNG_2 de achterkant en _PNG_3 de optionele zijkant. Geef dan zelf het patroon op in je .env:
FRONT_IDENTIFIER=_PNG_1$
BACK_IDENTIFIER=_PNG_2$
SIDE_IDENTIFIER=_PNG_3$FRONT_IDENTIFIER Voorkant Standaard: de eerste foto die bij geen andere weergave hoort.BACK_IDENTIFIER Achterkant Standaard: back in de bestandsnaam.SIDE_IDENTIFIER Zijkant Standaard: side in de bestandsnaam.LABEL_IDENTIFIER Label (wasvoorschrift) Standaard: label in de bestandsnaam.Met deze instelling komen 8712345678906_PNG_1, _PNG_2 en _PNG_3 samen binnen als één packshot voor artikel 8712345678906 — dus niet als drie losse foto's. Ontbreekt de zijkant? Dan blijft die weergave gewoon leeg.
Elk patroon is hoofdletterongevoelig en wordt getoetst op de bestandsnaam zonder extensie, dus PNG_1 werkt net zo goed als _PNG_1$ (het $-teken betekent: aan het einde van de naam). Zodra je FRONT_IDENTIFIER instelt, worden alleen foto's geüpload die bij een van deze patronen passen — overige bestanden in de map blijven met rust. Laat je een variabele weg, dan blijft de standaardregel gelden.
De labelfoto is de extra foto van het was- of samenstellingslabel. LABEL_IDENTIFIER werkt precies zoals de andere drie, met één ding om te onthouden: variabelen die je niet instelt houden hun standaard. In het voorbeeld hierboven staat LABEL_IDENTIFIER dus nog op het woord label. Drie situaties:
off (of none) werkt ook voor BACK_IDENTIFIER en SIDE_IDENTIFIER en is de enige manier om een standaardwoord uit te zetten. Bij FRONT_IDENTIFIER betekent off simpelweg terug naar de standaard: de eerste foto die bij geen andere weergave hoort.
Hulp nodig bij de installatie? We stellen hem ook graag samen met je in.