In 4min32s 20.000 Bilder auf Amazon aktualisieren
![Trutz Fries](/assets/blog/authors/tf.jpeg)
![Trutz Fries](/assets/blog/authors/tf.jpeg)
Wir standen kürzlich vor der Herausforderung, für einen Kunden eine große (!) Anzahl von Bildern auf Amazon zu aktualisieren.
Das ist grundsätzlich kein Problem, wenn die Bilder im richtigen Format vorliegen. Das war hier aber nicht der Fall. Über ein einfaches Skript und eine Katalogdatei konnten wir die Bilder umbenennen und anschließend gesammelt bei Amazon hochladen.
Bilder in großen Mengen hochladen
Für für eine Vielzahl von Bild-Updates hat Amazon ein Tool bereitgestellt, mit Hilfe dessen man bei einer Vielzahl von Produkten die Bilder auf einmal aktualisieren kann.
Das Tool hat den passenden Namen Bilder in großen Mengen hochladen und findet sich in Vendor Central hier:
https://vendorcentral.amazon.de/imaging/upload
Etwas versteckt findet man auf dieser Seite auch den Link, um länderspezifische Bilder hochzuladen:
https://vendorcentral.amazon.de/imaging/upload/country
Das Prinzip ist einfach: Man benennt die Bilder so, dass sie einen eindeutigen Identifizierer enthalten (das kann die ASIN, GTIN oder EAN sein) sowie den Bildtyp, z.B. "MAIN" für das Hauptbild.
Der Dateiname muss also z.B. wie folgt lauten, um das Hauptbild für die ASIN B09N4SJLWM zu aktualisieren:
B09N4SJLWM.MAIN.jpg
Dann werden die Bilder in Tausender-Paketen zu einer ZIP-Datei zusammengefasst und hochgeladen. Fertig.
Voraussetzung sind also zwei Dinge:
- Die Bilder liegen physisch auf dem eigenen Rechner vor
- Die Bilder haben alle den richtigen Namen.
Punkt 1 war Dank der Mithilfe des Kunden gegeben. Problem war Punkt 2: Der Name war falsch.
Bilder umbenennen
Wir hatten jedoch Glück im Unglück. Die Bilder enthielten zwar nicht die ASIN oder GTIN, aber dafür die SKU des Vendors. Mit dieser Information war der Rest (fast) ein Kinderspiel.
Wir haben uns ein Skript geschrieben, welches folgende Aufgaben erfüllt:
- Das Skript durchsucht rekursiv ein Verzeichnis inkl. aller Unterverzeichnisse und findet darüber alle Bilder
- Wir suchen dann nach der SKU im Dateinamen des Bildes
- Das Skript schaut dann in einer Katalogdatei nach, die die SKU des Vendors sowie die zugehörige ASIN enthält.
- Das Skript benennt die Datei entsprechend um
- Immer 1.000 Bilder werden dann in einen eigenen Ordner gelegt
- Anschließend komprimiert das Skript jeweils die 1.000 Bilder in einem Ordner und erstellt entsprechende ZIP-Dateien
- Das Resultat wird in einer Excel-Datei festgehalten und listet alle Bilder auf, die a) erfolgreich umbenannt werden konnten, die im Katalog nicht gefunden wurden, oder für die keine SKU im Bildnamen gefunden wurden.
Die einzelnen ZIP-Dateien können dann zu Amazon hochgeladen werden. Bei den fehlerhaften Bildern muss dann ggfs. noch händisch nachgearbeitet werden.
Auf der Statusbericht Seite in Vendor Central lässt sich dann der Erfolg des Uploads überprüfen.
Fazit
Das Skript haben wir auf Github veröffentlicht.
Hier ein kurzer Auszug:
for subdir, dirs, files in os.walk(imageDir):
for file in files:
if file.lower().endswith(('.jpg', '.jpeg', '.tiff', '.gif')):
# print(os.path.join(subdir, file))
# Get file extension
file_name, file_extension = os.path.splitext(file)
match = pattern.search(file)
# Check, if we found the pattern
if match:
# print(f'Found "{match.group()}" in "{file}"')
patternFound = match.group()
Am Ende hat die Erstellung des Skripts natürlich länger gedauert als nur vier Minuten, aber die reine Skriptlaufzeit sowie das Hochladen der Bilder, das war tatsächlich in 5 Minuten erledigt.