andreas streim

buchstaben, wörter, sätze & mehr

Schlagwort: Python

Wir basteln uns einen RSS-Feed

Es kommt immer mal wieder vor, dass eine Seite, auf der regelmäßige Infos veröffentlicht werden, über keinen RSS-Feed verfügt. Das kann viele Gründe haben, manchmal sind die Wege des eingesetzten CMS einfach unergründlich.

Man kann sich aber von fast jeder Seite zum Glück selbst einen RSS-Feed basteln – mit etwas Python, mehr braucht es dazu nicht. (Erwähnte ich schon einmal dass ich der Meinung bin, dass jeder Programmieren können sollte, um solche Probleme für den Hausgebrauch zu lösen?).

Das dauert keine Stunde – und wenn man es hier nachliest vielleicht auch nur 20 Minuten.

Weiterlesen

Der Westernheld auf meiner Festplatte

Ich bin ja ein großer Anhänger der These, dass jeder Programmieren können sollte. Weil man so besser die Welt um einen herum verstehen kann (die von Algorithmen geprägt ist) und weil man sich selbst ganz oft ganz viel Arbeit abnehmen kann. Indem man mal schnell ein kleines Programm schreibt, das ein Problem viel besser und effizienter löst als Handarbeit oder irgendwelche fertigen Programme von der Stange. Dabei bin ich ein großer Fan von Python. Eine wunderbar simple Programmiersprache, mit der man rasch mal was hinschludern kann, was einfach funktioniert, oder mit der man auch wirklich schön und elegant am Code feilen kann. Dann hat man ein paar handliche Skripte, die eine unglaublich tolle Datenbank füttern – und dann? Wie kann man sich diese Daten in der Datenbank am besten anschauen, wie kann man etwas damit machen? Früher wäre die Antwort klar gewesen. Man braucht eine Bedieneroberfläche, also ein Programm, das auf dem eigenen Rechner läuft und einem die Daten anzeigt. Früher. Heute ist ja alles Web. Und was liegt näher, die ganze Datenausgabe und Datenverwertung in eine Weboberfläche zu verlagern? Eben. Nix. Deshalb wohnt seit diesem Wochenende ein echter Westernheld auf meiner Festplatte.

Ich habe mir Django installiert. Das Tolle daran: Innerhalb von nicht mal 30 Minuten hatte ich meine erste kleine Webanwendung geschrieben. Zugegeben, noch längst nicht die Oberfläche, die mal über meinen eigenen Daten liegen soll, aber klar ist: So einfach kann es sein, nicht einfach nur eine Website zu erstellen, sondern eine echte Webanwendung. Wer sich selbst mit ein bisschen Python-Grundkenntnissen Django beibringen will, dem lege ich das Buch „Hellowebapp“ ans Herz. Ich habe mir für ein bisschen mehr als 13 Euro die Ebook-Version gekauft. Sicher, es gibt viele Tutorien im Netz, aber keines davon hat mir den einfachen Start so schmackhaft gemacht wie dieses Buch. Es erläutert sicher bei Weitem nicht alle Möglichkeiten, alle Variationen, sondern es führt Schritt für Schritt zu einer eigenen Webapp, die einen vorher klar definierten Funktionsumfang hat. Und, ja, mir gefällt Django. Und, ja, der Kerl geht mir auch schon auf die Nerven. Weil zum Beispiel das Weiterbenutzen einer bereits bestehenden Datenbank nicht so simpel ist, wie es sein sollte. Hätte ich nicht so viel Respekt vor dem Westernheld hätte ich ihn vielleicht auch in den vergangenen zwei Tagen aus Frust schon mal kurz abgeknallt. Aber Frust, hey, das gehört zum Programmieren dazu. Das ist ja das Schöne an der Sache. Auf Probleme stoßen, daran (fast) Verzweifeln und sie schließlich lösen. Oder für alle die, die sich das nicht vorstellen können: Wie ein Sudoku fertigstellen – nur viel besser.

uberMetrics spricht Python

uberMetrics ist ein Start-up aus Berlin, das Online- und Social-Media-Monitoring anbietet. Die angebotenen Tools sind vielfältig, die möglichen Reports umfassend und die aufgeräumte Oberfläche lädt zum Ausprobieren und Stöbern ein. Alles prima.

Aber manchmal will man die Suchergebnisse selbst verarbeiten, zum Beispiel um sie mit Ergebnissen aus anderen Quellen (selbst verschickte Presseinfo des Vortrages etc.) in einem eigenen E-Mail-Newsletter zu verarbeiten. Das Tolle: uberMetrics zwingt einen nicht, das irgendwie durch eine Hintertür über das Auslesen eines PDF-Reports oder so zu erledigen, sondern uberMetrics bietet dazu eine API an. Das Blöde: es gibe eine Umsetzung für Java und ein Beispiel für PHP. Ich will aber Pyhthon.

Bleibt also nur – selber machen. Weiterlesen

Lernt Python statt Latein!

Smartphones gehören für Kinder zum Alltag. Mehr als 80 Prozent von ihnen nutzen die Geräte. Damit unterscheiden sie sich wenig von den Erwachsenen. Und 9 von 10 Schülern bringen ihr Handy auch mit in die Schule, unter anderem zum Musik hören, um Tafelbilder abzufotografieren und (jeder zehnte) auch zum Spicken.

Nicht nur in in der Schule stoßen da Welten aufeinander, die Kids mit Hightech und doch noch viele Lehrer, die damit eher wenig anfangen können. Die ehrwürdige FAZ findet das alles auch ein wenig befremdlich, so befremdlich wie andere Menschen die ironiefreie Verwendung des Wortes „Schulhaus“.

Aber das alles ist nur die Spitze des Eisberges. Die Ausstattung der Schulen mit IT ist hierzulande erbärmlich. Ja, es gibt fast überall PCs, aber bei modernen Digitalgeräten wie Tablet oder E-Book-Reader sieht es tieftraurig aus. Und genutzt werden selbst die Geräte, die vorhanden sind, so viel seltener als die Fotokopie. Das haben zwei umfangreiche repräsentative Schüler- und Lehrerbefragungen ergeben, die ich beim BITKOM mit konzipiert habe, und die heute als zusammengefasster Studienbericht veröffentlicht wurden [Download kostenlos].

Kinder, lernt das lesen

Kinder, lernt das lesen

Was kann man daraus lernen? Das Schüler im Jahr 2015 in der Schule lieber eine Programmiersprache wie Java oder PHP lernen sollten anstatt Latein. Das sagt BITKOM-Vizepräsident und Arvato-Chef Achim Berg. Und damit spricht er mir aus dem Herzen – auch wenn ich persönlich für Python plädieren würde. Ich wünsche mir, dass meine Kinder in ihrer Schulkarriere in einem Pflichtfach Informatik eine solche Sprache des Digitalzeitalters vermittelt bekommen. Und bitte nicht adäquat zur PC-Ausstattung mancher Schulen Turbo Pascal. Wobei das immer noch besser wäre als nix.

So viele neue Fotos

Ich fotografiere mit meiner Nikon D70 im RAW-Format (also: NEF), gleichzeitig wird jeweils ein eher unansehnliches JPG-Format des Bildes auf der Speicherkarte abgelegt. Wenn ich die Bilder nun auf meinen Notbeook kopiere (Linux, Ubuntu), dann schaue ich die JPG-Bilder mit einem Bildbetrachter durch (geht einfach schneller als das aufwändige RAW-Format). Was absolut nix taugt (unscharf, wer ins Motiv gelaufen, Augen zu etc.) wird dann gelöscht. Also das JPG.

Jetzt wäre es schön, wenn nach dieser Auswahl die NEF-Dateien, die zu den gelöschten JPG-Bildern gehören, auch verschwinden würden. Und am besten alle anderen JPG-Dateien auch. Denn dann wären nur noch die brauchbaren Bilder im NEF-Format übrig und ich könnte DxOptics Pro, mein bevorzugtes Bild-Optimierungs-Tool, auf die ausgewählten Fotos loslassen.

Voilà, dieses kleine Script sollte das tun:

import os
import glob

for pathname in glob.glob("./*.NEF"):
   basename=os.path.basename(pathname)
   dirname=os.path.dirname(pathname)
   filename=basename.split(".")[0]
   ext=basename.split(".")[1]

   if not os.path.exists("./"+filename+".JPG"):
      os.system ("rm \"%s\"" % (pathname))
   else:
      os.system ("rm \"%s\"" % ("./"+filename+".JPG"))

Ich bleibe dabei: Ein paar rudimentäre Programmierkenntnisse können das Leben leichter machen.

Ein XML für Timeline aus einem CSV erstellen

Es gibt ein nettes Tool namens Timeline, mit dem man auf recht einfache Art und Weise eine Zeitleiste bauen kann, die sich in eine Webseite einbinden lässt. Das Schöne daran, verglichen mit optisch sicherlich beeindruckenderen Diensten wie Dipity: es kann komplett auf dem eigenen Server stattfinden, kein fremder (möglicherweise kostenpflichtiger) Dienstleister wird benötigt.

Füttern muss man SIMILE-Widgets Timeline zum Beispiel mit einem XML, die die darzustellenden Ereignisse enthält. Das von Hand zu schreiben ist mindestens lästig. Das untenstehende Python-Script baut aus einer aus einer Google-Doc-Tabelle (oder Excel-Tabelle) kommaseparierten CSV-Datei ein passendes XML. Dabei müssen die Spalten in folgender Reihenfolge enthalten sein:

  • Datum
  • Enddatum, so vorhanden
  • Titel des Ereignisses
  • Beschreibung des Ereignisses
  • Link-Url, so vorhanden
  • Bild-Url, so vorhanden

Man könnte jetzt sicher noch einen automatischen Upload per Ftp der fertigen XML bauen, aber das spare ich mir an dieser Stelle.

import csv
import datetime

srcfile='C:\\Dokumente und Einstellungen\\streiman\\Desktop\\Timeline\\bbi-raw.csv'
destfile='C:\\Dokumente und Einstellungen\\streiman\\Desktop\\Timeline\\bbi-neu.xml'

myCsv = csv.reader(open(srcfile, 'rb'), delimiter=',', quotechar='"')

f = open(destfile, 'w')
f.write("\n")

title=myCsv.next() # in der ersten Zeile stehen die Spaltennamen

for row in myCsv:
    f.write("\n")
    startdate=datetime.datetime.strptime(row[0], "%d.%m.%Y").strftime("%b %d %Y 00:00:00 GMT-0600")
    f.write("start=\""+startdate+"\"\n")
    if not row[1]=="":
        enddate=datetime.datetime.strptime(row[1], "%d.%m.%Y").strftime("%b %d %Y 00:00:00 GMT-0600")
        f.write("end=\""+enddate+"\"\n")
        f.write("isDuration=\"true\"\n")

    f.write("title=\""+row[2]+"\"\n")

    if len(row)>4:
        if not row[4]=="":
            f.write("link=\""+row[4]+"\"\n")
    if len(row)>5:
        if not row[5]=="":
            f.write("image=\""+row[5]+"\"\n")

    f.write(">\n")
    if len(row)>3:
        f.write(row[3]+"\n")

    f.write("\n")

f.write("\n")
f.close()

© 2018 andreas streim

Theme von Anders NorénHoch ↑