Schlagwort-Archive: Linux

Kostenloses Linux-Skript zur Verschlagwortung (Gastartikel)

Vor einigen Wochen hat mir der Hobbyfotograf Malte Flender eine Email geschickt mit dem Hinweis auf ein von ihm geschriebenes kleines Skript für Linux, welches die Verschlagwortung von Bildern vereinfachen soll.

Er erklärt es so:script-code

„Als Informatik-Student möchte ich gerne die Bilderverwaltung mit Linux-Bordmitteln erledigen. Aus diesem Grund habe ich mir ein kleines Shellscript geschrieben, um die Metadaten der Bilder zu bearbeiten.

Ich weiß, dass kaum jemand Linux zur Bildverarbeitung benutzen wird, aber weil es ja trotz der kleinen Nutzergemeinde jemandem helfen könnte, würde ich das Script auch gerne anderen zukommen lassen.

Deswegen finden sie das Script unter dieser URL:
https://bitbucket.org/snippets/mflender/KBrre

Die Idee von dem Skript ist es, die Verschlagwortung der Bilder unter Linux auf der Kommandozeile zu vereinfachen:

Dazu ruft man es mittels ./meta <Dateiname> auf.
Weil sich der „Copyright Owner“ in der Regel nicht ändert wird er in Zeile 18 fix eingesetzt (muss für den jeweiligen Anwender geändert werden).

Als erstes wird der Dateiname ausgegeben, damit man weiß, welche Datei man gerade bearbeitet.
Nun wird man gefragt, wie denn der Titel des Bildes lauten soll, z.B. „Rote Rose auf grünem Feld“.
Als nächstes fragt das Skript nach den Keywords, z.B. „Rot, Rose, Idylle, Feld, Sommer, u.s.w.“
Zum Schluss werden alle Metadaten des Bildes ausgegeben, so das man sie kontrollieren kann.

Soviel zur Benutzung, technisch passiert dabei Folgendes:
Zeile 23 bis 35 sind nur dazu da, die Eingaben zu prüfen und im Fehlerfalle abzubrechen.
Zeile 38 gibt den Dateinahmen aus.
Zeile 41 und 42 fragen den Benutzer nach Title und Keywords und speichern diese in den Variablen IPTC_Caption und IPTC_Keywords ab.
Danach wird exiftool (geniales Tool von Phil Harvey) aufgerufen, um zunächst alle Metadaten bis auf das ICC-Farbprofil zu löschen (Zeile 45).
Anschließend werden die Adobe-Metadaten nochmals explizit gelöscht, da diese sonst erhalten bleiben (Zeile 46).
In die fast leere Datei wird nun das IPTC-Feld headline und caption-abstract (notwendig für Alamy) auf den abgefragten Wert des Titels gesetzt (Zeile 49 und 50).
Mit den IPTC-Keywords wird in Zeile 53 genauso verfahren.
Zeile 56 fügt noch den Copyright Owner hinzu und Zeile 59 und 61 geben das Ergebnis aus.

Damit erhält man am Ende eine JPG-Datei, die nur noch die für die Anbieter gedachten und wichtigen Informationen enthält,

  • das ICC-Profile (also ob das Bild im sRGB, AdobeRGB, u.s.w. Farbraum vorliegt) und
  • den Titel und die Keywords als IPTC-Daten.

Alle anderen Infos, wie Blende, Objektiv, Brennweite, GPS-Position, u.s.w. sind gelöscht.

Ausprobiert habe ich es mit Fotolia, Shutterstock und Alamy, Alle erkennen die Felder richtig.
Bei Fotolia habe ich auch die Umlaute erfolgreich getestet (Alamy ist ja sowieso auf Englisch).

Eine Idee wäre es, einen „Hinzufügen“ Modus anzubieten, um schon gesetzte Keywords zu erweitern, denn momentan werden beim zweiten Aufruf auf die gleiche Datei die alten Felder einfach ersetzt.

Über „for i in *.JPG ; do meta $i ; done“ kann man das Script auf einen kompletten Ordner mit mehren Bildern anwenden.

Wie gesagt, ich glaube nicht, dass es viele Anwender für solch ein Skript gibt, aber selbst wenn es nur wenigen hilft, ist das schon gut.“

Bildverteilung an Agenturen mittels FTP und Webserver

Heute gibt es mal etwas Sinnvolles zum Basteln für die Informatiker, Programmierer und anderen IT-Berufler unter Euch.
Im Blog von Dreamstime hatte der Softwareentwickler Marco Schwarz mal auf englisch eine Anleitung gepostet, wie man mittels eines eigenen Webservers ein Foto einfach automatisch an verschiedene Bildagenturen schicken kann. Ich bat ihn, diese Anleitung mal ins Deutsche zu übertragen. Viel Spaß beim Lesen und Danke an Marco.
Viele Kabel in Hand
_______ab_hier_schreibt_Marco_____________
Wer kennt das nicht? Da hat man eine arbeitsreiche Woche hinter sich und eine Menge Bilder auf der Festplatte – und nun wollen diese zu den verschiedenen Bildagenturen.
Nehmen wir mal an, 50 Bilder mit einer durchschnittlichen Dateigröße von je 8MB sind zu verteilen. Das sind 400MB die zu jeder Agentur geladen werden müssen. In meinem Fall wäre dies bei 8 Agenturen ein Transfervolumen von ca. 3.2 Gigabyte.
Mit dem ‚traditionellen Weg‘, also Upload zu jeder einzelnen Agentur per FTP-Client, dauert dies bei einer 16MBit DSL-Leitung ca. 9 Stunden (bei 100KB Upload-Geschwindigkeit).
Um dies zu beschleunigen, hatte ich die Idee, meinen Webserver zur Verteilung zu benutzen. Er steht im 1&1-Rechenzentrum und hat eine etwas schnellere Anbindung als ich zu Hause 😉

Zwei Voraussetzungen gibt es für die von mir beschriebene Methode:

  • Der Webserver läuft mit Linux
  • Ein Zugang per SSH ist möglich

Wem das alles nichts sagt oder wer sich keinen Webserver zulegen will, der sollte sich mal picworkflow* ansehen, das Prinzip ist ähnlich.

Nun aber zum Verteilen der Bilder:
  1. Verzeichnis anlegen
    Zuerst sollte man sich ein Verzeichnis für die benötigten Scripte (siehe 2.) sowie die Bilddateien anlegen. Darauf achten, daß dieses nicht im Web-Verzeichnis liegt, wo über den Browser darauf zugegriffen werden kann – ansonsten könnte jemand auf die Benutzer/Passwortinformationen zugreifen!
  2. Scripte anlegen
    Jede Seite erhält ein kleines Script, mit dem die Bilder aus dem aktuellen Verzeichnis zur Agentur geladen werden. Das sieht dann z.B. für die Agentut 123rf so aus:— Start up123rf.sh —

    #!/usr/bin/expect
    set timeout -1
    spawn ftp -v -i submit.123rf.com
    expect „Name (“
    send „der_benutzername_kommt_hierhinn“
    expect „Password:“
    send „und_hier_das_passwortn“
    expect „ftp>“
    send „mput *.jpgn“
    expect „ftp>
    „send „quitn“

    — Ende —

    Die Zeilen mit dem „Start“ und „Ende gehören natürlich nicht mit in das Script.

    Einfach Benutzername und Passwort durch die eigenen Werte ersetzen und schon wird heftig hochgeladen.
    In der spawn-Zeile wird einfach für jede Agentur der entsprechende FTP-Server eingetragen.
    Eventuell müssen die expect-Zeilen etwas angepasst werden, falls der FTP-Server der Agentur andere Meldungen ausgibt.

    Wenn mehrere Dateitypen geladen werden sollen, einfach weitere expect/send für das mput ergänzen, das kann dann z.B. so aussehen:

    expect „ftp>“
    send „mput *.jpgn“
    expect „ftp>“
    send „mput *.zipn“
    expect „ftp>“
    send „mput *.avin“

    Muss in ein Unterverzeichnis auf dem FTP-Server gewechselt werden, folgendes Kommando anpassen und vor die mput-Befehle einfügen:

    expect „ftp>“
    send „cd ein_ftp_unterverzeichnisn“

  3. Liste einiger Bildagenturen mit FTP-Servern
    ftp.shutterstock.com
    upload.dreamstime.com
    submit.fotolia.com
    ftp.canstockphoto.com
    ftp.bigstockphoto.com
    ftp.clipdealer.com

    panthermedia.net
    usw.
    Eventuell müssen die FTP-Zugänge noch bei der jeweiligen Agentur freigeschaltet werden, falls man bis jetzt nur mit dem Webinterface geladen hat.
  4. Haupt-Script zum Aufruf der einzelnen Scripte anlegen
    Man kann die Einzelscripte natürlich von Hand aufrufen, schneller gehts aber mit noch einem kleinen Script:— Start upall.sh —
    #!/bin/bash
    ./upshut.sh
    ./upcan.sh
    ./upbigs.sh
    ./updream.sh
    ./upfotolia.sh
    ./uppanther.sh
    ./upclip.sh
    ./up123rf.sh
    — Ende —

    Der Inhalt variiert natürlich je nach belieferten Agenturen. Die Namen der Scripte müssen denen entsprechen, die bei Schritt zwei vergeben wurden.

    Zum Schluss für alle Scripte den Befehl

    chmod 700 *.sh

    ausführen, damit sie ausführbar, aber nicht für jeden lesbar sind.

  5. Bilder verteilen
    Jetzt kommts: Sind alle Scripte vorhanden, lädt man seine Bilddateien auf den Webserver und ruft das Hauptscript auf:./upall.sh

    Nun kann man zusehen, wie die Verbindungen aufgebaut und die Bilder nacheinander geladen werden. Z. B. bei Shutterstock gibt es schon mal Transferraten von 4-5 Megabyte pro Sekunde – wenn gerade wenig los ist.

  6. Sicherheitshinweis
    Vorsicht mit den Scripten und wo sie abgelegt werden! Sie enthalten Benutzername und Passwort für die Agenturen, das soll nicht in die falschen Hände gelangen!
    Ein Root-Server ist nicht für jeden geeignet, da man diesen selbst verwalten muss! Ein gemanagter Hosting-Vertrag tut es da auch oder ein gemanagter Server.
  7. Beispiele für geeignete Webserver-Angebote
    1&1 Virtual Server (L,XL,XXL)
    1&1 Homepage (Business Pro)
    Hetzner Webhosting (Level 19)
    Hetzner Root Server
    Hetzner Managed Server
* Affiliate-Link