-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexiftune.sh
More file actions
executable file
·138 lines (125 loc) · 5.83 KB
/
exiftune.sh
File metadata and controls
executable file
·138 lines (125 loc) · 5.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
#Dateikonsistenz im Bildarchiv sicherstellen
#erstellt von: Bernhard Albicker, www.bilddateien.de
#Copyright-Vermerke für Bilder hier eintragen:
Fotograf="Bernhard Albicker"
Herausgeber="https://www.bilddateien.de"
Rechte="(c) alle Rechte vorbehalten"
mode=""
while [ mode != "q" ]
do
echo -e "\n*** Operationen an/mit Metadaten von Bilddateien ***\n" #-e wegen der Zeilenumbrüche
echo "Eingebettete JPG-Dateien aus RAW-Dateien extrahieren (e)"
echo "Metadaten aus Bilddateien auslesen und als Text speichern (t)"
echo "Metadaten begrenzen und copyright hinzufügen (m)"
echo "* Script beenden * (q)"
read -p "Auswahl: " mode
echo -e "\n"
startverz="$(pwd)" #Startverzeichnis, von dem aus das Script im Terminal gestartet wurde, "/der/Pfad/nach"
#echo $startverz
verzname="$(basename $startverz)" #Name des letzten Verzeichnisses im Pfad des Startverz., "nach"
#echo $verzname
# https://owl.phy.queensu.ca/~phil/exiftool/exiftool_pod.html#Tag-operations
if [ $mode == "e" ]; then
while [ typ != "q" ]
do
echo -e "\nWelcher Typ des eingebetteten JPG soll ausgelesen werden?\n" #-e wegen der Zeilenumbrüche
echo "alle (a)"
echo "größte Vorschau (g)"
echo "Thumbnail (t)"
echo "Preview (p)"
echo "JPG from RAW (j)"
echo "Other (o)"
echo "* EXIF kopieren * (e)"
echo "* abbrechen * (q)"
read -p "Auswahl: " typ
echo -e "\n"
cd $startverz
if [ ! -d $jpg ]; then
mkdir jpg
fi
if [ $typ == "a" ]; then
#jpg extrahieren im aktuellen Verzeichnis:
exiftool -a -b -W jpg/%f_%t%-c.%s -preview:all $startverz
# war %d%f_%t%-c.%s => [%d]akt. Verz., [%f]Dateiname, [%t]Tagname, [%-c]lfd. Nr., [%s] vorgeschlagene Erweiterung
echo -e "erledigt ...\n"
elif [ $typ == "g" ]; then
if [ ! -d "$big" ]; then
mkdir big
fi
#größtes jpg extrahieren im aktuellen Verzeichnis:
#https://owl.phy.queensu.ca/~phil/exiftool/config.html
for file in *
do
if [ -f "$file" ]; then
echo $file
exiftool -b -BigImage $file > big/${file%.*}_bigImage.jpg
fi
done
echo -e "erledigt ...\n"
elif [ $typ == "t" ]; then
exiftool -b -ThumbnailImage -w jpg/%f_ThumbnailImage%-c.jpg $startverz
echo -e "erledigt ...\n"
elif [ $typ == "p" ]; then
exiftool -b -PreviewImage -w jpg/%f_PreviewImage%-c.jpg $startverz
echo -e "erledigt ...\n"
elif [ $typ == "j" ]; then
exiftool -b -JpgFromRaw -w jpg/%f_JpgFromRaw%-c.jpg $startverz
echo -e "jpgs extrahiert ...\n"
echo -e "erledigt ...\n"
elif [ $typ == "o" ]; then
exiftool -b -OtherImage -w jpg/%f_OtherImage%-c.jpg $startverz
echo -e "erledigt ...\n"
elif [ $typ == "e" ]; then
# Exif-Daten in extrahierte jpgs übertragen
cd $startverz
for file in * #.{nef,rw2,orf}
do
echo $file
exiftool -overwrite_original -TagsFromFile $startverz/$file "-all:all>all:all" $startverz/jpg/${file%.*}_*.jpg
done
echo -e "erledigt ...\n"
elif [ $typ == "q" ]; then
echo -e "\nAuf Wiedersehen ... \n"
break
else
#Benutzer hat sich vertippt - es wird nichts ausgeführt
echo -e "\nFalsche Auswahl, bitte gültige Option wählen\n"
fi
done
elif [ $mode == "t" ]; then
cd $startverz
#xmp-Dateien ausschließen
if [ ! -d $meta ]; then #Unterverzeichnis erstellen, falls nicht vorhanden
mkdir meta
fi
exiftool -lang de -a -G -h -w meta/%f_de%-c.html $startverz
exiftool -s -a -G -w meta/%f_tag%-c.txt $startverz
#Dateien werden in Verz. "meta" gelegt, mit [%file]Filename, angehängt der fest kodierte Inhalt (tag oder de) mit angehängter laufender Bindestrich/Nummer [%-c], falls die Datei schon existiert.
echo -e "erledigt ...\n"
elif [ $mode == "m" ]; then
echo -e "ACHTUNG: Die Dateien im aktuellen Verzeichnis"
echo -e "\t$startverz"
echo -e "werden verändert! Ist das das richtige Verzeichnis?\n"
read -p "(j)a - (n)ein " mjn
if [ $mjn == "j" ]; then
read -p "Dateiendung: " ext
cd $startverz
for file in *.$ext
do
echo $file
exiftool -overwrite_original -all= -tagsFromFile @ -Lens -Make -Model -AFMode -ApertureValue -ExposureCompensation -ExposureTime -FNumber -FocalLength -ISO -Creator -Publisher -Rights $file
exiftool -overwrite_original -Artist="$Fotograf" -Copyright="$Rechte" -Creator="$Fotograf" -Publisher="$Herausgeber" -Rights="$Rechte" $file
done
elif [ $mjn == "n" ]; then
echo "bitte ins richtige Verzeichnis wechseln und Script neu starten"
fi
echo -e "erledigt ...\n"
elif [ $mode == "q" ]; then
echo -e "\nAuf Wiedersehen ... \n"
exit
else
#Benutzer hat sich vertippt - es wird nichts ausgeführt
echo -e "\nFalsche Auswahl, bitte neue Auswahl \n"
fi
done