Hörbücher am Handy sind faszinierend, speziell, wenn man sie nicht selbst aufsprechen muss.
Die einfachste Möglichkeit, ein solches Hörbuch herzustellen, ist es, ein Hörbuch auf CD zu kaufen und diese CDs ins MP3-Format umzuwandeln. Die zweite Möglichkeit ist, das Buch einzuscannen, eine Texterkennung anzuwenden und die entstandene Textdatei mit balabolka in eine Mp3-Datei umzuwandeln. Beide Möglichkeiten wurden im Beitrag Mein Weg zum Hörbuch vorgestellt.
Das Ergebnis der Arbeiten zu diesem Artikel ist ein Hörbuch, ein Textbuch (txt+htm) zum Roman „Radetzkymarsch“ von Joseph Roth. Wem dieses Ergebnis genügt, kann gleich zum Ende gehen, wo Downloadlinks angegeben sind.
Wer sich für den Anlass zur Lektüre dieses Romans sowie für die konkrete Herstellung dieser Dateien interessiert, kann jetzt weiterlesen.
Österreichischer Nationalstolz I
Wer schon einmal ein Spiel der österreichischen Nationalmannschaft verfolgt hat, weiß, dass vor Spielbeginn unter den Anleitung von Andy Marek zwei Musikstücke gespielt werden, um das Publikum darauf einzustimmen, die eigene Mannschaft zu unterstützen: Zuerst kommt „I am from Austria“ von Rainhard Fendrich und dann der „Radetzkymarsch“ von Johann Strauß Vater. Bei Zweiterem wird eher nur gesummt aber umso mehr werden die rot-weiß-roten Stiegl-Fahnen geschwenkt.
Wenn wir gegen Länder spielen, die durch viele Migranten in Wien vertreten sind, arten solche Spiele leicht zu einem Auswärtsspiel aus. Zuletzt haben wir das gegen die Türkei, Serbien und Albanien erlebt. Der Support für die gegnerische Mannschaft übertrifft oft an Lautstärke das heimische Publikum. Fragt mich nicht, was ich davon halte, aber so ist es eben. Es ist Teil eines Integrationsprozesses, zu dem Fußball einen Teil beiträgt.
Wo ist aber das österreichisches Nationalbewusstsein, das den Migranten nicht mit einer ähnlichen Energie entgegentritt? Die kurze Antwort könnte sein, dass wir in Österreich unsere revolutionären Phasen schon absolviert haben und uns vor weiteren Nationalismen und Alleingängen eher hüten. Die Vertreter der jüngeren Nationen aber, die brauchen noch diverse Sportarten als nationsbildenden Kitt.
Dieser vom Publikum begeistert mit inszenierte Radetzkymarsch wurde ausgewählt, weil er wie kaum ein anderes Musikstück für Österreich steht, für den tragischen Untergang einer ersten Idee von einem Vielvölkerstaat, der heute in der EU Wirklichkeit geworden ist.
Wahrscheinlich hat sich dieses österreichische Nationalbewusstsein schon vor langer Zeit verabschiedet, wie es besser nicht beschrieben werden kann als es im Roman „Radetzkymarsch“ von Joseph Roth geschieht. Ich erinnere mich dunkel an eine Szene, in der erzählt wird, dass es leicht wäre, für den Kaiser zu sterben aber am schönsten wäre es unter den Klängen des Radetzkymarsch. Mir schien dieser Zusammenhang zwischen Roman, Melodie und Happel-Stadion das Rätsel aufzulösen, warum Österreich so viele Auswärtsspiele im eigenen Stadion zu bestreiten hat. Um es besser zu verstehen, wollte ich diese Stelle im Roman suchen, in der das beschrieben wird.
Ja, aber wie findet man den Roman und dann diese Stelle im Roman? Wie kann man suchen?
Natürlich kannt man das Buch kaufen, vielleicht sogar das Hörbuch aber in diesem Fall, einem älteren Werk, das nicht mehr durch Copyrights geschützt ist, gibt es eine viel billigere Quelle, das Projekt Gutenberg des Spiegel.
Das Buch ist schnell gefunden, doch die Lesequalität lässt zu wünschen übrig (Link zum Buch „Radetzkymarsch“). Da das Gutenberg-Projekt für den Leser kostenlos ist, aber dieser riesige Aufwand doch finanziert werden will, bekommt man nicht den Text als Textdatei, vielmehr ist der Text in 22 mit Werbung angereicherte Webseiten eingebettet. Es wäre kein Problem, diese Texte am Handy zu lesen, obwohl man auf den Komfort von E-Formaten verzichten muss. Da ich aber eine bestimmte Textstelle suche, aber nicht weiß, in welchem der 22 Abschnitte ich das Gesuchte finden werde, ist es für mich wichtig, zuerst alle diese Texte in einer einzigen Datei vorzufinden und sich erst dann auf die Suche zu begeben.
Das folgende Bild zeigt das erste von 22 Kapitel des Buchs „Radetzkymarsch“ von Joseph Roth. Dabei wurde schon Einiges an Werbung nach oben gescrollt. Ziel der Übung ist also, den Text zu extrahieren und alles andere wie Menü, Werbung, Banner, Links usw. zu entfernen.
Nun ist es nicht besonders schwierig, den Buchtext aus den 22 Seiten zu kopieren und zu einer Datei zusammen zu fügen. Aber bereits bei einem zweiten Buch, das vielleicht etwas umfangreicher ist und aus etwa 200 solcher Seiten besteht, wäre diese Vorgangsweise nicht sehr ökonomisch. Daher beschließe ich, diese 22 Texte mit einem eigenen Programm aus der Webseite auszulesen und auf meinem Rechner zu speichern.
Powershell
Die Batch-Sprache aus DOS-Zeiten ist uns ja noch allen in Erinnerung. Dann kam ein Zwischenspiel mit dem Windows Scripting Host aber beides ist Geschichte, wenn auch die eine oder andere BAT-Datei immer noch zum Start älterer Programme verwendet wird. Für diesen automatisierten Download von Webseiten eignet sich Powershell. Powershell ist das erste Skript-Konzept, das auch Linux-User als brauchbar einstufen.
Es gibt zwei Möglichkeiten, Powershell zu starten: entweder in der Kommandozeilenversion über Windows-X. Dort befinden sich zwei Startmöglichkeiten als User und als Administrator.
Wenn es nur darum geht, ein Skript zu starten, ist diese blaue Konsole die richtige Wahl. Im Bild die Konsole der Windows Power Shell, ausgeführt wurde der Befehl $psversiontable
.
Man sieht, dass die installierte Version 5.1 ist.
Windows Power Shell ISE
Die zweite Möglichkeit ist die integrierte Skript-Umgebung „Windows Power Shell ISE“. Die startet man so: Windows -> „ise“ eintippen -> Programm erscheint in der liste der gefundenen Begriffe. Wenn man ISE häufiger verwendet, sollte man sich eine Kachel dafür anlegen.
Ich möchte aus der Buchsammlung „Projekt Gutenberg“ des „Spiegel“ das Buch „Radetzkymarsch“ downloaden. Die Adresse des ersten Kapitels ist http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/1
.
Man legt sich einen Ordner für die downgeloadeten Dateien an. Bei mir ist dieser Ordner am Desktop s:\desktop\radetzkymarsch
.
Das zugehörige Programm zum Download einer Datei lautet:
[code lang=“ps“]$url = "http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/1"
$output = "s:\Desktop\radetzkymarsch\1.htm"
Invoke-WebRequest -Uri $url -OutFile $output[/code]
$url
ist eine Variable, die die Adresse der gewünschten Seite enthält. $output
ist der Pfad zum lokalen Verzeichnis. Invoke-WebRequest
ist der Befehl, der den Inhalt einer Webadresse ausliest und speichert. Diese drei Zeilen sind natürlich nicht das Ergebnis, sondern nur ein Test, mit dem die Parameter für den Ladebefehl Invoke-WebRequest
eingestellt werden.
Das folgende Bild zeigt die ISE in Aktion. Man sieht im Entwurfsfenster den Code mit Syntaxhighlighting, der Kursor wurde auf den Begriff Invoke-WebRequest
gestellt und F1 wurde gedrückt. Das sich öffnende Hilfefenster zeigt Details zum Befehl. Der blaue Bereich zeigt Rückmeldungen des Programms, und man kann dort auch einzelne Befehle testen.
Das Buch hat 22 Kapitel mit folgenden Dateinamen:
http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/1 http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/2 ... http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/22
Man müsste nun diesen Vorgang 22 Mal wiederholen. Das macht man natürlich nicht. Vorteilhafterweise sind diese 22 Kapitel fortleufend nummeriert, und daher kann man eine einfache Schleife anwenden.
[code lang=“ps“]
cls
$url = "http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/"
$output = "s:\Desktop\radetzkymarsch\"
for ($i=1; $i -le 22; $i++) {
echo $url$i
Invoke-WebRequest -Uri $url$i -OutFile $output$i".htm"
}[/code]
Man lässt die Endziffer weg und ersetzt sie durch die Laufvariable $i
und erhält daher 22 Dateien.
Es gibt jetzt 22 Seiten 1.htm...22.htm.
Text isolieren
Aber diese Seiten haben den Nachteil, dass sie den ganzen Overhead wie Banner Menü usw. enthalten. Interessant ist aber nur der Text. Schaut man sich den Quellkode der Einzelseiten an, findet man, dass dieser Text mit <div id="gutenb">
beginnt und mit </div>
endet. Das Programm soll daher alles bis und inklusive des Starttags entfernen und vom Rest alles ab und inklusive dem ersten </div>
.
[code lang=“ps“]
cls
$url = "http://gutenberg.spiegel.de/buch/radetzkymarsch-4264/"
$output = "s:\Desktop\radetzkymarsch\"
$chapters = 255
$regex_search_1 = ‚(?s).+\
<div id\="gutenb"\>‘
$regex_search_2 = ‚(?s)\</div\>.+‘
for ($i=1; $i -le $chapters; $i++) {
$i
$s = Invoke-WebRequest -Uri $url$i -UseBasicParsing
$s1 = $s.Content;
if (($s1 -Contains ‚\<h2\>Seite nicht gefunden\</h2\>‘) -or ($s1.Length -eq 1)) {
echo ‚ende‘
break
}
$s1 = $s1 -Replace $regex_search_1,“
$s1 = $s1 -Replace $regex_search_2,“
New-Item -Path $output -Name $i‘.htm‘ -type "file" -Value $s1 –Force
}[/code]
Der Unterschied zur vorigen Version ist, dass der von der Webseite gelesene Text nicht unmittelbar in eine Datei geschrieben wird, sondern zunächst in die Variable $s
. Auf diese Variable werden zwei Ersetzungsoperationen angewendet. Die erste entfernt alles bis zum Auftreten des öffnenenden div-Tag, die zweite alles nach dem schließenden div-Tag.
Wenn es das Ziel ist, aus den Texten ein Hörbuch zu machen, sind die einzelnen Textdateien bereits das Endergebnis. Man öffnet diese Dateien in balabolka und speichert sie als Mp3-Datei, fertig ist das Hörbuch. (siehe Links)
Dateien zusammenfassen
Wenn es aber gewünscht ist, alle Dateien zu einem einzigen Text zusammenzufassen, muss man die Dateien verbinden. Das geht in Powershell so:
[code lang=“ps“]Get-Content s:\Desktop\radetzkymarsch\*.htm | Out-File s:\Desktop\radetzkymarsch\radetzkymarsch.htm[/code]
Damit hat man eine einzige HTML-Datei, eigentlich perfekt. Wenn man aber diese Datei im Detail anschaut, findet man, dass es natürlich noch einzelne HTML-Tags gibt, also solche, die Absätze markieren oder Anker-Tags. Was aber besonders störend ist, wenn es um das Suchen von Texten geht, ist der Umstand, dass alle Nicht-ASCII-Zeichen als HTML-Ersatzzeichen dargestellt sind. Ein Umlaut-A ist daher Ä
. Es wäre daher wünschenswert, neben der HTML-Datei auch eine reine Textdatei zu haben, bei der die HTML-Ersatzzeichen als Unicode-Zeichen dargestellt sind. Daher schaut das zugehörige Programm etwas umfangreicher aus.
[code lang=“ps“]
cls
$s = Get-Content s:\Desktop\radetzkymarsch\*.htm | Out-String
$s
New-Item -Path ’s:\Desktop\‘ -Name ‚radetzkymarsch.htm‘ -type "file" -Value $s –Force
$s = $s -Replace ‚\</p\>‘,[Environment]::NewLine
$s = $s -Replace ‚\<.+?\>‘,“
$s = $s -Replace ‚&nbsp;‘,‘ ‚
$s = $s -Replace ‚&auml;‘,’ä‘
$s = $s -Replace ‚&Auml;‘,’Ä‘
$s = $s -Replace ‚&ouml;‘,’ö‘
$s = $s -Replace ‚&Ouml;‘,’Ö‘
$s = $s -Replace ‚&uuml;‘,’ü‘
$s = $s -Replace ‚&Uuml;‘,’Ü‘
$s = $s -Replace ‚&szlig;‘,’ß‘
$s = $s -Replace ‚&raquo;‘,’»‘
$s = $s -Replace ‚&laquo;‘,’«‘
$s = $s -Replace ‚&ndash;‘,’–‘
$s = $s -Replace ‚&eacute;‘,’é‘
$s = $s -Replace ‚&aacute;‘,’á‘
$s = $s -Replace ‚&oacute;‘,’ó‘
$s = $s -Replace ‚&rsaquo;‘,’›‘
$s = $s -Replace ‚&lsaquo;‘,’‹‘
$s = $s -Replace ‚&oelig;‘,’œ‘
$s = $s -Replace ‚&#269;‘,’č‘
New-Item -Path ’s:\Desktop\‘ -Name ‚radetzkymarsch.txt‘ -type "file" -Value $s –Force[/code]
Vorschau
Das Programm ist nicht sehr gut, die Ersetzungen beschränken sich auf jene Zeichen, die im Buch „Radetzkymarsch“ vorkommen. Einen allgemeineren Ansatz zur Umwandlung von Html-Code in reinen Text wird an dieser Stelle später vorgestellt. Weiters wird es eine Übersicht über alle verfügbaren Bücher beim Projekt Gutenberg geben und das sind ziemlich viele.
Der hier dargestellte Vorgang zur Erzeugung eines Textbuchs und eines Hörbuchs mag etwas aufwändig sein, betrachtet man nur dieses eine Buch. Aber im Projekt Gutenberg warten 1924 Autoren mit ihren 10.000-20.000 Werken (so genau habe ich das noch nicht herausgefunden) und ist dieser Anfang einmal programmatisch erledigt, ist es ein Leichtes, sich das eine oder andere Werk der Weltliteratur als Hörbuch vorlesen zu lassen. Allein von William Shakespeare sind 42 Werke vorrätig.
Österreichischer Nationalstolz II
Ein österreichischer Nationalismus ist im Vergleich mit anderen Staaten schwach ausgebildet, was aber auch sein Gutes hat, denn den nationalen Gefühlen anderer wird nicht konfrontativ begegnet, sondern es wird eher neugierig zugeschaut, wie etwa die Szenen auf der Ottakringer Straße zeigen. Ich glaube nicht, dass solche fremdländischen Exzesse in Ländern mit größerem Nationalstolz so friktionsfrei über die Bühne gehen würden.
Das Buch „Radetzkymarsch“ ist der Ausdruck der Trauer über den Untergang der Monarchie und der Trauer über den Untergang des alten Europa. Für mich ist es ein Symbol für den Untergang des letzten Restes eines österreichischen Nationalismus, der von einem heute völlig deplatzierten Deutsch-Nationalismus hinweggefegt wurde.
Ein ungarische Literaturhistoriker würdigt das Werk als „das schönste, traurigste und sentimentalste Buch der Welt“. Marcel Reich Ranicki zählt das Werk zu den zwanzig wichtigsten Romanen der deutschen Sprache. André Heller stellte es in einer ZDF-Sendung als sein persönliches Lieblingsbuch vor (siehe Wikipedia).
Das Buch symbolisiert, warum der österreichische Nationalismus heute nur ein schwaches Pflänzchen ist, verglichen mit dem Nationalismus der jungen Staaten, die den Klauen des Kommunismus entkommen sind. Daher ist Wien ein Integrationsbiotop aller erster Güte. Die Aktivitäten der heuten Bundesregierung erinnern zwar fatal an die Zeit eines Karl Lueger. Aber auch dessen Maßnahmen konnten nicht verhindern, dass es in Wien immer ein Nebeneinander verschiedener Kulturen gab und es galt und gilt der Satz: „Die Wiener von heute sind die Zuwanderer von gestern.“
Und hier mein Schlüsselabsatz aus dem „Radetzkymarsch“:
Jetzt erst begannen die Ferien. Noch eine Viertelstunde, und er hörte von der Kaserne her den ersten ratternden Trommelwirbel der ausrückenden Musik. Jeden Sonntag spielte sie um die Mittagszeit vor dem Amtshaus des Bezirkshauptmanns, der in diesem Städtchen keinen Geringeren vertrat als Seine Majestät den Kaiser. Carl Joseph stand verborgen hinter dem dichten Weinlaub des Balkons und nahm das Spiel der Militärkapelle wie eine Huldigung entgegen. Er fühlte sich ein wenig den Habsburgern verwandt, deren Macht sein Vater hier repräsentierte und verteidigte und für die er einmal selbst ausziehen sollte, in den Krieg und in den Tod. Er kannte die Namen aller Mitglieder des Allerhöchsten Hauses. Er liebte sie alle aufrichtig, mit einem kindlich ergebenen Herzen, vor allen andern den Kaiser, der gütig war und groß, erhaben und gerecht, unendlich fern und sehr nahe und den Offizieren der Armee besonders zugetan. Am besten starb man für ihn bei Militärmusik, am leichtesten beim Radetzkymarsch. Die flinken Kugeln pfiffen im Takt um den Kopf Carl Josephs, sein blanker Säbel blitzte, und Herz und Hirn erfüllt von der holden Hurtigkeit des Marsches, sank er hin in den trommelnden Rausch der Musik, und sein Blut sickerte in einem dunkelroten und schmalen Streifen auf das gleißende Gold der Trompeten, das tiefe Schwarz der Pauken und das siegreiche Silber der Tschinellen.
Der Radetzkymarsch ist also das Symbol für die schwindende Kraft des Österreich-Nationalismus. Das eröffnet aber die Fähigkeit zur Integration vieler Zuwanderer, weil deren nationales Getue, das auch ein Teil des Integrationsprozesses ist, kein so großes Aggressionspotenzial gegenübersteht.
Wenn also Österreich in einem dieser Spiele verliert, ist der Radetzkymarsch der geradezu perfekte Auftakt dazu, weil wie schon Joseph Roth bemerkt hat, „verliert“ man am leichtesten beim Radetzkymarsch.
Sollte jemand meinen, dass Fußball nur ein Spiel sei, das nichts mit Leben und Tod zu tun hätte, der sollte die Sprache der Kommentatoren beobachten, die voll von kriegerischen Bezügen ist, der sollte die Menschen nach Niederlagen weinen sehen oder die Sieger beim Vor-Freude-Weinen.
Materialien
Mit der zuletzt erzeugten Textdatei radetzkymarsch,txt
(auch in der Beilage verfügbar) ist es möglich, gezielt zu suchen und die gewünschte Stelle war nach der Suche nach dem Begriff „radetzkymarsch“ rasch gefunden.
Links
- radetkymarsch (Hörbuch, ca. 600 MB)
- radetzkymarsch (Textdatei)
- radetzkymarsch (Html-Datei)
- Invoke-WebRequest
- UseBasicParsing
- Regex in PowerShell
Franz war pensionierter HTL Lehrer (TGM), Präsident von ClubComputer, Herausgeber der Clubzeitung PCNEWS und betreute unser Clubtelefon und Internet Support. Er war leidenschaftlicher Rapid Wien Fan. Er ist leider Anfang Jänner 2024 nach langer schwerer Krankheit verstorben.
Neueste Kommentare