Würfelspiele
Auf dem neuen Album von Schandmaul ist ein Song mit dem Titel “Der elfseitige Würfel”. Er ist als Bonus-Track markiert und gefällt mir sehr gut, es ist, würde ich sagen, sogar einer der besten des Albums. Schade, dass es nur ein Bonus ist!
Naja, jedenfalls habe ich dabei entdeckt, dass mir Songs, in denen es um Würfel geht, irgendwie besonders gut gefallen. Von Saltatio Mortis gibt es zum Beispiel mit Tod und Teufel auch ein Lied, in dem gewürfelt wird! Ich legte mir also eine Spotify-Playlist mit allen Liedern an, die mir zum Thema Würfeln einfallen und leider musste ich nach dem Zweiten bereits aufhören. Mir fiel kein weiteres ein. Ich war mir allerdings recht sicher, dass es von Subway to Sally doch auch ein Lied gab, in dem gewürfelt wurde.
Ich rätselte für einige Tage und fragte sogar, ohne Erfolg, Twitter. Sollte meine neu entdeckte Liebe zu Liedern, die vom Würfeln handeln, schon zu Ende sein, weil mir nicht einfallen will, in welchem Subway to Sally-Lied gewürfelt wird?
Zum Glück kann ich ja programmieren.
Ich brauchte eine Möglichkeit alle Songtexte von Subway to Sally nach Wörtern, die was mit Würfeln zu tun haben, zu durchsuchen. Leider gibt es meines Wissens nach keine allumfassende Lyrics-Datenbank mit einer Suche, die mir ermöglicht eine derartige Suchanfrage zu formulieren. Markus empfahl mir genius.com, das hat ja eine Volltextsuche, aber man kann halt nicht zusätzlich nach Artist filtern.
Immerhin hat Genius eine API, mit der man sich alle gelisteten Songs zu einem Artist holen kann, aber leider nicht die Songtexte. Das scheint alles ein sehr kompliziertes Thema zu sein, ich kann mich noch erinnern, dass vor zehn oder zwanzig Jahren schon Seiten abgemahnt wurden, weil sie Songtexte veröffentlichten. Vielleicht kriegt man die hier deshalb auch nicht über die API. Wer weiß. Naja. Aber wenigstens bekommt man die URLs der Genius-Webseite zu dem jeweiligen Song und kann den Text da einfach aus dem HTML scrapen. Ein Hoch auf serverseitig gerenderte Webseiten.
Ich kopierte also schnell einen API-Call zusammen, der mir die Liste der Subway-Songs in eine SQLite-Datenbank schrieb und baute noch ein zweites Script, dass die Songtexte läd. Nachdem ich die nötigen Sachen aus einem anderen Script kopierte, fiel mir ein, dass ich auch alles in eine Textdatei hätte packen und grep
benutzen können, aber naja, SQLite ist gerade angesagt!
Nun war es soweit. Ich hatte eine Datenbank mit allen (ich habe jetzt nicht wirklich verglichen, wie viele Texte bei Genius fehlen, es waren so um die 200 Stück, das erschien mir recht okay) Texten und muss nun nur noch herausfinden, ob gewürfelt wird!
Statt einem SELECT title FROM songs WHERE text LIKE '%würfel%'
entschied ich mich noch einen Volltext-Index aufzubauen, weil ich es einfach mal gemacht haben wollte! Das funktioniert folgendermaßen:
CREATE VIRTUAL TABLE lyrics USING FTS5(title, text);
INSERT INTO lyrics SELECT title, text FROM songs;
Das war aufregend. 🥲
Nun kann ich statt einer popeligen LIKE
-Query folgendes benutzen:
SELECT * FROM lyrics WHERE lyrics MATCH 'Würfel';
Jetzt würden wir uns natürlich alle wünschen, dass all meine Arbeit nicht umsonst war und mindestens ein Lied als Ergebnis herauskommt, das ich in meine Playlist aufnehmen kann, doch weit gefehlt. Nichts, einfach nichts. Eine kurze Kontrolle mit einem etwas häufiger vorkommenden Wort, liefert ein Ergebnis, also kann ich technisches Versagen auch ausschließen:
SELECT * FROM lyrics WHERE lyrics MATCH 'Engel';
Tja, Schade. Subway to Sally scheint kein Würfel-Lied zu haben. Wahrscheinlich dachte mein Kopf, dass in Sieben gewürfelt wird, oder so.
Kennt ihr noch ein gutes Würfel-Lied einer Mittelalterband? Wenn ja, sagt Bescheid. Ich habe keine Lust das Script jetzt nochmal anzuwerfen.