xmetal.py

Dieses Skript entstand spontan, nachdem ich die „Similar Artists“-Funktion auf Encyclopedia Metallum entdeckt hatte (mehr dazu hier). Da es außerdem das Tool dot (aus der graphviz-Suite) gibt, mit dem sich auf einfache Weise Baumdiagramme erzeugen lassen, lag es nahe beides zu verbinden, um die „Verwandschaft” von Metalbands graphisch darzustellen.

xmetal.py sucht bei Encyclopedia Metallum nach angegebenen Bands, übernimmt von dort eine Liste ähnlicher Bands und wiederholt diesen Vorgang rekursiv, bis eine gewisse Tiefe erreicht ist. Die gegenseitigen Verknüpfungen werden zunächst im Python-Code vorverarbeitet und dann als dot-Datei ausgegeben.1 Diese wird dann ggf. mit dot zu einem PDF oder SVG weiterverarbeitet. Falls ein PDF mit funktionierenden Hyperlinks erzeugt werden soll, wird außerdem noch das Tool epstopdf benötigt, da die PDF-Ausgabe von dot keine Hyperlinks erzeugt.

Um das Skript ausführen zu können, muss Python installiert sein. Es werden keine weiteren Python-Bibliotheken benötigt.

Hinweis: Ich übernehme keine Haftung für Schäden, die durch das Benutzen dieser Software entstehen!

Features

  • Verwendung der Search-Engine von Encyclopedia Metallum zur Suche nach Bands
  • Angabe der Band-ID möglich, um zwischen mehreren Bands gleichen Namens zu unterscheiden
  • Eingebauter Cache für bessere Performance und Entlastung des Servers
  • Farbliche Hervorhebung des Abstandes zur Start-Band und der Ähnlichkeit zwischen je zwei Bands in der Ausgabe
  • Direkte Erzeugung von PDF- und/oder SVG-Dateien, falls entsprechende Tools installiert sind (dot, epstopdf)

Das Skript verwendet einen Cache für die “Similar Artist”-Daten der einzelnen Bands. Dieser besteht aus je einer Datei pro Band und wird im Verzeichnis ~/.cache/xmetal/ gepflegt. Standardmäßig werden die Daten alle 7 Tage aktualisiert; mit dem Parameter –update kann jedoch auch eine Aktualisierung erzwungen werden.

In den erzeugten Dateien wird der „Abstand” zur Start-Band farblich hervorgehoben: Die Start-Band ist rot, die Bands mit maximalem Abstand gelb. Bands dazwischen werden entsprechend eingefärbt. Da der Abstand zur Start-Band nicht viel über die Ähnlichkeit einer Band mit einer anderen aussagt (außer, dass es eine Ähnlichkeit gibt), werden zusätzlich die Verbindungslinien je nach Ähnlichkeit anders gezeichnet. Zwei Bands mit sehr hoher Ähnlichkeit zueinander (Beispiel: Metallica und Megadeth) sind durch eine dicke, schwarze Linie verbunden; Bands mit geringere Ähnlichkeit dagegen durch eine dünnere, hellere Linie. Mit dem Parameter –grayscale ist auch eine graustufige Ausgabe möglich (etwa für Nicht-Farbdrucker), mit –scores werden die Zahlwerte der “Similarity Scores” im Diagramm dargestellt.

Programmaufruf und Optionen

Am Ende des Artikels sind zwei Beispielausgaben gezeigt.

Quellcode

Download: xmetal.py (21 KiB)

Beispiele

  • Diagramm von Kreator, maximale Tiefe 2: xmetal.py -d 2 -s "Kreator"
    xmetal.py - Diagramm zu Kreator
  • Diagramm von Obscura, maximale Tiefe 3, Graustufen, mit „Similarity Scores“: xmetal.py -d 3 -s -g --scores "Obscura"
    xmetal.py - Diagramm zu Obscura

Die Umwandlung in PNG wurde übrigens mit Inkscape durchgeführt:

inkscape -d 50 -e

  1. Die dot-Datei enthält alle gegenseitigen Verknüpfungen im Format A — B; B — C; ….
Bookmark the permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *