Bildpfad MD5-Hash Abweichung?

Hallo zusammen,
Ich habe gerade etwas sehr seltsames entdeckt.

Zum Hintergrund:
Ich muss für knapp 1300 Artikel die bestehenden Artikelbilder austauschen und ggf. weitere Bilder ergänzen. Mit allen Variantenbildern und mehreren Ansichten dazu läuft es auf insgesamt ca. 4200 einzelne Bilddateien hinaus die hochgeladen werden müssten.

Um das Problem anzugehen habe ich ein Skript geschrieben, dass die lokale Artikelbildstruktur greift, ordnet und clustered. Ebenfalls werden über ein SQL Query sämtliche Daten zu Artikelbildern (Artikelbild ID, Medien ID, Pfade, Konfigurator Regeln, etc) geholt und im nachhinein ähnlich geclustered.
Mit diesen beiden Datensets kann ich also auf Artikelbasis Lokal → Remote erst die Remote Bilder aus der Datenbank und vom FTP löschen um im Anschluss die neuen Artikelbilder inklusive der Thumbnails in allen erforderlichen Größen (140 px, 200 px, 600 px, 1280 px) hochzuladen und in der Datenbank die entsprechenden Einträge in den Tabellen s_articles_img, s_article_img_mappings, s_article_img_mapping_rules und s_media anzulegen.

Nun kennen wir bestimmt alle das Prinzip nachdem Shopware Medien im media/images/ Verzeichnis ablegt.
Die Unterordnerstruktur ergibt sich aus den ersten 6 Stellen des md5 hashs des Bildpfades ‚media/images/[dateiname].[extension]‘.

Für Thumbnails wird der Hash des Thumbnail Pfades ‚media/images/thumbnail/[dateiname]_[res]x[res].[extension]‘ gezogen.

Jetzt habe ich folgendes Problem:
Für ein Thumbnail eines von 3 der Bilder zu meinem Testartikel findet Shopware einen anderen MD5 hash als Python sowie zwei weiteren online Hash generatoren.

Aus ‚media/image/thumbnail/750_30_5_8_front_600x600.jpg‘ kriege ich in Python (hashlib.md5), auf der Seite https://www.md5hashgenerator.com/ und auf der Seite MD5 Hash Generator Online folgenden Hash:

7ce5adf82b237f6f9f22a397112d501f

Der Pfad müsste also wie folgt aussehen:
media/image/7c/e5/ad/750_30_5_8_front_600x600.jpg

Shopware sucht aber aus irgendeinem Grund unter:
media/image/7c/e5/g0/750_30_5_8_front_600x600.jpg

grafik

Eine Abweichung von nur 2 Stellen im Hash bei einem anderen Pfad ist unerwartet.

Bei den anderen zwei Testbildern funktioniert jedes Thumbnail. Auch die anderen Thumbnailgrößen zu diesem Bild funktionieren. Hat irgendjemand eine Erklärung oder eine Idee zur Lösung?

Hm, also ich würde da nichts direkt in die DB schreiben, sondern den ganzen Spaß generell über die API erledigen. Da muss man sich nicht über die einzelnen Größen und MD5-Hash gedanken machen. Halt eine kleine Schnittstelle bauen. Und wenn man die Bilder mit der Artikelnummer verbinden kann (z.B. über Dateinamen) sollte das auch gehen. Nur so eine Idee.

Guter Einwand, ein abweichender MD5 Hash der zudem ein G beinhaltet ist aber dennoch sehr merkwürdig.

Habe noch nie mit einer REST API gearbeitet, so ganz klar wird mir der Ablauf aus der Dokumentation bisher nicht. Werde mich mal weiter einlesen.

Danke für den Hinweis!

Ja die Sache mit dem „g“ wurde hier im Forum schon einmal angesprochen. Ich selber habe es vergessen und weiß leider auch nicht mehr den Link.

Klar, in die API muss man sich einarbeiten, aber wenn das alles geschafft ist, wird es einfacher. Und wenn du Bilder austauschen möchtest, dann dürfte das hier die richtige Anlaufstelle sein:

Der einzige Knackpunkt ist das finden der jeweiligen richtigen Media-ID, aber das könnte man über einen Zwischenschritt lösen. Die Media-ID wird dann zum Update des Bildes benötigt.

ad wird zu g0 gewandelt, weil z.B. uBlock Werbeblocker in seinen URL-Blocklisten Inhalte mit dem Wort „ad“ sperrt.
shopware/Md5Strategy.php at 5.7 · shopware/shopware · GitHub Zeile 33

1 „Gefällt mir“

Ha, genau das war’s. Ich hatte es schon vergessen :slight_smile:

Aaaah!

Das ist eine gute Erklärung, clever :smiley:
Danke!