das erzeugt ein leeres Medien-Objekt im richtigen Folder. Aber wieso leer? Klappt das über nur die URL nicht?
Leider ist wieder mal die Doku mangelhaft…
Eigentlich möchte ich ja die Bilder direkt dem Produkt zuweisen, aber auch hier funktioniert es nicht. Deshalb wollte ich den Umweg gehen über erste Medien anlegen und dann zuweisen…
ps: ich will natürlich mehrfache Medien verhindern, wenn täglich ein Abgleich läuft… deshalb wollte ich über GET media über die ID ein Medium abrufen. Wenn eins zurückkommt überspring ich es, wenn keins zurückkommt, leg ich eins an. Da ich die IDs beim Import über die URL md5-hashe und bilde, könnte ich das identifizieren… Leider ist die Methode wohl nicht dafür da, um Medien zu IDs abzurufen, die es nicht gibt. Es gibt eine Exception …
Man muss pro Bild 2 API Calls ausführen. Der erste Call erzeugt ein leeres Medianobjekt in der DB. Der 2. Call läd dann das Bild hoch dazu hoch. Ich hab das via v1/_action/sync und v1/_action/media/{uuid}/upload?extension=jpg&fileName={filename} gemacht.
Hab ich auch einiges an Zeit gelassen, weil wie gewohnt, die Doku einen im Stich lässt.
danke für die Hilfe. Jetzt hab ich die Medien zumindest mal online. Für das Zuweisen als Cover-Image beim Produkt muss jetzt wohl noch einen 3. Call machen… alles in allem nicht so schön, das war bei der SW5-API besser …
bleibt das Problem mit den Duplikaten… wenn mein Import täglich läuft, lädt er täglich die selben Bilder immer und immer wieder hoch. Dafür muss ich noch eine Lösung finden…
und: wie umgeht man die Exception _ CONTENT__MEDIA_DUPLICATED_FILE_NAME _ wenn mehrere Artikel das selbe Bild haben?
Produktnummer in den Bildnamen aufnehmen, dann kann das nicht mit anderen Produkten kollidieren. Bei wiederholtem Upload, lösche ich bei einem duplicate den leeren Bildeintrag wieder.
Ein täglicher Upload aller Bilder macht aber wenig sinn. Kannst du das nicht anhand eines created oder updated at Zeitstempels in deiner WaWi filtern? So effizient ist die SW6 dafür ja garnicht, weil die im Grunde wie die DB aufgebaut ist und man für jeden Käse einen extra Call machen muss. So geht zwar auf der einen Seite fast alles über die API aber dafür nur umständlich und überhaupt nicht auf Performance optimiert.
@Exe
nein , leider hab ich auf WaWi-Seite keine Möglichkeit für Zeitstempel.
Zumal ein bloßes „updatedAt“ beim ganzen Produkt nichts bringen würde, da ja ggf. lediglich der Bestand geupdated wurde.
Bei wiederholtem Upload, lösche ich bei einem duplicate den leeren Bildeintrag wieder
wie erkennst du das Duplicate dann?
Ich habe versucht, über GET /media ein Medium für meine generierten IDs abzufragen, um zu prüfen ob es bereits da ist oder nicht. Führt halt dazu, dass ich ggf. auch (bei neuen Bildern) für IDs abfrage, die im Shop noch nicht existieren. Aber leider funktioniert der Endpoint so nicht. Ist wohl nicht drauf ausgelegt, IDs abzufragen, die es nicht gibt… gibt nur Exception.
Ein Duplicate erkenne ich daran, dass die API meckert. Die Exception per Catch abfangen und daraufhin das eben angelegte Mediaelement wieder löschen. ISt zwar blöd aber bei uns ist der Bildimport auch eher für das initiale befüttern der Produkte und nicht als Dauerlösung. Da ist das durchauch ok, wenn es nicht optimal und super effizient läuft.