REST API Import Probleme mit Thumbnails

Hallo miteinander,

aktuell plagt mich ein ziemlich großes und kurioses Problem:

Wir Importieren einen bestehenden Datenbestand aus Artbutler in Shopware. Da das ohne weiteres nicht möglich ist, haben wir ein Skript gebaut, welches den Export verarbeitet und per REST-API die Artikel mit ihren entsprechenden Eigenschaften anlegt.

Das Problem das wir jetzt haben ist folgendes: Die Thumbnails der Artikel werden falsch erstellt. Hat ein Artikel z.b. 4 Artikelbilder, dann bekommen alle 4 Bilder die gleichen Vorschaubilder, wenn man sie anklickt, erhält man die volle Version und auch richtige Version des Bildes.

Das nun extrem kuriose an der Sache: Vorgestern lief der Import noch problemlos durch und erstellte die Thumbnails korrekt. Jetzt schlägt das bei jedem einzelnen Artikel fehl, am Import wurde nichts geändert.

Auch das nachgenerieren der Thumbnails per Backend schaft keine Abhilfe

Zwei Möglichkeiten ergaben sich dann als Fehlerquellen: Bilddateien zu groß oder Bilddateien falsch encodiert
Beides haben wir in verschiedenen Kombinationen ausprobiert, Bilder verkleinert, neu gespeichert etc… keine Abhilfe

Sind schon einmal bei jemandem ähnlichen Probleme aufgetreten, gibt es etwas wissenswertes zur Thumbnail-Generierung?

Also das Anlegen der Thumbnails scheitert manchmal, manchmal nicht. Die meiste Zeit scheitert es jedoch. Ich konnte bisher noch nicht reproduzieren, wann es scheitert und wann nicht.

Wenn man sich die Einträge in der s_media-Tabelle ansieht, stellt man auch fest, wieso die Thumbnail-Erstellung wohl scheitert.

Normalerweise bekommt jeder Eintrag für jedes Bild einen eindeutigen eintrag in der Spalte „name“. Wenn die Generierung fehlschlägt, dann ist dies nicht der Fall. Dann haben alle 3-4 Artikelbilder genau den gleichen Eintrag in der „name“ Spalte, trotz anderem Dateinamen.

Anbei ein Screenshot

Edit: Dieses Problem tritt auf übrigens auf 2 verschiedenen Servern mit Shopware 5.1.6 auf

Ich habe einen einfachen, aber irgendwie absurden Workaround gefunden:

  1. Artikel per REST mit Bildern anlegen
  2. Artikel per REST löschen
  3. Artikel direkt erneut per REST anlegen

Das funktioniert. Kann das jemand von den Shopware-Entwicklern irgendwie erklären oder nachvollziehen?

Die Sache funktioniert grundsätzlich. Irgendwas scheint an Deinen Calls nicht zu stimmen.

Ja, die funktioniert tatsächlich “grundsätzlich”. Ich gehe davon aus, dass es sich um ein Queuing-/Caching-Problem handelt, aber das Budget des Kunden erlaubt es leider nicht unbedingt, noch Stunden debugging vorzunehmen.

Ohne den Workaround funktioniert die Generation sporadisch, nicht reproduzierbar.

Ich habe zu dem Problem auch verwandtes Issue im Issue-Tracker gefunden, und in einem neuen Issue darauf hingewiesen.

Der Call macht nichts besonderes. Ohne Bilder per Array zu übergeben funktioniert sowieso alles problemlos. Bilder werden, wie aus der Dokumentation hervorgeht, wie folgt übergeben:

{
   name: '...',
   description: '...',

   ...

   images: [
       {
           link: 'OEFFENTLICHE_URL_ZU_BILD0',
           name: 'bild0.jpg'
       },
       ...

       {
           link: 'OEFFENTLICHE_URL_ZU_BILD1',
           name: 'bild1.jpg'
       }
   ]
}

Wenn man sich die Article API-Ressource anschaut, stellt man fest, dass das “name”-Attribut übrigens vollkommen ignoriert wird. Das könnte eventuell zu dem Problem beitragen.

Edit: Typos

Hierbei fällt mir ein, wenn Du den Namen übergibst wird das Bild auf diesen Namen umbenannt. Möglicherweise ist das, das Problem. Lass den Namen weg und verwende stattdessen Description. Übrigens aktuell bin ich an einem Projekt dran wo ich mit aktuell bis zu 70 Calls „parallel“ Medien hochlade.

Das Namens-Attribut habe ich tatsächlich erst als eventuelle Korrektur eingefügt, vorher habe ich es weggelassen. Hat keinen Unterschied gemacht.

Wie legst Du denn die Medien an? Legst du diese manuell vor dem Artikel an und linkst sie per ID ein, oder tatsächlich auf die gleiche Art und Weise wie ich?

@j_eng schrieb:

Das Namens-Attribut habe ich tatsächlich erst als eventuelle Korrektur eingefügt, vorher habe ich es weggelassen. Hat keinen Unterschied gemacht.

Wie legst Du denn die Medien an? Legst du diese manuell vor dem Artikel an und linkst sie per ID ein, oder tatsächlich auf die gleiche Art und Weise wie ich?

Über die Medienressource