Das CLI Tool downloaded die aktuell Ausgabe (oder ältere Ausgaben) der Oldenburgischen Volkszeitung (OV) aus dem ePaper Archiv und generiert ein PDF daraus.
Es gibt zwei Möglichkeiten das Tool zu verwenden. Man kann den Code herunterladen und ausführen (wozu man dart etc. installieren muss) oder man benutzt die binaries, die von GitHub automatisch gebaut werden:
- Die Binary für macOS, Windows oder Linux vom aktuellen Release herunterladen: https://github.com/hauketoenjes/ov_epaper/releases (
ov-mac
,ov-linux
oderov-windows.exe
) - Unter Linux muss die Datei noch ausführbar gemacht werden:
chmod +x ov-linux
- Danach kann man das Tool ausführen und eine Ausgabe zum Download auswählen.
Das Tool basiert darauf, dass die OV einzelne Bilddateien nutzt, um die Zeitung im Web hinter einem Login anzuzeigen. Aus diesen Bilddateien wird dann eine Seite der Zeitung zusammengebaut. Das Interessante ist, dass die Download URL's für die Bilder ohne Login oder Token erreichbar sind. Grundsätzlich ist das kein Problem, diese URL's sind aber vorhersagbar:
Eine typische URL sieht wie folgt aus:
https://oldenburgische-volkszeitung.de/lib/epaper/img/2021/20210719-ov/tiles/a16-21-07-19-ov-01-_01-4c-hp/2-0-0.jpg
Im Wesentlichen besteht die URL aus folgenden Paramtern:
- Datum der Ausgabe (2x):
/2021/20210719
und21-07-19
- Seite:
01-_01
- Position und Größe des JPEG Tiles:
2-0-0.jpg
- Ein Wert vor der Tile Position: Hier:
hp
Das einzige, was nicht 100%ig vorhersagbar ist folgendes:
- Das
a16
vor dem zweiten Datum. Es scheint aber nur zwei mögliche Werte zu geben:a16
unda17
. - Die Buchstabenkombination vor der Tile Position nicht immer die gleiche. Hier habe ich bis jetzt aber nur zwei mögliche Kombinationen gesehen:
hp
undvp
.
Der Rest der URL bleibt immer gleich. Somit kann das Skript einfach checken, ob die aktuelle Ausgabe a16
oder a17
und hp
oder vp
in der URL hat und alle Tiles herunterladen.
Die vollständige URL mit Parametern sieht dann wie folgt aus:
https://oldenburgische-volkszeitung.de/lib/epaper/img/{yyyy}/{yyyyMMdd}-ov/tiles/{a16 | a17}-{yy}-{MM}-{dd}-ov-{page}-_{page}-4c-{hp | vp}/2-{x}-{y}.jpg
- Datum abfragen
- Testen, ob
a16
odera17
undhp
odervp
in der URL steht - Alle Tiles herunterladen (
6*4 Tiles pro Seite * X Seiten
) und in einem temporären Ordner speichern - PDF aus den heruntergeladenen Tiles generieren
- Temporären Ordner löschen
Es gibt im Grunde zwei Optionen:
- Die Endpunkte zum Laden der Bilder mit einem Token sicher, wie es z.B. auch mit der Website funktioniert.
- Einen zufälligen Part in die URL einfügen (z.B. UUID's anstatt Seitennummern) und es so unmöglich machen die URL vorherzusagen.