Ein simples Foto- und Videoplayer-Skript erweist sich als so simpel gar nicht und führt zu einer erbitterten Schlacht zwischen zwei Teilen von mir. Am Ende führt ein schmutziger kleiner Hack dazu, dass doch alles so funktioniert wie geplant.
Die Krankheit, die ich am liebsten hätte, wäre eine multiple Persönlichkeitsspaltung. Da könnte man es mal so richtig ausleben – bei unsereins gibt’s keine Entschuldigung, wenn verborgene Teilpersönlichkeiten Amok laufen. Als ich meine Hochzeit vorbereite, sind es bei mir vor allem zwei. Da ist auf der einen Seite der Nerd: der übersprudelnde Bastler, dem zu jeder Frage mindestens drei interessante Techniken einfallen, mit denen man dann auch noch die Möglichkeit hat, die wiederum dieses Teilproblem aufwirft… und so was wollte er immer schon mal programmieren. Am Ende steht er in der Regel ohne praktikable Lösung da, aber mit vielen neuen Spielzeugen. Ihm gegenüber steht der analfixierte Kontrollfreak, für den “perfekt” nicht gut genug ist. Er ist organisiert, tyrannisch, fordernd, ungeduldig und gerät leicht in Panik. Herr 1A eben.
Nun wollen die beiden aber mit mir Hochzeit feiern. In der Romanfabrik, wo wir abends feiern wollen, gibt es einen Beamer mit Leinwand, und der soll Teil der Deko werden. Überhaupt kein Problem, sagt der Nerd: der Laptop spielt den Videoplayer. Dann können wir die selbst gebastelten Filme von unserer Einladungs-DVD einspielen. Und noch ein paar Bollywood-Schnipsel und ähnliches Videozeug. Schön bunt. Will ich nicht, widerspricht Herr 1A, das heißt: will ich auch, aber vor allem will ich, dass die ersten Fotos der Gäste zu sehen sind. Eine Diashow. Ach, das, sagt der Nerd. Dann machen wir das am besten so, dass jedes Medium, das eingesteckt wird, automatisch nach JPEGs durchsucht und kopiert wird und das dann alles in die Diashow wandert. Herr 1A: Aber es darf sich keiner drum kümmern müssen. Es muss alles vollautomatisch gehen. Kein Problem, behauptet der Nerd.
Das Problem ist definiert – aber…
Womit wir bei folgender Aufgabenstellung wären: Ein handelsüblicher Acer-Laptop soll so eingerichtet werden, dass er Fotos und Filme aus einem Ordner auf der Festplatte automatisch wiedergibt. Bildschirmfüllend und wenn möglich mit sanften Überblendungen. (Sie erkennen, wer für diesen Teil verantwortlich war, oder?) Automatisch sollen außerdem alle angeschlossenen USB-Sticks, Kameras, CD-ROMs und Speicherkarten nach neuen Medien durchsucht werden.
Der Nerd will diese Aufgabe natürlich unter Linux lösen – Ehrensache. Schade, dass er keine Ahnung von Shell-Programmierung hat. Er frisst sich also zwei Abende lang durch die entsprechenden Kapitel in “Linux In A Nutshell” – nur, um von 1A den ganzen Linux-Kram am Ende verboten zu kriegen. Linux kann nämlich nicht richtig mit dem TV-Ausgang des Laptops umgehen; das macht nur Schwierigkeiten. 1A hat unterdessen mal nach Software gesucht, die seinen hohen Anforderungen genügt – und ist bei IrfanView zunächst fündig geworden, hat das Programm dann als unhandlich verworfen und XnView in Betracht gezogen (“Super!” ruft der Nerd dazwischen. “Das gibt’s auch als Linux!”) , das wiederum ist so gut wie nicht dokumentiert und lässt sich nicht überreden, per Kommandozeile eine Diashow abzuspielen. Also zurück zu IrfanView; das kann ganze Ordner abspielen – oder Dateien zeilenweise interpretieren und abarbeiten. Perrr-fekt. Nun, nicht ganz: IrfanView kann nämlich ebenfalls nicht mit dem TV-Ausgang und schneidet ein wenig vom Desktop ab; da dies aber praktisch nicht zu bemerken ist, akzeptiert Herr 1A zähneknirschend diesen faulen Kompromiss.
Nun ist die Reihe wieder am Nerd. Von Shellskript-Programmierung hat er natürlich noch weniger Ahnung, aber nach kurzer Querrecherche im Netz (unter anderem hier und hier, absolut nötige Dokumentation als Download (bei Microsoft) hier und (dank dieseyer.de) hier; ein netter Editor hier) fühlt er sich fit genug, einige Skripte zusammenzuklauben – und tatsächlich: es dauert nur zwei Tage, und es sind halbwegs lauffähige Shellskripte entstanden.
Allerdings mit einigen Schönheitsfehlern.
“So kann das nicht bleiben”, tobt Herr 1A, “die kann man ja gar nicht mehr abbrechen, die Show, wenn sie einmal läuft!” Auch dass der Laptop gelegentlich ganz aus der Skript-Verarbeitung aussteigt, beruhigt ihn eher nicht. Wenn man neu starten muss – läuft dann das “Hol-alle-Bilder”-Skript noch im Hintergrund? Bitte das auch nicht per Autostart starten, sondern vom anderen Skript aus lostreten. Und bitte, bitte ein “Not-Aus”, das alles sofort abbricht – die Lösung des Nerds, dem Skript über eine Datei “Stoptoken.txt” im Ordner zu signalisieren, dass es genug getan hat, hält er für irrsinnig.
Also pfuscht der Nerd aus Beispielprogrammen noch ein Skript Nummer 3 zusammen, das “Stoppe alle Skripte”-Skript. Es ist das Skript, von dem er am wenigsten kapiert, was es tut – und es funktioniert erstaunlicherweise schon beim ersten Programmdurchlauf. Die anderen Skripte machen dagegen immer noch Sorgen: kann es sein, dass irgendwie nicht alle Bilder dargestellt werden, die neu im Ordner landen? “Egal”, dekretiert Herr 1A, der ohnehin schon am Rand des Nervenzusammenbruchs ist und einen oberfaulen Kompromiss dem kompletten Scheitern des Projekts vorzieht. “Jetzt wird nicht mehr programmiert: Hauptsache, irgendwas läuft.” Er setzt sich gegen den aufmüpfigen Nerd durch – der hat Sendepause.
Irgendwann, am Abend meiner Hochzeit, stehe ich dann in der Romanfabrik, unterhalte mich mit einem Freund und höre auf einmal, wie mir der Nerd laut und deutlich einflüstert, weshalb das blöde Skript nicht so lief, wie es sollte: wenn es am Ende des Bilder-Ordners anlangt, ohne dort auf ein Nicht-Bild zu stoßen, wird die bisher erstellte Diashow ungenutzt gelöscht. “Macht aber nix”, sagt der Nerd. “Nenn einfach irgendeine Datei ZZZZZZZZZZ, schieb sie in den Ordner und die Schleife stößt zuletzt immer auf eine Datei, die kein Bild ist.”
Was soll ich sagen: es hat funktioniert.
Die kommentierten Skripte finden sich bald auf einer Extra-Seite.