Autor: Mathias Born
Widerspenstige Excel-Datei
Ich versuche mit Python und Pandas eine Excel-Datei zu öffnen, noch im alten .xls-Format. Was normalerweise mit pd.read_excel()
im Handumdrehen erledigt ist, will dieses Mal einfach nicht klappen. Die Fehlermeldung:
XLRDError: Workbook is encrypted
Nach langem Pröbeln habe ich das Problem so gelöst: Ich konvertiere die Datei zuerst mit dem Msoffcrypto-tool
(für die Installation: pip3 install msoffcrypto-tool
). Dabei verwende ich das Standardpasswort VelvetSweatshop
.
msoffcrypto-tool encrypted.xls decrypted.xlsx -p VelvetSweatshop
Die neue Datei kann ich dann ganz normal in Pandas einlesen.
SSH: Name statt Nummer
Ich kann mir Nümmerli schlecht merken. Insbesondere, wenn sie über 10 Ziffern lang sind. Deshalb muss ich die IP-Nummern meiner Server immer nachschlagen, bevor ich eine SSH-Verbindung herstellen kann.
Viel einfacher gehts unter Linux, wenn den einzelnen Servern einmalig Namen zugewiesen werden. Die Namen und die entsprechenden IP-Adressen werden in der config-Datei im Verzeichnis ~/.ssh/ angelegt, etwa mit nano ~/.ssh/config
.
Hier ein Beispiel, wie solche Einträge aussehen könnten. Beim ersten erfolgt das Login per Nutzername und Passwort, beim zweiten mit einem privaten und öffentlichen Schlüssel:
Host meinerstesmaschinli
HostName 192.168.222.22 PubkeyAuthentication no
User meinname
Host meinzweitesmaschinli
HostName 192.168.222.23
IdentityFile ~/.ssh/meinschlüssel
User meinname
Schnippschnapp — so zwackt man beim PDF eine Hälfte ab
Im PDF steckt eine ganze Zeitschrift. Doch ich benötige nur eine Seite. Schlimmer noch: Gefragt ist nur die eine Hälfte der Seite, da jede Seite eigentlich eine Doppelseite beinhaltet. Unter Linux löse ich das Problem in drei Schritten:
Die gewünschte Doppelseite — in diesem Beispiel die Seite 7 — wird extrahiert. Dazu verwende ich das PDF-Toolkit, das sich zum Beispiel unter Ubuntu mit sudo apt install pdftk installieren lässt.
pdftk A=roh.pdf cat A7 output auszug.pdf
Nun wird die Doppelseite mit dem Mutool (installierbar mit sudo apt-get install mupdf-tools) in zwei Seiten unterteilt. Je nach Orientierung der Seite sind die Parameter -x oder -y zu setzen.
mutool poster -x 2 auszug.pdf auszug_1.pdf
Und schliesslich wird die zweite Seite wiederum mit dem PDF-Toolkit abgezwackt.
pdftk A=auszug_1.pdf cat A1 output auszug.pdf
Schon 20 Jahre…
Es war im Jahr 2000: Kurz nachdem ich das erste Studienjahr abgeschlossen hatte, durfte ich bei der Berner Zeitung ein Praktikum machen. Seither arbeite ich dort beziehungsweise bei der Tamedia. Ich könnte nun rapportieren, was in diesen 20 Jahren alles passiert ist, räsonieren und schwadronieren. Da ich in dieser Sache aber höchst befangen bin, drucke ich lieber die Laudatio ab, mit der mich mein Chef überrascht hat. Merci vielmal, Dominik.
Als Mathias Born vor 20 Jahren bei der Berner Zeitung zu schreiben anfing, war die Welt eine andere: This, wie ihn viele nennen, verfasste zum Beispiel Artikel über die damals kritisierte Ausstattung der Schulen mit Computern oder den empfohlenen Gebrauch von Laptops an Universitäten. Er warnte vor Computerwürmern, stellte in der Zeitung die ersten kabellosen Computermäuse vor und testete für die Leserinnen und Leser die neusten DVD-Brenner.
Bei der Berner Zeitung durchlief This mehrere Stationen – doch Dreh- und Angelpunkt seines Schaffens blieben Digitalthemen. Daneben betrieb er lange Jahre den Blog Webflaneur, in dem er den Leserinnen und Lesern die Irrungen und Wirrungen des World Wide Web näherbrachte.
Vor einigen Jahren wurde This Teil des Datenteams von Tamedia – nachdem er sich an der Columbia University in New York das Rüstzeug zum Programmieren geholt hatte. Seither sorgt er mit seinen Geschichten immer wieder für Furore – etwa, wenn er mit automatisierten Analysen belegt, dass die SBB bei den Spartickets Kundinnen und Kunden gewisser Regionen benachteiligen. Oder wenn er Zählstellen an den Autobahnen anzapft, um Autos zu erfassen, die trotz Corona-Krise Richtung Gotthard unterwegs sind.
Wenn This etwas liebt (nebst seinem unsäglich komplizierten Linux-Computer natürlich), dann sind es Sensoren. Stört ihn der Baulärm in der Nachbarschaft, baut er flugs ein Messgerät zusammen (vermutlich ist er auch der einzige Journalist, der löten kann), setzt es auf den Fenstersims, lässt es einige Tage laufen – und schreibt dann einen Artikel darüber.
This ist ein klassischer Early Adopter. Und manchmal seiner Zeit sogar voraus. Wie 2011, als er in der Grippezeit einen aus heutiger Sicht visionären Selbstversuch wagte, sich eine Maske übers Gesicht zog und so zur Arbeit ging. Natürlich liess This auch Daniel Koch (heute besser bekannt als Mister Corona) zu Wort kommen. Kochs sagte damals: «Das Problem ist, dass auf Unverständnis stösst, wer eine Hygienemaske trägt. Und wir können keine Massnahme empfehlen, die aus kulturellen Gründen abgelehnt wird. Zudem brauchen wir dafür zuerst wissenschaftliche Evidenz.»
This’ jüngster Streich ist ein Roboter, der automatisch einen Text generiert, wenn die Aare in Bern eine gewisse Temperatur überschreitet. Auch dieser Roboterjournalismus dürfte immer wichtiger werden.
Diesen Erfindergeist und Einfallsreichtum schätzen wir sehr an This. Wir freuen uns auf viele weitere Taten von ihm.
Dominik Balmer
Cartopy unter Ubuntu
Eigentlich wollte ich bloss rasch die globalen Flugbewegungen abrufen. Doch die Python-Bibliothek traffic
, die ich für den einfachen Zugriff auf Opensky Network verwenden wollte, liess sich mit pip3
unter Ubuntu 18.10 nicht installieren. Das Problem: Sie benötigt die Bibliothek cartopy
. Und diese wiederum setzt auf proj
auf. Letztere liegt gemäss der Fehlermeldung, die beim Installationsversuch angezeigt wird, nicht in der richtigen Version vor.
Proj version 0.0.0 is installed, but cartopy requires at least version 4.9.0.
Nach langem Pröbeln ortete ich das Problem: Bei der Installation wurde vermutlich fälschlicherweise eine andere Bibliothek gefunden. Jedenfalls funktionierte die Installation, nachdem ich die betreffende Bibliothek deinstalliert hatte. Die Schritte im Detail, als Gedankenstütze für den nächsten Installationsversuch.
pip3 uninstall proj
sudo apt-get remove proj-bin
sudo apt-get install proj-bin
pip3 install cartopy
pip3 install traffic
P.s.: Jetzt klappts mit dem Flugzeugzähler. Und zwar in bloss zwei Zeilen.
from traffic.data import opensky
anz_flugi = len(opensky.api_states())
Die Unvollendete
Liebe SBB,
doch — die neue Website gefällt mir recht gut. (Nicht ganz verstanden habe ich, weshalb es nach so kurzer Zeit bereits eine neue brauchte. Aber das soll hier nicht das Thema sein.)
Über ein kleines, für mich aber wichtiges Detail habe ich mich aber mehrfach geärgert: Die im Fahrplan gefundenen Verbindungen lassen sich nicht mehr in den digitalen Kalender importieren. Die .ics-Datei, die ihr liefert, ist fehlerhaft.
Ihr könntet mir das Leben im Handumdrehen (beziehungsweise mit drei Buchstaben) viel einfacher machen. Deshalb meine Bitte: In der letzten Zeile der Datei muss „END:VCALENDAR“ stehen, nicht „END:VCALEN“. Dann gehts wieder. Bitte vollendet die angefangene Programmzeile möglichst zügig.
Mit freundlichen Grüssen, Mathias
P.s.: War eurer Programmierer in Eile? Wollte er zum Znüni, oder musste er auf den Zug?
P.p.s.: Wenn der Programmierer schon daran arbeitet: Könntet ihr noch die Zeitzone integrieren?
Radiostationen in Volumio
Die Musik kommt bei uns ab einem Raspberry Pi, der an die Stereoanlage angeschlossen ist. Auf dem Minirechner läuft die Software Volumio (noch in der Version 1, weil die neuer Version beim WLAN patzt). Darin sind bereits einige Webradio-Stationen eingestellt. Allerdings fehlen jene, die wir gerne hören. Eigentlich sollten sich über die Weboberfläche neue Streams hinzufügen lassen. Allerdings klappte das in unserem Fall nicht.
Die Lösung:
- Die gewünschte Station wird auf der Website VTuner gesucht. Via einen Rechtsklick auf den Link lädt man die Datei herunter, die den Stream startet. Sie hat die Endung m3u. Nun wird sie umbenannt, so dass der Name der Station im Dateinamen steht.
- Anschliessend wird die Datei auf den Volumio kopiert — ins Verzeichnis
/var/lib/mpd/music/WEBRADIO
. Dies erledigt man entweder mit dem Dateimanager (via Samba) oder (unter Linux oder auf dem Mac) direkt von der Kommandozeile aus mitscp *.m3u root@volumio.local:/var/lib/mpd/music/WEBRADIO
. - Nachdem das Webradio-Verzeichnis via die Weboberfläche des Volumios neu indexiert wurde, erscheint die betreffende Station in der Auswahlliste.
Rasch mal ein Video drehen
Ich möchte ein Video drehen. Nein, ich meine nicht drehen im Sinn von filmen, sondern von wirklich drehen, um 90 Grad.
Das Problem: Wir haben eine Live-Übertragung mit der Smartphone-App Periscope gemacht — im Querformat. Da Periscope die Aufzeichnungen nicht archiviert, habe ich sie auf dem Smartphone abgespeichert, um sie in einem zweiten Schritt auf Youtube hochzuladen. Doch leider liegt der exportierte Film quasi auf der Seite.
Der erste Lösungsweg: Ich lade die Datei zu Youtube hoch, klicke auf „Bearbeiten“ und drehe den Film dort. Das Umrechnen dauert aber unheimlich lange. Viel schneller geht es mit dem Linux-Kommandozeilenprogramm ffmpeg. Mit diesem trage ich die richtige Orientierung in den Metadaten des Films ein, ohne die Bilder umzurechnen. Das ist im Nu erledigt. Und Youtube kommt mit der angepassten Datei zurecht. Der entsprechende Befehl:
ffmpeg -i in.mp4 -c copy -metadata:s:v:0 rotate=90 out.mp4
Musik im ganzen Haushalt
An unserer Stereoanlage hängt ein Raspberry Pi. Wir setzen die Platine zum Abspielen von digitaler Musik ein, die auf einem direkt daran angeschlossenen USB-Speicher liegt. Zum Einsatz kommt dabei der Medienplayer Volumio.
Soweit funktioniert alles wie gewünscht. Doch wie kriegen wir die Musik auf andere Geräte wie das Netzwerkradio in der Küche? Leider können die nötigen Einstellungen derzeit nicht über die Weboberfläche der Volumio-Software vorgenommen werden. Nötig sind einige zusätzliche Schritte.
Damit auch andere Geräte, die sich im selben Netzwerk eingebucht haben, auf die Musiksammlung zugreifen können, muss der DLNA-Server aktiviert werden. Dazu bucht man sich via SSH auf dem Volumio ein. Zuerst wird geprüft, ob das Programmpaket Minidlna installiert ist.
dpkg -l minidlna
Falls es noch nicht vorhanden ist, wird es installiert.
sudo apt-get install minidlna
Nun muss eine kleine Änderung in der Konfigurationsdatei vorgenommen werden. Dazu wird die Datei zuerst geladen.
sudo nano /etc/minidlna.conf
In der Datei muss das Verzeichnis eingetragen werden, in dem die Musik liegt. In unserem Fall lautet die Zeile, die den Speicherort definiert, folgendermassen:
media_dir=A,/mnt/USB
Anschliessend wird die Datei mit Ctrl-X gespeichert und MiniDLNA neu geladen:
sudo service minidlna force-reload
Sobald das erledigt ist, kann man mit einem Internet-Radio, dem Smartphone oder Tablet prüfen, ob die Musik nun verfügbar ist. Unter Android benutzt man dazu etwa die App BubleUPNP, unter iOS den Media Link Player Lite.
Vielen Dank an Stephen für die Tipps.