Seite 1 von 2

pyFmGraph (Artistic Last.fm Statistic)

Verfasst: Sonntag 11. November 2007, 14:14
von sonium
Bild

http://pyfmgraph.sourceforge.net/graph2.png (Große Version)

Was ihr hier seht ist ein Graph erstellt aus den Daten die Last.fm so über die Zeit sammelt. Über www.audioscrobbler.net kann man darauf per xml zugreifen. Die Idee da so dar zu stellen ist zwar nicht von mir sondern von www.megamu.com aber nachdem der Typ absolut nicht auf meine Emails geantwortet hat, bin ich nicht drum rum gekommen selbst bei Null anzufangen.

Bis auf die Beschriftung ist das ganze in Python und der Python Imaging Library (PIL) gecodet. Das Programm hab ich freundlicherweise auf Sourceforge gestellt.

Gemacht hab ich den ganzen Aufwand für ein, ziemlich orginelles, Geburtstagsgeschenk. Das ganze hab ich auf zwei Meter Länge geplottet (geht in der Uni recht billig)

Zur Darstellung: Es wird dargestellt wann welcher Künstler wie häufig gehört wurde. Dickere Flächen bedeuten häufiger. Ein Artist hat eine Farbe. Blauere Farben bedeutet dass der Artist zeitlich früher zum ersten mal gehört wurde, rot heißt später.

Nachbearbeitet hab ich das ganze dann noch mit GIMP auf nem 4gb Ram PC, was bei einer Auflösung von 20000x5000 echt das mindeste ist.

EDIT by mawe: Link gefixt

Verfasst: Sonntag 11. November 2007, 14:29
von mawe
Naja, sieht nett aus. Was genau ist die y-Achse? Bei den Farben, "zeitlich früher", ist da die Uhrzeit gemeint?

Verfasst: Sonntag 11. November 2007, 14:36
von sonium
Zeitlich früher mein Uhrzeit, ja. die Breite einer Fläche in Y-Richtung ist die Häufigkeit mit der der Artist gehört wurde.

Verfasst: Sonntag 11. November 2007, 15:13
von Leonidas
Wow, sieht klasse aus. Ein Webinterface wäre jetzt direkt noch besser :D

Verfasst: Sonntag 11. November 2007, 18:08
von lunar
Was man vom Code allerdings nicht sagen kann: Der ist ja grausam (sorry ;) )

Ich werde mal versuchen, da durchzusteigen und ihn zu verbessern. Das Parsen des XML Codes kann man durch die Verwendung von ElementTree schon mal wesentlich übersichtlicher gestalten.

Um die Idee mit dem Webinterface tatsächlich umzusetzen, müsste man das Ganze vor allem erstmal so gestalten, dass man es als Modul verwenden kann. Auch das versuche ich mal umzusetzen.

Da ich allerdings noch ernste Verständnisschwierigkeiten habe, dauert es wohl bis nächstes Wochenende, ehe da greifbare Resultate vorliegen ;)

Verfasst: Sonntag 11. November 2007, 18:22
von BlackJack
Wenn Du schon dabei bist, kannst Du das Backend auch herausziehen und austauschbar machen. Als SVG, PDF oder PS macht sich so eine Grafik sicher auch ganz gut. :-)

Verfasst: Sonntag 11. November 2007, 18:44
von lunar
BlackJack hat geschrieben:Wenn Du schon dabei bist, kannst Du das Backend auch herausziehen und austauschbar machen. Als SVG, PDF oder PS macht sich so eine Grafik sicher auch ganz gut. :-)
Tja, dafür müsste ich erstmal den Code zum Zeichnen verstehen ;) Ich habe noch nie Grafikprogrammierung gemacht. Zudem bräuchte man erstmal verschiedene Bibliotheken... vorerst wird es also höchstens ein PIL Backend geben...

Ich habe noch ganz gut zu tun, den Code überhaupt erstmal in eine anständige, wartbare und verständliche Form zu bringen ;) Erschwert wird die Sache durch die Tatsache, dass ich zur Zeit nur am Wochenende an den PC kann.

Verfasst: Sonntag 11. November 2007, 18:55
von Imperator
Wow, das sieht echt cool aus. War bestimmt sau schwer.

Verfasst: Sonntag 11. November 2007, 19:30
von Y0Gi
Respekt, das sieht sehr ansprechend aus. Einzig der "Septemer" würde mir jeden Tag ein bisschen weh tun, wenn ich das als Riesenposter an der Wand hätte ;)

Verfasst: Sonntag 11. November 2007, 20:23
von sonium
Y0Gi hat geschrieben:Respekt, das sieht sehr ansprechend aus. Einzig der "Septemer" würde mir jeden Tag ein bisschen weh tun, wenn ich das als Riesenposter an der Wand hätte ;)
Da steht September! (Jag mir doch keinen so Schreck ein!)

@lunar: Für Fragen stehe ich jederzeit zur Verfügung. Vielleicht schaff ich demnächst sogar das SVN Repository von SF.net zum laufen zu kriegen. Ich würde mich freuen wenn man zusammenarbeiten könnte. Ne automatische Schriftpositionierung wäre z.B. auch schön.

Svg ist leider nicht möglich da das Rasterizing ein Teil des Algorithmus ist.

Verfasst: Sonntag 11. November 2007, 20:31
von veers
Also bei mir steht da auch "Septemer" - Oben rechts ;)

Verfasst: Sonntag 11. November 2007, 20:50
von sonium
oh shit...

Verfasst: Sonntag 11. November 2007, 21:24
von BlackJack
Wieso sollte SVG (, PDF, PS) nicht möglich sein? Da musst Du halt die Bezierkurven nicht selber berechnen sondern nur die Stützpunkte in Pfade stecken.

Verfasst: Sonntag 11. November 2007, 23:12
von Leonidas
lunar hat geschrieben:Ich habe noch ganz gut zu tun, den Code überhaupt erstmal in eine anständige, wartbare und verständliche Form zu bringen ;)
Hmm, wenn du meinst... ich habe mir mal den Code angesehen.

Meine Libeblingszeile ist glaube ich die folgende:

Code: Alles auswählen

if (artist[i] != 0) or (i == 0) or (i == len_week - 1) or (artist[i-1]) == 0 or (artist[i+1]) == 0:
Da fängt mein gestriger `sed`-Code an, elegant zu wirken ;)

Verfasst: Sonntag 11. November 2007, 23:22
von sonium
wobei zu erwähnen ist, dass die Reihenfolge der Bedingungen entscheidend ist :P
BlackJack hat geschrieben:Wieso sollte SVG (, PDF, PS) nicht möglich sein? Da musst Du halt die Bezierkurven nicht selber berechnen sondern nur die Stützpunkte in Pfade stecken.
Das Problem ist, dass ich die Bezierkurven nicht einfach übereinander stapeln kann, da die Stützpunkte nicht übereinander liegen. Momentan funktioniert es so, dass ich sie einfach pixelweise addiere. SVG wäre mir auch lieber.