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 bear­bei­ten.

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 las­sen.

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 ver­ein­fa­chen:

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 wer­den).

Als ers­tes wird der Dateiname aus­ge­ge­ben, damit man weiß, wel­che Datei man gera­de bear­bei­tet.
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­ni­sch pas­siert dabei Folgendes:
Zeile 23 bis 35 sind nur dazu da, die Eingaben zu prü­fen und im Fehlerfalle abzu­bre­chen.
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 son­st 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 genauso ver­fah­ren.
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 ent­hä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 rich­tig.
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 anwen­den.

Wie gesagt, ich glau­be nicht, dass es vie­le Anwender für sol­ch 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­li­sch eine Anleitung gepos­tet, wie man mit­tels eines eige­nen Webservers ein Foto ein­fach auto­ma­ti­sch 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ög­li­ch

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

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 zugrei­fen!
  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­li­ch nicht mit in das Script.

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

    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 aus­se­hen:

    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 ein­fü­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 anle­gen
    Man kann die Einzelscripte natür­li­ch 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­li­ch je nach belie­fer­ten Agenturen. Die Namen der Scripte müs­sen denen ent­spre­chen, die bei Schritt zwei ver­ge­ben wur­den.

    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 gelan­gen!
    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