Erzeugen von "Shared Thumbnails" [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dakuan
Beiträge: 107
Registriert: 28.04.2011 22:09:39

Erzeugen von "Shared Thumbnails" [gelöst]

Beitrag von dakuan » 26.07.2021 20:22:18

Ich experimentiere seit einiger Zeit mit individualisierten Thumbnails für Video Dateien. Da ist es natürlich blöd, dass diese immer nur für einen User gültig sind (was oft auch sinnvoll ist).

Wenn ich aber Videos "für alle" auf einer externen Platte speichere, bieten sich Shared Thumbnail repositories geradezu an. Bisher scheinen die Dateimanager diese Möglichkeit aber zu ignorieren. Bei Thunar ist da wohl vor 2 Tagen nachgebessert worden.

Mein Problem ist jetzt, über welchen String der Name der Vorschaudatei ermittelt wird. Die Spezifikation ist da für meinen Geschmack etwas zu unscharf. Normal geht das so:

Code: Alles auswählen

Beispiel:
echo -n 'file:///home/manfred/prog/img/test2/ab0308.jpg' | md5sum
2128fa903fc75f2ae7a4560508e9931f
Ich bin da auch insofern verunsichert, weil einige Programme, z. B. ffmpegthumbnailer, das "file://" im URI-Tag weglassen und testen kann ich das ja auch nicht, da die bisherige Thunar Version das ja noch nicht kann.

Hat jemand eine Idee, wie ich an die erforderliche Information heran komme oder wo ich den zutreffenden Quelltext finde?
Zuletzt geändert von dakuan am 28.07.2021 18:49:28, insgesamt 1-mal geändert.

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Erzeugen von "Shared Thumbnails"

Beitrag von eggy » 26.07.2021 20:57:57

Wenn ich das jetzt genauer wissen wollte, würde ich mir eins der Programme suchen, die entsprechende Thumbnails erstellen, im Source die Codestelle finden, wo das passiert und mir einfach mal ausgeben lassen was die Funktion als Eingabe bekommt.

Am Beipiel gthumb, das scheint was Fertiges aus dem gnomeframework zu benutzen:
https://developer.gnome.org/gnome-deskt ... ctory.html
der Aufruf der entsprechenden Funktionen ist in gthumb/gth-thumb-loader.c zu finden, die Eingabe könnt man ja einfach mal ausgeben lassen.

Für Thunar:
https://docs.xfce.org/xfce/thunar/start
da gibts nen Link zum Repo, vielleicht
https://gitlab.xfce.org/xfce/thunar/-/b ... mbnailer.c
gibt aber noch nen paar andere Dateien, die auch in Frage kommen könnten

dakuan
Beiträge: 107
Registriert: 28.04.2011 22:09:39

Re: Erzeugen von "Shared Thumbnails"

Beitrag von dakuan » 26.07.2021 21:48:28

Ich denke, da liegt ein Missverständnis vor. Wie man herkömmliche Thumbnails erstellt, und wo diese abzuspeichern sind, ist mir bekannt. Den Gnome Quelltext zu analysieren bringt mich jetzt auch nicht weiter.
Erstens weil das, was mich interessiert, da wohl noch nicht umgesetzt ist und zweitens weil ich die Strings da nicht sehen kann.

Ich müsste da schon den XFCE Quelltext haben, der kürzlich eingepflegt wurde. Ich kann in dem verlinkten Beitrag leider nur die Gesamtliste der "Merge Requests" sehen, komme aber nicht an die Daten ran.

Es geht mir eigentlich darum, zu erkennen, wie der Dateimanager erkennt dass ein "Shared Thumbnail Repository" vorliegt und aus welchem String der Dateiname generiert wird. Das müsste ich dann in meinem Programmen nachbilden.

Es ist ja blöd, auf Verdacht einen Mechanismus in eigene Programme zu implementieren, und dann später festzustellen, dass man von falschen Annahmen ausgegangen ist.

Also die Anweisung:

Code: Alles auswählen

the thumbnails should be in a relative path from the original image.
würde ich jetzt so interpretieren, dass es in jedem Verzeichnis mindestens das Unterverzeichnis

Code: Alles auswählen

.sh_thumbnails/normal/
geben sollte. Ich bin mir da aber nicht sicher, da ich das bisher mit keinem Programm verifizieren konnte. Ich habe da zwar ein entsprechendes Thumbnail erzeugt, auf den erwähnten Annahmen basierend, stelle aber fest, das Jeder Dateimanager ein eigenes neues Thumbnail erzeugt (vorhandenes Thumbnail vor jedem Versuch gelöscht).

P.s. mit GIT kenne ich mich nicht aus, vielleicht finde ich deshalb den benötigten Quelltext nicht.

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Erzeugen von "Shared Thumbnails"

Beitrag von eggy » 26.07.2021 22:28:44

Kurze "Readonly-Git" Anleitung:

a) apt-get install git
b) repo url finden: bei gitlab auf "repository" klicken (bringt dich dahin: https://gitlab.xfce.org/xfce/thunar/-/tree/master ) und dann rechts auf den blauen Button "clone" klicken, die URL kopieren; bei github gehts ähnlich, da versteckt sich der Link hinter dem grünen Knopf "clone"
c) neues Verzeichnis anlegen, darein wechseln
d) git clone $URL - in diesem Fall: "git clone https://gitlab.xfce.org/xfce/thunar.git"
e) kurz warten, im Beispiel sind das etwa 40.000 Dateien die geholt und aufbereitet werden müssen
f) ls und cd ins entsprechende Unterverzeichnis, in diesem Fall: "cd thunar", da bist du dann im aktuell ausgecheckten master branch und kannst dich ganz normal in den aktuellen Daten umsehen

Und die ganzen coolen Sachen von git kommen erst wenn man selbst mit arbeitet zum Tragen, es lohnt sich wirklich da mal nen Nachmittag reinzustecken. Wirklich. Und auch für Nichtprogrammierer.
Vermutlich willst Du Dateien aus den Entwicklungzweigen laden, das wäre dann ein sogenannter checkout aus einem remote branch, alles weitere in der Doku, z.B. da https://git-scm.com/book/de/v2

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Erzeugen von "Shared Thumbnails"

Beitrag von eggy » 26.07.2021 22:34:37

Eine Frage zum Erzeugen der Thumbnails, was mir aus der Doku die Du oben verlinkt hattest nicht klar geworden ist: wie kommen die von dem Beispielfile (file:///home/jens/... ) auf die MD5 in dem Beispiel (c6ee...)
The absolute canonical URI for the file in this example is file:///home/jens/photos/me.png.
The MD5 hash for the uri as a hex string is c6ee772d9e49320e97ec29a7eb5b1697.

Code: Alles auswählen

echo "file:///home/jens/photos/me.png" | md5sum
03071a2b3ee32594472dcc3d9a9caa05  -
Auch wenn ich file, file: oder file:/// weglasse, kommt bei mir was anderes raus.

dakuan
Beiträge: 107
Registriert: 28.04.2011 22:09:39

Re: Erzeugen von "Shared Thumbnails"

Beitrag von dakuan » 26.07.2021 23:22:09

Code: Alles auswählen

e) kurz warten, im Beispiel sind das etwa 40.000 Dateien die geholt und aufbereitet werden müssen
Oh man, das sieht nach einer sehr Umfangreichen Aktion aus. Bei der Menge wäre es wohl einfacher, Thunar aus den Quelltexten komplett neu zu installieren (inclusive Behebung möglicher Versionskonflikte). Das sollte ich möglicherweise in einer Testinstallation machen.

Code: Alles auswählen

Auch wenn ich file, file: oder file:/// weglasse, kommt bei mir was anderes raus.
Der Punkt ist der "-n" Parameter (ohne NewLine!). Der Zeilenumbruch gehört nicht zum Pfadnamen, das Protokoll Schema aber eigentlich schon. Deswegen hatte ich ein echtes Beispiel mit Ergebnis gezeigt.

Also das funktioniert bei mir schon seit fast einem 3/4 Jahr. Also die "konventionellen Thumbs", die ich selber erstellt habe, werden von allen Dateimanagern akzeptiert, die "shared thumbs" jedoch nicht, weshalb ich nicht testen kan, ob ich das richtig verstanden habe.

P.S. Vielleicht sollte ich noch erwähnen, dass der URL String URL-Encoded sein muss.

JTH
Moderator
Beiträge: 3077
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Erzeugen von "Shared Thumbnails"

Beitrag von JTH » 27.07.2021 00:14:09

dakuan hat geschrieben: ↑ zum Beitrag ↑
26.07.2021 20:22:18
Mein Problem ist jetzt, über welchen String der Name der Vorschaudatei ermittelt wird. Die Spezifikation ist da für meinen Geschmack etwas zu unscharf.
dakuan hat geschrieben: ↑ zum Beitrag ↑
26.07.2021 21:48:28
und aus welchem String der Dateiname generiert wird.
Es könnte besser formuliert sein, aber die Freedesktop-Spec erwähnt es schon:
https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#SHARED hat geschrieben: The filename of the thumbnail is also in the shared thumbnail repository the md5sum of the URI. But, because the URI is possibly not constant, only the filename part of the URI should be used, no directory parts.
Der Name der Thumbnaildatei ist demnach die MD5-Summe des Basisnames der Mediendatei - ohne alle Orderkomponenten:

Code: Alles auswählen

$ tree -a
.
├── bild.jpg
└── .sh_thumbnails
    └── normal
        └── fe6ec362949dafda0af0248db1fa1d79.png

So findet sich das auch im Thunar-Code wieder.
Manchmal bekannt als Just (another) Terminal Hacker.

dakuan
Beiträge: 107
Registriert: 28.04.2011 22:09:39

Re: Erzeugen von "Shared Thumbnails"

Beitrag von dakuan » 27.07.2021 15:10:02

Danke für die Klarstellung und den Link zum Quelltext.

Es ist interessant zu sehen, dass die sich auch auf die Glib2 stützen. Da kann an der Stelle ja nicht mehr viel schiefgehen. Eigentlich muss ich da nur noch

Code: Alles auswählen

g_filename_from_uri ()
dazwischenschalten. Die Hauptarbeit entsteht wieder mal an anderer Stelle.

Ich versuche das mal so umzusetzen und hoffe, das ich da später nicht allzuviel nachbessern muss.

Außerdem sehe ich gerade, dass die Glib wohl auch MD5 zur Verfügung stellt. Ich habe dafür bisher auf openssl zurückgegriffen. Diese Abhängigkeit kann ich dann wohl wieder ausbauen.

dakuan
Beiträge: 107
Registriert: 28.04.2011 22:09:39

Re: Erzeugen von "Shared Thumbnails"

Beitrag von dakuan » 28.07.2021 18:49:04

Nur wegen der Vollständigkeit.

Die Funktion g_filename_from_uri() macht weniger als ich dachte. Die schneidet nur den "file://" Präfix ab. Ich dachte da eher an so etwas wie base_name(), weil man ja eigentlich immer beide Versionen benötigt (weil die privaten Thumbs Vorrang haben).

Antworten