pyFmGraph (Artistic Last.fm Statistic)

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
sonium
User
Beiträge: 66
Registriert: Mittwoch 27. Oktober 2004, 21:04

pyFmGraph (Artistic Last.fm Statistic)

Beitragvon sonium » Sonntag 11. November 2007, 14:14

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Sonntag 11. November 2007, 14:29

Naja, sieht nett aus. Was genau ist die y-Achse? Bei den Farben, "zeitlich früher", ist da die Uhrzeit gemeint?
sonium
User
Beiträge: 66
Registriert: Mittwoch 27. Oktober 2004, 21:04

Beitragvon sonium » Sonntag 11. November 2007, 14:36

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 11. November 2007, 15:13

Wow, sieht klasse aus. Ein Webinterface wäre jetzt direkt noch besser :D
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Beitragvon lunar » Sonntag 11. November 2007, 18:08

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 ;)
BlackJack

Beitragvon BlackJack » Sonntag 11. November 2007, 18:22

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. :-)
lunar

Beitragvon lunar » Sonntag 11. November 2007, 18:44

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.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Sonntag 11. November 2007, 18:55

Wow, das sieht echt cool aus. War bestimmt sau schwer.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Sonntag 11. November 2007, 19:30

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 ;)
sonium
User
Beiträge: 66
Registriert: Mittwoch 27. Oktober 2004, 21:04

Beitragvon sonium » Sonntag 11. November 2007, 20:23

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.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Sonntag 11. November 2007, 20:31

Also bei mir steht da auch "Septemer" - Oben rechts ;)
My Website - 29a.ch
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
sonium
User
Beiträge: 66
Registriert: Mittwoch 27. Oktober 2004, 21:04

Beitragvon sonium » Sonntag 11. November 2007, 20:50

oh shit...
BlackJack

Beitragvon BlackJack » Sonntag 11. November 2007, 21:24

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 11. November 2007, 23:12

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 ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sonium
User
Beiträge: 66
Registriert: Mittwoch 27. Oktober 2004, 21:04

Beitragvon sonium » Sonntag 11. November 2007, 23:22

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder