Seite 2 von 2
Re: Grooveshark API
Verfasst: Mittwoch 22. Juni 2011, 12:48
von maxi_king_333
Hi,
sorry, dass ich mich jetzt erst melde.
weißned hat geschrieben:Wie hast du denn heraus gefunden, dass das genau so funktioniert? Gib es da eine Dokumentation zu?
Ich habe mir die Kommunikation zwischen dem Grooveshark HTML-Client und dem Server angeguckt und dann nachgebaut.
weißned hat geschrieben:Wäre cool wenn du mir da etwas Hilfestellung geben könntest.
Was willst Du denn genau wissen?
waki hat geschrieben:meinst du mich? ich würde einfach nur gerne den Stream abspielen, was ich jedoch nicht hinbekomme, da die meisten audio-libs eine Datei zum abspielen wollen...
Guck dir mal die Beispiele an, der MPlayer benötigt auch eine Datei.
Du könntest auch GStreamer verwenden, den gibt es glaub ich auch für Windows.
Da kannst Du den Stream direkt abspielen...
Viele Grüße
Maxi
Re: Grooveshark API
Verfasst: Mittwoch 22. Juni 2011, 12:51
von lunar
@maxi_king_333: MPlayer benötigt nicht zwangsläufig eine lokale Datei. Das Programm kann auch Streams abspielen.
Re: Grooveshark API
Verfasst: Mittwoch 22. Juni 2011, 13:00
von maxi_king_333
@lunar: schon, aber ich habe keinen Weg gefunden die Streams aus Python direkt damit abzuspielen... Wenn Du einen kennst immer her damit...

Re: Grooveshark API
Verfasst: Donnerstag 23. Juni 2011, 16:47
von lunar
@maxi_king_333: Du übergibst mplayer einfach die URL des Streams?
Re: Grooveshark API
Verfasst: Donnerstag 23. Juni 2011, 18:24
von maxi_king_333
@lunar: tja, leider muss ich dem Server über POST einen Key übermitteln, sonst streamt der nicht...
Re: Grooveshark API
Verfasst: Donnerstag 23. Juni 2011, 20:41
von Drache
cooles Programm !!
Find ich klasse und werde es bei Gelegenheit ordentlich studieren.
Re: Grooveshark API
Verfasst: Freitag 24. Juni 2011, 14:57
von lunar
@maxi_king_333: Dann lade den Stream in Python herunter und übergebe die Daten blockweise an die Standardeingabe eines MPlayer-Prozesses:
Code: Alles auswählen
with song.open_stream() as source:
mplayer = subprocess.POpen(['mplayer', '-'], stdin=subprocess.PIPE)
shutil.copyfileobj(source, mplayer.stdin)
Alternativ gibt es auch eine
Python-Anbindung an VLC. Damit sollte man das Streamen ebenfalls von Python aus beeinflussen können.
Re: Grooveshark API
Verfasst: Freitag 24. Juni 2011, 21:17
von maxi_king_333
lunar hat geschrieben:@maxi_king_333: Dann lade den Stream in Python herunter und übergebe die Daten blockweise an die Standardeingabe eines MPlayer-Prozesses:
Code: Alles auswählen
with song.open_stream() as source:
mplayer = subprocess.POpen(['mplayer', '-'], stdin=subprocess.PIPE)
shutil.copyfileobj(source, mplayer.stdin)
Alternativ gibt es auch eine
Python-Anbindung an VLC. Damit sollte man das Streamen ebenfalls von Python aus beeinflussen können.
So ähnlich hatte ich das auch schonmal versucht, da hatte der MPlayer aber irgendwelche Probleme mit, sodass z.B. die ersten paar Sekunden eines Liedes übersprungen wurden.
Mitlerweile benutze ich GStreamer zum Abspielen, das funktioniert perfekt...
Mal schauen, ob sich da was publizierbares ergeben wird...

Vielen Dank jedenfalls, für die Tipps.
Re: Grooveshark API
Verfasst: Sonntag 3. Juli 2011, 17:05
von waki
ich wäre immernoch dankbar wenn mir jemand helfen könnte. Gestreamer bekomm ich nicht installiert, ist leider sehr kompliziert und windows und i-wie zickt es immer herum... mplayer gibts bei mir unter windows soweit (ich weiß) auch nicht.... bräuchte eigentlich nur etwas um die buffs jeweils zu decodieren, finde dazu aber kein modul....
Re: Grooveshark API
Verfasst: Mittwoch 6. Juli 2011, 07:34
von maxi_king_333
Hi,
bin eigentlich gerade in Spitzbergen, aber ganz kurz:
Such mal nach PyMedia, ist zwar veraltet, aber das einzige, was angeblich einfach unter Windows funktioniert.
Ansonsten machst du halt einfach eine tempräre Datei, wie in den Beispielen, und spielst diese mit z.B. pygame ab.
Ich habe keine Ahnung, wann ich das nächste mal wieder Internet habe.
Bin aber in 2 Wochen wieder daheim.
Viele Grüße
Maxi
Re: Grooveshark API
Verfasst: Samstag 9. Juli 2011, 16:29
von waki
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")
Re: Grooveshark API
Verfasst: Samstag 9. Juli 2011, 20:09
von maxi_king_333
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
Re: Grooveshark API
Verfasst: Mittwoch 20. Juli 2011, 16:05
von weißned
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

(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?

Re: Grooveshark API
Verfasst: Donnerstag 21. Juli 2011, 09:52
von maxi_king_333
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
Re: Grooveshark API
Verfasst: Donnerstag 21. Juli 2011, 13:23
von weißned
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
Waren aber nur drei Stück
Code: Alles auswählen
RADIO_DUBSTEP = 2563
RADIO_80 = 55
RADIO_90_ALT_ROCK = 9
Re: Grooveshark API
Verfasst: Donnerstag 21. Juli 2011, 19:42
von maxi_king_333
Hi,
danke, für die Konstanten, hab sie eingefügt...
Viele Grüße
Maxi
Re: Grooveshark API
Verfasst: Montag 10. Oktober 2011, 17:13
von Leonidas
waki hat geschrieben:mplayer gibts bei mir unter windows soweit (ich weiß) auch nicht....
Ähm, ja, das muss man halt nachinstallieren.

Re: Grooveshark API
Verfasst: Montag 10. Oktober 2011, 17:21
von lunar
@Leonidas: Ich glaube nicht, dass diese simple Tatsache nach drei Monaten noch relevant genug ist, um diese Diskussion von den Toten zu erwecken…
Re: Grooveshark API
Verfasst: Samstag 11. Februar 2012, 22:18
von weißned
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.
Re: Grooveshark API
Verfasst: Dienstag 14. Februar 2012, 21:55
von maxi_king_333
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.