Schlagwort-Archive: Linux

Kostenloses Linux-​Skript zur Verschlagwortung (Gastartikel)

Vor eini­gen Wochen hat mir der Hobbyfotograf Malte Flender eine Email geschickt mit dem Hinweis auf ein von ihm geschrie­be­nes klei­nes Skript für Linux, wel­ches die Verschlagwortung von Bildern ver­ein­fa­chen soll.

Er erklärt es so:script-code

Als Informatik-​Student möch­te ich ger­ne die Bilderverwaltung mit Linux-​Bordmitteln erle­di­gen. Aus die­sem Grund habe ich mir ein klei­nes Shellscript geschrie­ben, um die Metadaten der Bilder zu bearbeiten.

Ich weiß, dass kaum jemand Linux zur Bildverarbeitung benut­zen wird, aber weil es ja trotz der klei­nen Nutzergemeinde jeman­dem hel­fen könn­te, wür­de ich das Script auch ger­ne ande­ren zukom­men lassen.

Deswegen fin­den sie das Script unter die­ser 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 mit­tels ./​meta <Dateiname> auf.
Weil sich der „Copyright Owner“ in der Regel nicht ändert wird er in Zeile 18 fix ein­ge­setzt (muss für den jewei­li­gen Anwender geän­dert werden).

Als ers­tes wird der Dateiname aus­ge­ge­ben, damit man weiß, wel­che Datei man gera­de bearbeitet.
Nun wird man gefragt, wie denn der Titel des Bildes lau­ten soll, z.B. „Rote Rose auf grü­nem Feld“.
Als nächs­tes fragt das Skript nach den Keywords, z.B. „Rot, Rose, Idylle, Feld, Sommer, u.s.w.“
Zum Schluss wer­den alle Metadaten des Bildes aus­ge­ge­ben, so das man sie kon­trol­lie­ren kann.

Soviel zur Benutzung, tech­nisch pas­siert 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 fra­gen den Benutzer nach Title und Keywords und spei­chern die­se in den Variablen IPTC_​Caption und IPTC_​Keywords ab.
Danach wird exif­tool (genia­les Tool von Phil Harvey) auf­ge­ru­fen, um zunächst alle Metadaten bis auf das ICC-​Farbprofil zu löschen (Zeile 45).
Anschließend wer­den die Adobe-​Metadaten noch­mals expli­zit gelöscht, da die­se sonst erhal­ten blei­ben (Zeile 46).
In die fast lee­re Datei wird nun das IPTC-​Feld head­line und caption-​abstract (not­wen­dig für Alamy) auf den abge­frag­ten Wert des Titels gesetzt (Zeile 49 und 50).
Mit den IPTC-​Keywords wird in Zeile 53 genau­so verfahren.
Zeile 56 fügt noch den Copyright Owner hin­zu 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 gedach­ten und wich­ti­gen Informationen enthält,

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

Alle ande­ren Infos, wie Blende, Objektiv, Brennweite, GPS-​Position, u.s.w. sind gelöscht.

Ausprobiert habe ich es mit Fotolia, Shutterstock und Alamy, Alle erken­nen die Felder richtig.
Bei Fotolia habe ich auch die Umlaute erfolg­reich getes­tet (Alamy ist ja sowie­so auf Englisch).

Eine Idee wäre es, einen „Hinzufügen“ Modus anzu­bie­ten, um schon gesetz­te Keywords zu erwei­tern, denn momen­tan wer­den beim zwei­ten Aufruf auf die glei­che Datei die alten Felder ein­fach ersetzt.

Über „for i in *.JPG ; do meta $i ; done“ kann man das Script auf einen kom­plet­ten Ordner mit meh­ren Bildern anwenden.

Wie gesagt, ich glau­be nicht, dass es vie­le Anwender für solch ein Skript gibt, aber selbst wenn es nur weni­gen 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 ande­ren IT-​Berufler unter Euch.
Im Blog von Dreamstime hat­te der Softwareentwickler Marco Schwarz mal auf eng­lisch eine Anleitung gepos­tet, wie man mit­tels eines eige­nen Webservers ein Foto ein­fach auto­ma­tisch an ver­schie­de­ne Bildagenturen schi­cken kann. Ich bat ihn, die­se Anleitung mal ins Deutsche zu über­tra­gen. Viel Spaß beim Lesen und Danke an Marco.
Viele Kabel in Hand
_​_​_​_​_​_​_​ab_​hier_​schreibt_​Marco_​_​_​_​_​_​_​_​_​_​_​_​_​
Wer kennt das nicht? Da hat man eine arbeits­rei­che Woche hin­ter sich und eine Menge Bilder auf der Festplatte – und nun wol­len die­se zu den ver­schie­de­nen Bildagenturen.
Nehmen wir mal an, 50 Bilder mit einer durch­schnitt­li­chen Dateigröße von je 8MB sind zu ver­tei­len. Das sind 400MB die zu jeder Agentur gela­den wer­den müs­sen. In mei­nem Fall wäre dies bei 8 Agenturen ein Transfervolumen von ca. 3.2 Gigabyte.
Mit dem ‚tra­di­tio­nel­len Weg‘, also Upload zu jeder ein­zel­nen Agentur per FTP-​Client, dau­ert dies bei einer 16MBit DSL-​Leitung ca. 9 Stunden (bei 100KB Upload-Geschwindigkeit).
Um dies zu beschleu­ni­gen, hat­te ich die Idee, mei­nen Webserver zur Verteilung zu benut­zen. Er steht im 1&1‑Rechenzentrum und hat eine etwas schnel­le­re Anbindung als ich zu Hause 😉

Zwei Voraussetzungen gibt es für die von mir beschrie­be­ne Methode:

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

Wem das alles nichts sagt oder wer sich kei­nen Webserver zule­gen will, der soll­te sich mal pic­work­flow* anse­hen, das Prinzip ist ähnlich.

Nun aber zum Verteilen der Bilder:
  1. Verzeichnis anle­gen
    Zuerst soll­te man sich ein Verzeichnis für die benö­tig­ten Scripte (sie­he 2.) sowie die Bilddateien anle­gen. Darauf ach­ten, daß die­ses nicht im Web-​Verzeichnis liegt, wo über den Browser dar­auf zuge­grif­fen wer­den kann – ansons­ten könn­te jemand auf die Benutzer/​Passwortinformationen zugreifen!
  2. Scripte anle­gen
    Jede Seite erhält ein klei­nes Script, mit dem die Bilder aus dem aktu­el­len Verzeichnis zur Agentur gela­den wer­den. Das sieht dann z.B. für die Agentut 123rf so aus:— Start up123rf.sh —

    #!/​usr/​bin/​expect
    set time­out ‑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ür­lich nicht mit in das Script.

    Einfach Benutzername und Passwort durch die eige­nen Werte erset­zen und schon wird hef­tig hochgeladen.
    In der spawn-​Zeile wird ein­fach für jede Agentur der ent­spre­chen­de FTP-​Server eingetragen.
    Eventuell müs­sen die expect-​Zeilen etwas ange­passt wer­den, falls der FTP-​Server der Agentur ande­re Meldungen ausgibt.

    Wenn meh­re­re Dateitypen gela­den wer­den sol­len, ein­fach wei­te­re expect/​send für das mput ergän­zen, 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 gewech­selt wer­den, fol­gen­des Kommando anpas­sen und vor die mput-​Befehle einfügen:

    expect „ftp>“
    send „cd ein_ftp_unterverzeichnisn“

  3. Liste eini­ger 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üs­sen die FTP-​Zugänge noch bei der jewei­li­gen Agentur frei­ge­schal­tet wer­den, falls man bis jetzt nur mit dem Webinterface gela­den hat.
  4. Haupt-​Script zum Aufruf der ein­zel­nen Scripte anlegen
    Man kann die Einzelscripte natür­lich von Hand auf­ru­fen, schnel­ler gehts aber mit noch einem klei­nen 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 vari­iert natür­lich je nach belie­fer­ten Agenturen. Die Namen der Scripte müs­sen denen ent­spre­chen, die bei Schritt zwei ver­ge­ben wurden.

    Zum Schluss für alle Scripte den Befehl

    chmod 700 *.sh

    aus­füh­ren, damit sie aus­führ­bar, aber nicht für jeden les­bar sind.

  5. Bilder ver­tei­len
    Jetzt kommts: Sind alle Scripte vor­han­den, lädt man sei­ne Bilddateien auf den Webserver und ruft das Hauptscript auf:./upall.sh

    Nun kann man zuse­hen, wie die Verbindungen auf­ge­baut und die Bilder nach­ein­an­der gela­den wer­den. Z. B. bei Shutterstock gibt es schon mal Transferraten von 4–5 Megabyte pro Sekunde – wenn gera­de wenig los ist.

  6. Sicherheitshinweis
    Vorsicht mit den Scripten und wo sie abge­legt wer­den! Sie ent­hal­ten Benutzername und Passwort für die Agenturen, das soll nicht in die fal­schen Hände gelangen!
    Ein Root-​Server ist nicht für jeden geeig­net, da man die­sen selbst ver­wal­ten muss! Ein gema­nag­ter Hosting-​Vertrag tut es da auch oder ein gema­nag­ter Server.
  7. Beispiele für geeig­ne­te 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