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())

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 mit scp *.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.

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.

Animiertes GIF unter Linux

Diese Fotoserie der kleinen Tochter rief sprichwörtlich danach, zu einer Animation zusammengehängt zu werden.

Unter Linux ist ein animiertes GIF im Handumdrehen produziert: Man kopiert die Fotos in einen Order; in unserem Fall 8 JPG-Dateien. Dann wechselt man auf die Kommandozeile (Ctrl-Alt-t) und lässt die Bilder von Imagemagick (beziehungsweise dem darin enthaltenen Werkzeug „convert“) in ein GIF umwandeln. Ich habe dabei den untenstehenden Befehl verwendet.

convert -delay 85 loop 0 *.JPG output.gif

Selbstverständlich können die Parameter verändert und bei Bedarf zahlreiche weitere gesetzt werden.

Das animierte GIF habe ich in einen Artikel in unserem privaten Blog verwendet. Unter WordPress ist dabei eines zu beachten: Das GIF-Bild muss in der vollen Grösse eingebunden werden, denn in den vom Blog-System produzierten kleineren Versionen ist die Animation nicht vorhanden.

Screenshot mit Samsung Galaxy S2

Wie macht man einen Screenshot unter Android auf dem Galaxy S2 von Samsung? Erst nach längerem Pröbeln und etwas Googlen habe ich es herausgefunden:

Man drückt die „Home“-Taste (unten in der Mitte) und gleichzeitig die Ausschalttaste (rechte Seite oben). Nun lässt man zuerst die Ausschalttaste und dann die „Home“-Taste los. Das Bildschirmfoto ist nun im Verzeichnis /ScreenCapture zu finden.