Hi zusammen!
Manchmal kommen mir auf dem "stillen Ort" einige Ideen. Eine dieser hatte zum Ziel, dass
die Ubuntu Unity Photo Lens diejenigen Fotos anzeigt, die mit dem Namen der abgebildeten Person getagged wurden.
Da meine Internet-Recherche nach einer Lösung erfolglos blieb, habe ein Einzeilenskript zusammengestellt.
Hierfür müssen folgende Voraussetzungen gelten:
das Ubuntu Paket "exiv2" ist installiert worden
das Taggen der Fotos ist mittels des Google Programmes "Picasa" gemacht worden
das Script hat unter der Shell "bash" zu funktionieren (für andere Shells sind u.U. Anpassungen nötig)
die Fotos sind und worden mittels des Ubuntu Programmes "Shotwell" katalogisiert worden (Achtung: das Programm benötigt begründeterweise viel Arbeitsspeicher!)
...
Einzeilenskript:
find ~/Pictures -iname *.jpg -print 2>/dev/null | while read filename ; do name=`exiv2 -pa ${filename} 2>/dev/null | grep 'Xmp.mwg-rs.Regions/mwg-rs:RegionList.../mwg-rs:Name' | cut -d ' ' -f8- | sed -e ':a;N;$!ba;s/\n/,/g'`; if [ -n "${name##*()}" ]; then echo ${filename}:${name}; exiv2 -M"set Xmp.dc.subject XmpBag ${name}" ${filename}; fi; doneErklärung der Pipe-Bestandteile:
find: Erzeugen einer Liste aller Foto-Dateien mit der Endung ".jpg" im Pictures-Verzeichnis des Benutzer-aktuellen Home-Verzeichnisses, wobei die Unterscheidung der Gross- und Kleinschreibung ignoriert wird
while-Schleife: Speicherung aller Dateinamen (aus jeder einzelnen Zeile) in die Variable namens "filename" und die Iteration über jeden dieser Dateinamen
exiv2: Speicherung des XMP-Headers zu der jeweiligen Datei in die Variable namens name, wobei:
grep: Filterungen der Namensfelder aus den von "Picasa" angelegten virtuellen Bild-Regionen im XMP-Header
cut: Ausschneiden der Personennamen aus jenen Namensfeldern
sed: Zusammenfügen der Personennamensliste (getrennt durch Zeilenumbrüche) separiert durch Kommata (Anforderung von Shotwell)
if: Ausschneiden von Leerzeichen und Filterung von leeren Personennamen
exiv2: Speichern der Personennamen im XMP-Header des Fotos
Falls ihr eine ähnliche Problemstellung haben solltet, probiert einfach das Einzeilenskript aus. Für Fragen oder Anregungen stehe ich gerne zur Verfügung.
Have fun & cheers!
Viele Grüsse
tecSurf