Grooveshark API

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
waki
User
Beiträge: 133
Registriert: Dienstag 9. März 2010, 16:41

Hab momentan ein Problem mit der API, bei der Albumsuche bekomme ich oft mit enumerate(album.songs) nichts zurück, aber wenn ich mit dem Browser auf grooveshark gehe, enthält das Album alle Lieder.... (Hatte das Problem bei dem Album "Urlaub fürs Gehirn")
maxi_king_333
User
Beiträge: 110
Registriert: Freitag 25. Dezember 2009, 03:42

Hi,

hmm...

Über EDGE kann (will) ich das gerade leider nicht testen.
Wenn es aber nicht immer auftritt, dann würde ich sagen, dass es an der Grooveshark API und nicht an der Python Implementierung davon liegt...
Das es im Browser funktioniert spricht jedoch dafür, dass es doch an der Python Implementierung liegt.
Es kann sein, dass irgendetwas an diesem Album anders ist als bei den anderen...
Wenn ich wieder daheim bin, in ca. 1er woche, dann werde ich das prüfen...

Es gibt auch noch ein paar andere Fehler, die ich endeckt habe...
Updates gibts dann wenn ich wieder daheim bin.

Viele Grüße
Maxi
weißned
User
Beiträge: 36
Registriert: Freitag 26. Februar 2010, 21:42

Hey,

leider funktioniert das ganze nicht mehr. Anscheinend ist die Client Version für htmlshark nicht mehr aktuell. Kannst du mir mal sagen wie du die genau herausbekommen hast?

Und wie hast du die Konstanten für das Radio herausbekommen, da fehlen nämlich noch welche :D (zB Dubstep)

edit: Okay die clientRevision habe ich jetzt via Wireshark herausbekommen, hast du das so auch gemacht? Sie ist: '20110606.04'

Aber jetzt bekomme ich bei init_queue() "invalid token", wie hast du denn diese MD5 Summe zur Berechnung des Tokens herausbekommen? :P
maxi_king_333
User
Beiträge: 110
Registriert: Freitag 25. Dezember 2009, 03:42

Hi,

habe es gestern wieder zum Laufen bekommen...

@waki
Versuch es jetzt nochmal, jetzt sollte das mit dem Album gehen.

@weißned
Wenn nur die Client Version das Problem wäre, dann wäre es kein Problem...
Ich benutze den Firebug und da kann ich die Version aus dem Request auslesen...
Das Probleme ist wie die Tokens generiert werden...
Das invalid token bezieht sich nicht auf die md5 Summe, mit der (md5 Summe) wird das secret für die Session errechnet.
Die Tokens für jeden Request werden jetzt in Zeile 636 berechnet...
Wie ich das herausgefunden habe?
Ich habe mir im Firebug zunnächst mal das JavaScript angeguckt und da gab es so schöne Funktionen wie hex_sha1 oder hex_md5.
Da habe ich dann einen Breakpoint gesetzt und einen Request gestartet....
Und schon wusste ich, was da wie berechnet wird....
Das hat jedoch diesmal nicht so ganz funktioniert, da das Token für jsqueue und htmlshark jetzt unterschiedlich berechnet werden...
Dabei wird das Token für jsqueue vom FlashPlayer berrechnet und den kann ich mir im Firebug nicht ansehen...
Letztendlich habe ich dann die Lösung im Arbeitsspeicher gefunden.
Mit dem Radio muss man halt einfach mal jedes anspielen und dann mit dem Firebug die ID aus dem Request kopieren...
Und da das viel monotone Arbeit ist, ist die Leise schon ein bisschen älter...
Vielleicht willst Du sie ja kompletieren und über Github beisteuern?

Viele Grüße
Maxi
weißned
User
Beiträge: 36
Registriert: Freitag 26. Februar 2010, 21:42

Hey,

danke das du dich so schnell darum gekümmert hast ;D

Mit MD5 meinte ich eigentlich die Berechnung des Tokens, hatte vergessen, dass das mit sha1 berechnet wird.
Das mit Firebug werde ich mir mal ansehen, und falls ich es schaffe dir die restlichen Radio Konstanten zukommen lassen ;)

EDIT:

Ich habs tatsächlich geschafft :D

Waren aber nur drei Stück ;)

Code: Alles auswählen

    RADIO_DUBSTEP = 2563
    RADIO_80 = 55
    RADIO_90_ALT_ROCK = 9
maxi_king_333
User
Beiträge: 110
Registriert: Freitag 25. Dezember 2009, 03:42

Hi,

danke, für die Konstanten, hab sie eingefügt...

Viele Grüße
Maxi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

waki hat geschrieben:mplayer gibts bei mir unter windows soweit (ich weiß) auch nicht....
Ähm, ja, das muss man halt nachinstallieren. :roll:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@Leonidas: Ich glaube nicht, dass diese simple Tatsache nach drei Monaten noch relevant genug ist, um diese Diskussion von den Toten zu erwecken…
weißned
User
Beiträge: 36
Registriert: Freitag 26. Februar 2010, 21:42

Hey,

ich hab bei github gesehen, dass du fleißig weiter daran arbeitest, obwohl grooveshark in Deutschland ja die Pforten geschlossen hat. Hast du einen Weg gefunden das zu umgehen? Ich habe den aktuellen Stand mal ausprobiert, aber bei mir hat das leider nicht funktioniert.
maxi_king_333
User
Beiträge: 110
Registriert: Freitag 25. Dezember 2009, 03:42

Ja, leider haben sie dicht gemacht :(...
Im Moment benutze ich einfach einen Proxy, um zugreifen zu können.
Mir ist aber aufgefallen, dass die API eigentlich nicht gesperrt ist, sondern ausschließlich die Hauptseite.
Theoretisch müsste man also nur die Session Initialisierung über den Proxy schicken - mal schauen, die Tage vielleicht...
Ich meine, es gab aber mal so einen initSession-Request, an die API, dann könnte man sich das auch noch sparen.
Um einen Proxy zu benutzen, kannst du als Umgebungsvariable einfach http_proxy=ip:port setzen.

Ich habe ein paar Dinge angepasst, vor allem hab ich aus der einen großen Datei mal ein paar kleine gemacht und Support für Python 3 hinzugefügt.
Außerdem hab ich noch eine Webapp beigelegt https://github.com/koehlma/pygrooveshar ... /README.md.
Damit kann man mit jedem Browser, der fähig ist MP3 Dateien über HTML 5 abzuspielen, Lieder hören.
Dazu braucht man auch noch ein kleines WSGI-Framework https://github.com/koehlma/pyweb.
Hab da selber was geschrieben, die anderen waren mir irgendwie alle zu aufgeblasen und konnten zu viel für ein paar statische Dateien und die API.
Antworten