[geloest] CLI Tool um JPEG IPTC Keywords zu setzen
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
[geloest] CLI Tool um JPEG IPTC Keywords zu setzen
Ich suche ein commandline Tool mit dem ich IPTC Stichwoerter/Keywords von jpeg Bildern setzen kann.
Als erstes hab ich dafuer mal die diesbezueglichen Funktionen von ImageMagick angesehen, dies ist aber laut Aussagen [1] auf der Mailinglist nicht dazu gemacht diese Arbeit auszufuehren.
[1] http://www.imagemagick.org/pipermail/ma ... 04575.html
http://www.imagemagick.org/pipermail/ma ... 18178.html
Als weitere Idee haette ich noch ein Python Modul [2] gefunden das IPTC Daten von Bildern veraendern kann.
[2] http://pypi.python.org/pypi/IPTCInfo/
Falls sich nichts anderes finden laesst werde ich wohl dieses Python Modul verwenden, wuerde mich aber ueber weitere Tools/Ideen von euch freuen bevor ich mich entscheide.
Hintergrund:
Bisher wurden alle Informationen/Stichwoerter der Bilder im Dateinamen festgehalten, Beispiel:
DeutschlandMuseumArchaeologieKunstDedorf.jpg
Die Suchfunktionen der Bildverwaltungsprogramme [3] scheinen aber nicht gut genug zu sein um jetzt zB alle Bilder mit Bedorf und Museum im Dateinamen zu finden. Wuerde dies als IPTC Daten festgehalten worden sein koennte man dies leichter finden.
[3] getestet: picasa
ACDSee
xnview
Es sollen dann damit ~50.000 Dateien mit IPTC Stichwoerter aufgrund Ihrer Dateinamen versehen werden, wobei ein Stichwort soweit geht bis das naechste Wort beginnt (CamelCase) da man ansonst an das 64 Zeichen Limit von IPTC Keywoerter stoesst. Die oben genannte Datei sollte also mit den 5 Keywords Deutschland, Museum, Archaeologie, Kunst und Dedorf versehen werden. Im Normalfall handelt es sich hier eingentlich um ein Windows System, die Bilder werde ich allerdings unter Linux mit IPTC Daten betanken da ich mich damit besser auskenne (obwohl Python wuerde es auch fuer win geben)
danke
C_A
Als erstes hab ich dafuer mal die diesbezueglichen Funktionen von ImageMagick angesehen, dies ist aber laut Aussagen [1] auf der Mailinglist nicht dazu gemacht diese Arbeit auszufuehren.
[1] http://www.imagemagick.org/pipermail/ma ... 04575.html
http://www.imagemagick.org/pipermail/ma ... 18178.html
Als weitere Idee haette ich noch ein Python Modul [2] gefunden das IPTC Daten von Bildern veraendern kann.
[2] http://pypi.python.org/pypi/IPTCInfo/
Falls sich nichts anderes finden laesst werde ich wohl dieses Python Modul verwenden, wuerde mich aber ueber weitere Tools/Ideen von euch freuen bevor ich mich entscheide.
Hintergrund:
Bisher wurden alle Informationen/Stichwoerter der Bilder im Dateinamen festgehalten, Beispiel:
DeutschlandMuseumArchaeologieKunstDedorf.jpg
Die Suchfunktionen der Bildverwaltungsprogramme [3] scheinen aber nicht gut genug zu sein um jetzt zB alle Bilder mit Bedorf und Museum im Dateinamen zu finden. Wuerde dies als IPTC Daten festgehalten worden sein koennte man dies leichter finden.
[3] getestet: picasa
ACDSee
xnview
Es sollen dann damit ~50.000 Dateien mit IPTC Stichwoerter aufgrund Ihrer Dateinamen versehen werden, wobei ein Stichwort soweit geht bis das naechste Wort beginnt (CamelCase) da man ansonst an das 64 Zeichen Limit von IPTC Keywoerter stoesst. Die oben genannte Datei sollte also mit den 5 Keywords Deutschland, Museum, Archaeologie, Kunst und Dedorf versehen werden. Im Normalfall handelt es sich hier eingentlich um ein Windows System, die Bilder werde ich allerdings unter Linux mit IPTC Daten betanken da ich mich damit besser auskenne (obwohl Python wuerde es auch fuer win geben)
danke
C_A
Zuletzt geändert von C_A am 19.08.2008 21:19:03, insgesamt 1-mal geändert.
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Hi!
Hast Du dir schon *exiftool* angesehen?
http://www.sno.phy.queensu.ca/~phil/exiftool/
Ist im Prinzip ein Perl-Modul, wird aber auch als fertiges Script installiert und ist als Package unter Debian verfügbar.
Es gibt aber auch eine Standalone-Exe Version für Windows.
Gruß,
Joachim.
Hast Du dir schon *exiftool* angesehen?
http://www.sno.phy.queensu.ca/~phil/exiftool/
Ist im Prinzip ein Perl-Modul, wird aber auch als fertiges Script installiert und ist als Package unter Debian verfügbar.
Es gibt aber auch eine Standalone-Exe Version für Windows.
Gruß,
Joachim.
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Damit kann man IPTC Keywords setzen die laenger als 64 Zeichen sind - ob da nicht irgendwo ein Programm abstuerzt...
Auch komisch: Die manpage sagt funktionieren tuts aber nur mit
Code: Alles auswählen
exiftool -IPTC:Keywords=Cah2aiQuo8Ud4yohchoe2bue8ieso8iejibahlik5la7teiQuu8EiBew3aem1ieXo bcf.jpg
Auch komisch: Die manpage sagt
Code: Alles auswählen
-1IPTC:Keywords
Code: Alles auswählen
-IPTC:Keywords
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Na ja, falls ein Programm keinen Rangecheck machen sollte...
Aber wer weiß.
Die Manpage habe ich jetzt leider nicht im Zugriff. Aber lt. Doku der Homepage funktioniert es mit "-IPTC:"
Aber wer weiß.
Die Manpage habe ich jetzt leider nicht im Zugriff. Aber lt. Doku der Homepage funktioniert es mit "-IPTC:"
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Ja weiter unten in der manpage stehts dann nochmal ohne der 1.
Fragt sich nur noch wie man in der bash aus einem langen CamelCase Wort die einzelnen Woerter raussplitted, bei dem Gedanken denke ich auch gern daran das ganze in Python zu machen *g
btw: gibts in Python dafuer schon eine Funktion um aus CamelCase ein Array ['Camel', 'Case'] zu machen?
Fragt sich nur noch wie man in der bash aus einem langen CamelCase Wort die einzelnen Woerter raussplitted, bei dem Gedanken denke ich auch gern daran das ganze in Python zu machen *g
btw: gibts in Python dafuer schon eine Funktion um aus CamelCase ein Array ['Camel', 'Case'] zu machen?
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Python ist jetzt nicht so mein Ding. Aber eine Funktion in Perl würd mir auch nicht einfallen...
gibt's aber bestimmt auch eleganter...
Code: Alles auswählen
sub camel_case_split;
my $string = 'CamelCaseHagenDortmundBonn';
for (camel_case_split($string)) {
print $_ . "\n";
}
#-----
sub camel_case_split {
my @a = split /([A-Z])/, shift;
my $i = 0;
my @words;
while ($i < @a) {
if ($a[$i] =~ /.+/) {
push @words, $a[$i] . $a[++$i];
}
$i+=1;
}
@words;
}
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Hab nach langem suchen doch noch was gefunden:
Fehlen noch die Zahlen..
Wie man exiftool so aufruft dass er in einem Schlag mehrere Keywords hinzufuegt hab ich auch noch nicht entdeckt.
und
funktioniert zwar aber dann interpretiert er es als ein Stichwort und nicht zwei. Ansonsten bleibt mir nur das wiederholte aufrufen mit += anstatt nur = das ist bei vielen Dateien zeitaufwaendig.
Code: Alles auswählen
def split_uppercase(string):
return re.sub(r'([a-z])([A-Z])', r'\1 \2', string)
Wie man exiftool so aufruft dass er in einem Schlag mehrere Keywords hinzufuegt hab ich auch noch nicht entdeckt.
Code: Alles auswählen
exiftool -IPTC:Keywords="bla, blue" a.jpg
Code: Alles auswählen
exiftool -IPTC:Keywords='bla, blue' a.jpg
Re: CLI Tool um JPEG IPTC Keywords zu setzen
gefällt mir. denn das Gute liegt so nah
(und ist manchmal so einfach)
Gruß,
Joachim.
(und ist manchmal so einfach)
Code: Alles auswählen
sub camel_case_split {
$_[0] =~ s/([a-z])([A-Z])/$1 $2/g;
split / /, $_[0]; # fuers array
}
Joachim.
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Optimal ist diese Splitfunktion noch nicht, ich hab noch ein paar replaces von _-,+ reingepackt.
Sachen wie "GROSSESHaus" zu spliten bleibt noch ungeloest damit kann ich aber leben da die Suche in IPTC Stichwoertern wie grep zu funktionieren scheint.
Die bisher funktionierende Version sieht so aus:
http://nopaste.debianforum.de/10460
btw: die nopaste Seite ist fast nicht lesbar - sorry
Jetzt moechte ich es - da ich schon python verwende - ganz OS unabhaengig machen.
Dazu muesste ich die Verwendung von 'find' (Zeile 35) durch eine python Funktion ersetzen und anstatt exiftools das IPTCinfo Modul [1] verwenden und hoffe dadurch auch eine Geschwindigkeitssteigerung zu erziehlen. Weiss aber nicht in wieweit ich dem IPTCInfo Modul vertrauen soll wenn es sich erst in '3 - Alpha' Entwicklungsstatus befindet.
[1] http://pypi.python.org/pypi/IPTCInfo/
Falls also jemand eine Funktion in python kennt die mir bei der Ersetzung des 'find /dir -type f -name "*.jpg"' helfen kann waere das super.
[edit]
bzgl. rekursive Suche mit Pattern hab ich was gefunden:
http://code.activestate.com/recipes/499305/
Sachen wie "GROSSESHaus" zu spliten bleibt noch ungeloest damit kann ich aber leben da die Suche in IPTC Stichwoertern wie grep zu funktionieren scheint.
Die bisher funktionierende Version sieht so aus:
http://nopaste.debianforum.de/10460
btw: die nopaste Seite ist fast nicht lesbar - sorry
Jetzt moechte ich es - da ich schon python verwende - ganz OS unabhaengig machen.
Dazu muesste ich die Verwendung von 'find' (Zeile 35) durch eine python Funktion ersetzen und anstatt exiftools das IPTCinfo Modul [1] verwenden und hoffe dadurch auch eine Geschwindigkeitssteigerung zu erziehlen. Weiss aber nicht in wieweit ich dem IPTCInfo Modul vertrauen soll wenn es sich erst in '3 - Alpha' Entwicklungsstatus befindet.
[1] http://pypi.python.org/pypi/IPTCInfo/
Falls also jemand eine Funktion in python kennt die mir bei der Ersetzung des 'find /dir -type f -name "*.jpg"' helfen kann waere das super.
[edit]
bzgl. rekursive Suche mit Pattern hab ich was gefunden:
http://code.activestate.com/recipes/499305/
- C_A
- Beiträge: 1082
- Registriert: 22.04.2004 14:51:01
- Lizenz eigener Beiträge: GNU General Public License
Re: CLI Tool um JPEG IPTC Keywords zu setzen
Jetzt hab ich mal eine grundlegend funktionierende Vorabversion [1] mit den Aenderungen die ich machen wollte (find und exiftools ersetzt). Und von der Geschwindigkeit kommt es mir jetzt auch schneller vor.
[1] http://nopaste.debianforum.de/10468
Ich habe aber noch Probleme mit Woerter die Umlaute beinhalten, denn diese werden dann nicht richtig angezeigt. Manuelles setzen von Stichwoertern mit Umlauten in XnView ist aber ohne Fehler moeglich, es muss also an meinem Python Script liegen.
http://nopaste.debianforum.de/10470
Zeile 2 zeigt wie es sein sollte (ueber XnView gesetzt), Zeile 6 zeigt wie es ist (ueber Python gesetzt).
Ich wollte mir die auf der Modulseite [2] erwaehnten Variablen IPTCInfo.in_charset bzw out_charset ansehen, mit print kann man die jedenfalls nicht ausgeben
[2] http://pypi.python.org/pypi/IPTCInfo/
Wenn jemand einen Tipp zu dieses Zeichensatzproblem hat waer das super
[edit]
war des Raetzels Loesung
[1] http://nopaste.debianforum.de/10468
Ich habe aber noch Probleme mit Woerter die Umlaute beinhalten, denn diese werden dann nicht richtig angezeigt. Manuelles setzen von Stichwoertern mit Umlauten in XnView ist aber ohne Fehler moeglich, es muss also an meinem Python Script liegen.
http://nopaste.debianforum.de/10470
Zeile 2 zeigt wie es sein sollte (ueber XnView gesetzt), Zeile 6 zeigt wie es ist (ueber Python gesetzt).
Ich wollte mir die auf der Modulseite [2] erwaehnten Variablen IPTCInfo.in_charset bzw out_charset ansehen, mit print kann man die jedenfalls nicht ausgeben
[2] http://pypi.python.org/pypi/IPTCInfo/
Wenn jemand einen Tipp zu dieses Zeichensatzproblem hat waer das super
[edit]
Code: Alles auswählen
info.out_charset=info.inp_charset