Ich habe mir ein Shellscript geschrieben, das mir meine Fotos von meinem Desktop, die ich mit gut bewertet habe (Rating abgespeichert in den exif-Daten der Fotos) raussucht und für die Diashow auf meinem Raspberry Pi aufbereitet.
Wer Interesse hat, kann es gerne nutzen. Es funktioniert (bei mir) gut - ist aber sicherlich optimierbar.
Ich freue mich über jede Rückmeldung hier im Thread.
Bei Interesse entwickle ich das Tool auch weiter.
Installation:
- Voraussetzung: Linux, imagemagick, exiftool
- Code kopieren und
- in eine Datei mit dem Namen tolle.fotos.sh einfügen
- die Datei muss ausführbar sein
Bash
#!/bin/bash
#
# Programm: tolle_fotos.sh
# Autor: didgejo im Forum forum-raspberrypi.de
# https://forum-raspberrypi.de/forum/thread/12959-fotos-nach-bewertung-in-exif-fuer-diashow-selektieren/
# Version: 0.6
# Weitere Infos: siehe unten in der Hilfe oder mit:
# tolle_fotos - h
#
# Optimierungsmöglichkeiten:
# - Groß- und Kleinschreibung bei der Selektion ignorieren
# - evt. parametriert aufrufen lassen, um mehrere Sammlungen regelmäßig per cron automatisiert zusammenstellen zu lassen
# - nicht immer wieder alle Dateien durchsuchen lassen, sondern nur die neuen.
# Dafür Kennzeichen mit Datum im Dateisystem setzen und jedes mal aktualisieren.
#
#######################################
# #
# Ihre Einstellungen hier vornehmen: #
# #
############## #
# STARTVERZEICHNIS: Rootverzeichnis der Bilder, z.B.: "/home/joerg/Eigene_Bilder"
# STARTVERZEICHNIS="/home/joerg/Eigene_Bilder"
STARTVERZEICHNIS="/tmp/Bilder/Helena_ab4"
# ZIELVERZEICHNIS: hier befinden sich zum Schluss die Ergebnisse, z.B.: "/home/joerg/tmp/Geburtstage
ZIELVERZEICHNIS="/tmp/Bilder/Helena_ab5"
# GROESSE: Größe der Bilder für die Diashow, z.B.: "1440x1152"
GROESSE="1440x1152"
# Bedingungen: alle müssen erfüllt sein, sonst wird das Foto nicht gewählt - also nicht zu viele Bedingungen eingeben:
# ============
# mit "|" (dem Pipe-Zeichen) können mehrere Suchworte voneinadner getrennt werden: "Ostern|Weihnachten"
#
# ALBUM: Teil aus einem Verzeichnisnamen, z.B. "Geburtstag" oder "tag", dann sind auch die Namens_tag_e dabei oder "Urlaub|Wanderung"
# !!! Achtung: wenn bei ALBUM nichts eingegeben wird, muss wenigstens ein "." eingegeben werden !!!
ALBUM="."
# MINDESTBEWERTUNG: 1-5 (exif: Rating)
MINDESTBEWERTUNG=5
# TITEL: Sucht in Caption-Abstract + ObjectName, z.B.: "Heike" findet auch "Peter und Heike auf dem Bauernhof" oder ""
TITEL=""
# STICHWORT: Sucht nach Tags in '$Keywords', '$TagsList' (exif) - das ist jeweils der ganze Pfad, sozusagen absolut, z.B. "Peter" oder "Peter|Gabi" oder ""
# Für "Pflanzen" wird auch gefunden: /Natur/Lebewesen/Pflanzen/Baum
STICHWORT="Helena"
############## #
# #
# ab hier nichts mehr ändern! #
# #
##################################################################
# Hilfe
if [ "$1" == "-h" ]
then
echo ""
echo ""
echo "++==================================================================================++"
echo "|| Hilfe zum Programm 'tolle_fotos.sh' ||"
echo "++==================================================================================++"
echo "Programm: tolle_fotos.sh"
echo "Autor: User didgejo im forum-raspberrypi.de Oktober 2014"
echo "Version: 0.6"
echo "Datum: 8. Okt. 2014"
echo ""
echo "Zweck: Ansprechende Fotos aus der eigenen Fotosammlung einsammeln und für die XBMC-Diashow (oder andere Diashow) vorbereiten."
echo " Dafür werden die Fotos ausgewählt, die man in deren exif-Daten gut bewertet hat."
echo " Die Fotos werden alle in ein Verzeichnis gepackt und dann noch verkleinert und komprimiert."
echo ""
echo "Konfiguration: Im Programmcode sind ganz oben eigene Einstellungen vorzunehmen."
echo " Die Einstellmöglichkeiten werden dort auch erklärt."
echo ""
echo "Softwarevoraussetzungen:"
echo " - Linux"
echo " - exiftool, in Ubuntu z.B. das Paket libimage-exiftool-perl"
echo " - imagemagick"
echo ""
exit
fi
# Vorbereitungen
mkdir -p $ZIELVERZEICHNIS
# Start
cd $STARTVERZEICHNIS
i=1
find * | grep -i -E $ALBUM | grep -i "jpg" | while read FOTO
do
# Metadaten lesen
INFOS=`exiftool -q -q -m -p '$Filename|$Caption-Abstract|$ObjectName|$Headline|$TagsList|$Keywords|$Rating' "$FOTO"`
FILENAME=`echo $INFOS | cut -f"1" -d"|"`
CAPTION="`echo $INFOS | cut -f'2' -d'|'`, `echo $INFOS | cut -f'3' -d'|'`, `echo $INFOS | cut -f'4' -d'|'`, `echo $INFOS | cut -f'5' -d'|'`"
KEYWORDS=`echo $INFOS | cut -f"6" -d"|"`
RATING=`echo $INFOS | cut -f"7" -d"|"`
# if [ "$RATING" != "" ] && [ $RATING -ge $MINDESTBEWERTUNG ] && [[ $FOTO =~ $ALBUM ]] && [[ $CAPTION =~ $TITEL ]] && [[ $KEYWORDS =~ $STICHWORT ]]
if [ "$RATING" != "" ] && [ $RATING -ge $MINDESTBEWERTUNG ] && [[ $CAPTION =~ $TITEL ]] && [[ $KEYWORDS =~ $STICHWORT ]]
then
echo ""
echo -n " $RATING ___ $FOTO ___ $CAPTION ___ $KEYWORDS"
cp "$FOTO" "$ZIELVERZEICHNIS/$i-$FILENAME"
i=$(( $i + 1 ))
else
echo -n "."
# echo "$FILENAME ... $KEYWORDS"
fi
done
cd $ZIELVERZEICHNIS
mkdir -p small
# Leerzeichen in Dateinamen durch Unterstrich ersetzen
rename 's/ /_/g' * .*
# JPG -> jpg
rename 's/JPG/jpg/g' * .*
# Fotos verkleinern auf maximale Größe
# for bild in *.jpg; do convert $bild -resize '1440x1152' -quality 85% small/$bild; done;
echo ""
echo "Fotos für Diashow optimieren:"
for bild in *.jpg
do
echo -n "x"
convert $bild -channel "RGBA" -contrast-stretch 1% -resize "$GROESSE" -quality 92% small/$bild
done
echo ""
echo "Fertig! Die Ergebnisse befinden sich nun im Verzeichnis: $ZIELVERZEICHNIS/small"
echo "Sie können die Fotos auf Ihren Raspberry Pi kopieren."
Alles anzeigen