Datum in die EXIF-Metadaten eintragen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Datum in die EXIF-Metadaten eintragen

Beitrag von inne » 02.01.2019 16:25:11

Hallo,

ich habe in meiner Fotosammlung Bilder aus WhatsApp-Chats. In diesen Bildern, fehlen die Metadaten, wie das Datum der Aufnahme usw. Sodass ich mein Fotoalbum nicht mit exiftool aus libimage-exiftool-perl sortieren kann.

Die Dateien tragen aber das Datum der Übertragung(?) im Namen, nach dem Muster: IMG-YYYYMMDD-WANNNN.jpg. Das NNNN ist ein einfacher Zähler nehmen ich an, der Rest ist Jahr, Monat, Tag. Wie bekomme ich das Datum aus dem Dateinamen, am bequemsten in die Metadaten überragen?

Beispielnamen:

Code: Alles auswählen

$ ls -1v * | grep WA
IMG-20181010-WA0003.jpg
IMG-20181010-WA0005.jpg
IMG-20181010-WA0019.jpg
IMG-20181010-WA0021.jpg
IMG-20181011-WA0013.jpg
IMG-20181011-WA0014.jpg
IMG-20181011-WA0015.jpg
IMG-20181011-WA0017.jpg
IMG-20181011-WA0019.jpg
IMG-20181011-WA0096.jpg

DeletedUserReAsG

Re: Datum in die EXIF-Metadaten eintragen

Beitrag von DeletedUserReAsG » 02.01.2019 16:31:58

awk und exiftool wären mein Ansatz, wenn’s schnell gehen soll.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Datum in die EXIF-Metadaten eintragen

Beitrag von inne » 02.01.2019 16:36:52

Der Code soll funktionieren, aber von 3ten auch verstanden werden können..
niemand hat geschrieben: ↑ zum Beitrag ↑
02.01.2019 16:31:58
awk
Mit RegEx finde *ich* da keine Lösung (Habe aber auf so etwas wie einen Einzeiler fürs Makefile gehofft). Bleiben nur die Stringfunktionen, aber das ist für mich eine Wochenendausgabe in Perl :-)

DeletedUserReAsG

Re: Datum in die EXIF-Metadaten eintragen

Beitrag von DeletedUserReAsG » 02.01.2019 16:42:51

Kannst auch cut und als Delimiter die ›-‹ nehmen. Ist vielleicht noch fixer gemacht.

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Datum in die EXIF-Metadaten eintragen

Beitrag von heisenberg » 02.01.2019 16:53:05

Mit Bash-Substrings könnte das gehen ...

Code: Alles auswählen

file="IMG-20181011-WA0096.jpg"
year=${file:4:4}
month=...
...
... oder auch mit regexen...

Code: Alles auswählen

file="IMG-20181011-WA0096.jpg"
[[ $file =~ ([12][0-9]{3})([0-9]{2})([0-9]{2}) ]]
year=${BASH_REMATCH[1]}
month=...
...
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Datum in die EXIF-Metadaten eintragen

Beitrag von inne » 05.01.2019 12:40:06

Danke! Ich nehme da nun die BASH für:

Code: Alles auswählen

#!/bin/bash
for f
do

	basename="$(basename "$f")"
	
	if ! echo $basename | grep -E "IMG-[0-9]{8}-WA[0-9]{4}.jpg"; then

		echo "Filename dosn't match whatsapp pattern: $f" >&2
		continue
	fi

	y=${basename:4:4}
	m=${basename:8:2}
	d=${basename:10:2}

	#exiftool -DateTimeOriginal="$y:$m:$d 00:00:00" "$f"
	exiftool -AllDates="$y:$m:$d 00:00:00" "$f"

done
Wenn es aber keine Übereinstimmung auf *WA* gibt, bekommen ich diesen Fehler:

Code: Alles auswählen

$ bash ~/bin/foo.sh *WA*
Filename dosn't match whatsapp pattern: *WA*
Ich dachte die For-Schleife, wird dann einfach übergangen weil alle Argumente leer sind :-/

Antworten