Supi Danke Dir für den tollen Support und dieses Megageile Addon!
[Release] Amazon Music
-
spacy -
29. April 2019 um 17:42 -
Erledigt
-
-
Vielen Dank für die Blumen
Wollte heute Abend wieder meine Musik genießen und siehe da Amazon hat etwas geändert und an ein Abspielen von Songs war nicht mehr zu denken. Ein erster Check offenbarte auch gleich den Mißstand...Amazon hat die API von getRestrictedStreamingURL auf getDashManifestsV2 geändert, allerdings auch die darunter liegende "Vertragskennung". Bei mir taucht jetzt z.B. "HAWKFIRE" auf was eigentlich ein "Unlimited" Vertrag wiederspiegeln sollte, den ich jedoch nicht habe.
Der zurückgelieferte Code sieht auch komplett anders aus...scheint das gleiche Abspielproblem zu werden wie beim Live-Fußball ...sorry, ich befürchte, dass das länger dauern wird. -
-
Uff...hatte mich schon gewundert...das man in dein Addon ...spacy...nun auch nicht mehr reinkommt.
-
Oh...stimmt, selbst das Logon geht nicht mehr.
Die Baustelle wird ja immer größer, d.h. einmal von vorn anfangen....reicht ja nicht, dass mein Fernseher seit heute die Amazon App nicht mehr nutzen kann.
Ok, eins nach dem anderen...jetzt schaue ich mir erst einmal das Logon an...Edit:
Den Logon Teil konnte ich schnell fixen. Amazon ist wieder zurück auf den ursprünglichen Code gegangen. Das war der einfache Teil...die Dash Thematik bereitet mir deutlich mehr Kopfzerbrechen. -
-
Oh...stimmt, selbst das Logon geht nicht mehr.
Die Baustelle wird ja immer größer, d.h. einmal von vorn anfangen....reicht ja nicht, dass mein Fernseher seit heute die Amazon App nicht mehr nutzen kann.
Ok, eins nach dem anderen...jetzt schaue ich mir erst einmal das Logon an...Edit:
Den Logon Teil konnte ich schnell fixen. Amazon ist wieder zurück auf den ursprünglichen Code gegangen. Das war der einfache Teil...die Dash Thematik bereitet mir deutlich mehr Kopfzerbrechen.Kann man dir eigentlich irgendwie unter die Arme greifen? spacy? Ich fang gerade erst an mich mit Python zu beschäftigen, aber vielleicht hast du ja trotzdem was. Ich mein, ich kann ja prinzipiell programmieren.
-
@richyholly, Unterstützung jeglicher Art ist immer willkommen
Ich hatte vor 5 Monaten keine Ahnung von Python, der Kodi-Addon-Programmierung noch von der Amazon API. Insofern halte ich es wie Pippi Langstrumpf: "Das habe ich noch nie vorher versucht, also bin ich völlig sicher, dass ich es schaffe!"Meine Recherchen gehen aktuell in folgende Richtung:
- Amazon hat jetzt den DRM Schutz aktiviert und dadurch das "Dash-Manifest" eingebaut
- Dash ist ein Industriestandard für Streaming und benötigt "Widevine"
- "Widevine" wird u.a. im "Amazon Prime Video Addon" mithilfe von "inputstreamer" verwendetWie das Ganze funktioniert und ob man "Widevine" auch direkt benutzen kann, weiß ich nicht und genau hier wäre der Aufsatzpunkt für eine mögliche Unterstützung.
Mit o.a. Erkenntnis bin ich zumindest wieder deutlich zuversichtlicher als zuvor und glaube dass das lösbar ist. -
-
Halli hallo,
ich hab das Ganze mit verfolgt. Leider fehlen mir auch die Kenntnisse, was die Plugin Erstellung von Kodi betrifft und wie die Api von Amazon so tickt. Auf Basis der Status Posts von 'spacy' und der Python Bibliothek amazon-music (https://github.com/Jaffa/amazon-music) habe ich ein bisschen rumprobiert und irgendwann eine Rückgabe erhalten, die sich wahrscheinlich wieder zu Liedern zusamme bauen lässt :). Fangen wir vorne an:
Beim Api Aufruf von "getRestrictedStreamingURL" gab es anscheinend immer eine M3U Datei zurück, welche 10s Segmente der Songs beinhaltet hatte. Um nun eine Rückgabe der Api "getDashManifestsV2" zu bekommen, musste ich in der oben erwähnten python Bibliothek folgendes erstzen:Python
Alles anzeigenstream_json = self._am.call( 'dmls/', 'com.amazon.digitalmusiclocator.DigitalMusicLocatorServiceExternal.getRestrictedStreamingURL', { 'customerId': self._am.customerId, 'deviceToken': { 'deviceTypeId': self._am.deviceType, 'deviceId': self._am.deviceId, }, 'appMetadata': { 'https': 'true' }, 'clientMetadata': { 'clientId': 'WebCP', }, 'contentId': { 'identifier': self.identifier, 'identifierType': self.identifierType, 'bitRate': 'HIGH', 'contentDuration': self.duration } })
durch
Code
Alles anzeigenstream_json = self._am.call( 'dmls/', 'com.amazon.digitalmusiclocator.DigitalMusicLocatorServiceExternal.getDashManifestsV2', { 'customerId': self._am.customerId, 'deviceToken': { 'deviceTypeId': self._am.deviceType, 'deviceId': self._am.deviceId, }, 'contentIdList': [{ 'identifier': self.identifier, 'identifierType': self.identifierType, }], 'bitrateTypeList': ['HIGH'], 'musicDashVersionList': ['V2'], 'appInfo': { 'musicAgent': 'Maestro/1.0 WebCP/1.0 ( 7619f465-172e-8781-f814-feda38a208c0 )', } })
wobei die ID (steht in der runden Klammern) bei musicAgent bei jedem Aufruf neu generiert wird. Auf der Seite von Amazon konnte ich hierzu folgende function ausfindig machen:
Codevar a = function() { function e() { return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1) } return e() + e() + "-" + e() + "-" + e() + "-" + e() + "-" + e() + e() + e() }();
Anschließend bekommt man folgendes zurück:
Code<Initialization sourceURL=\\"https://dfqzuzzcqflbd.cloudfront.net/........\\"/> <SegmentURL media=\\"https://dfqzuzzcqflbd.cloudfront.net/.........\\"/> <SegmentURL media=\\"https://dfqzuzzcqflbd.cloudfront.net/..........\\"/> <SegmentURL media=\\"https://dfqzuzzcqflbd.cloudfront.net/..........\\"/> .....
Vll hilft es ja weiter
-
Version 0.0.31 steht jetzt bereit. Mit dieser ist das Logon-Problemchen wieder gelöst, allerdings ist das Abspielen von Songs weiterhin sehr eingeschränkt.
Gekaufte Songs/Alben sollten abspielbar sein, alles andere vermutlich nicht.@niog, Danke für deine Arbeit. Chrome bietet von Haus aus bereits sehr gute Analysemöglichkeiten. Mit F12 öffnet sich die Entwicklerkonsole und man kann die Aufrufe und die Ergebnisse einsehen. Der für mich unklare Weg ist, wie man dieses Dash-Manifest sinnvoll verarbeitet. Einfach die "Initialization"-Url nehmen und Kodi geben (oder im Browser öffnen) reicht nicht. Da muss noch mehr passieren.
-
-
Komme wieder rein ...spacy...aber man kann mit Version 0.0.31 keine Songs/Alben/Playlisten abspielen außer den gekauften...so wie du es vermutet hast.
-
Aber schaue auch mal hier rein...weiss nicht was da anders ist.
-
-
Hm...stimmt. Ich installiere am besten mal das Addon und checke die Funktionen. Vielleicht ergeben sich darüber neue Erkenntnisse.
-
Also das Prime Addon konnte ich installieren, aber eine Anmeldung war mir nicht möglich. Macht aber nix...als workaround damit dieses Addon wieder lauffähig wird habe ich die Lösung vom Prime Addon übernommen. Sie erfüllt den Zweck und ist effektiv. Das gibt mir jetzt evtl. die Zeit eine andere Lösung zu finden.
getRestrictedStreamingURL wurde bisher verwendet (von Amazon für einige Bereiche abgeschaltet) und wird meiner Meinung nach nicht mehr lange "leben". getHLSManifest habe ich jetzt, wie oben beschrieben, übernommen und getDashManifestsV2 fehlt noch gänzlich.
D.h. die Playback-Funktion werde ich nach und nach dahingehend härten, dass alle drei Modi unterstützt werden. -
-
Kurzes Update:
Habe beim Testen mal wieder Anmeldeschwierigkeiten gehabt, so wie es hier im Forum auch schon des Öfteren gemeldet wurde. Ich meine eine (die?!?) Ursache identifiziert zu haben.
Amazon stellt scheinbar mind. zwei Versionen für die Anmeldung bereit. Einmal ist in der Startseite var applicationContextConfiguration = { ... } mit var appConfig = applicationContextConfiguration; window.amznMusic.appConfig = appConfig; enthalten und einmal amznMusic.appConfig = { ... }.
In der ersten Variante ist erstaunlicher Weise die "customerId": "", nicht gefüllt, in der zweiten jedoch immer.
Die "customerId" wird fast immer bei der Kommunikation mit den Amazon Servern benötigt. Vielleicht hilft das ja irgendjemanden.Sonstiger Fortschritt:
Mit dem DashManifest geht es ganz gut voran, auch wenn hierbei neue, weitere Felder vom Amazon Logon aufgenommen werden mussten. Interessant ist ein komplett neues Datenelement 'entitlementList' : [ "HAWKFIRE" ]. Woher diese Information kommt, weiß ich noch nicht...bei mir ist "HAWKFIRE" enthalten. Ob darüber hinaus weitere Einträge möglich sind wird sich zeigen müssen. Im Moment schreibe ich diesen Wert mal fest.An zwei, drei Stellen hatte der Fehlerteufel zugeschlagen, Kleinigkeiten klar, dennoch waren sie es wert behoben zu werden
Das Thema Fußball wurde noch nicht aufgegeben ( bzw. ich habe meine anfängliche Frustration überwunden ) und benötigt nach meinen Recherchen das Inputstreamer-Addon aufgrund von DRM, daran arbeite ich parallel.
Ach ja, da immer mal wieder der Punkt aufkam einen anderen Player aufgrund von mehr oder weniger häufigen kurzen Unterbrechungen zu verwenden...in meiner Umgebung (unterschiedliche Rechner) hatte ich beide Player ausgiebig getestet und konnte leichte Verbesserungen beim DVD-Player beobachten, allerdings traten auch dort Unterbrechungen auf. Gleiche Tests mit VLC hatten im Gegenzug nie Aussetzer gezeigt. Kann es daher evtl. an der Kodi-(Code-)Struktur mit den permanenten Initialisierungen zusammenhängen? D.h. Kodi fängt ja quasi immer bei Null an, wenn ein Request gefeuert wird und ein Streamingpaket (Song) besteht oftmals aus 10 Sekunden Schnipseln.
-
Komme zur Zeit wieder nicht ins Addon...also kann mich nicht anmelden.
-
-
Hi @Ronny,
ich habe mal einen "quick-and-dirty" Patch gebastelt, da ich bereits deutlich mehr Code-Änderungen in der Pipeline habe, aber damit sollte es wieder funktionieren.Grüße spacy
-
Hi @Ronny,
ich habe mal einen "quick-and-dirty" Patch gebastelt, da ich bereits deutlich mehr Code-Änderungen in der Pipeline habe, aber damit sollte es wieder funktionieren.Grüße spacy
Bei mir funktioniert soweit alles,Login, absielen von Playlisten (auch nicht gekaufte Songs).
Grüße malo11
-
-
Nettes Addon. Wollte einfach nur ein Danke da lassen
-
Kodi 19 hat jetz komplett auf Python 3 umgestellt. Hab deswegen jetz wieder auf Stabile bzw. Betaversion von LibreElec gewechselt. Geht ja kaum eins meiner benutzten Plugins mehr. Die wenigsten sind bis jetz kompatibel.
Ist es angedacht dieses wunderbare Plugin irgendwann auch Python 3 kompatibel zu machen?
Also keine Eile, nur dass es zumindest bei Erscheinen von Kodi 19 da läuft? Sollte ja noch ne ganze Weile dauern.Nochmal danke für dieses tolle Plugin.
Echt klasse.Ich wünschte nur es würde sich auch noch jemand mit deiner Kompetenz finden der sowas für Bandcamp bastelt...
Das wär ein Traum. -
-
Danke euch für den Zuspruch...bzgl. Python 3 habe ich jetzt mal das neueste Kodi Release installiert. Die ersten Fehlermeldungen konnten schnell behoben werden und dabei habe ich gesehen, dass der Code ein wenig ausgemistet werden sollte. Die weiteren Meldungen gehen tiefer...ich mache das Addon erst einmal "Python 3 ready" und auf der Basis arbeite ich an den Features weiter.
Edit:
Addon Aufruf und Amazon Anmeldung läuft bereits. Die Bibliothek "BeautifulSoup" wirft jedoch permanent Fehler und das hängt vermutlich mit dem Alpha-Status von Kodi zusammen. Wenn das Addon erneut aufgerufen wird oder auch nur ein Untermenü angezeigt werden soll, stürzt Kodi ab. Sobald "BeautifulSoup" aus der Import-Direktive entfernt wird läufts. Ich glaube da stimmt irgendeine Instanziierung noch nicht...ich werde das mal unter dem aktuellen Kodi weiter testen. -
Version 35 steht jetzt bereit. Diese beinhaltet die ersten Anpassungen an Kodi 19 / Python3 und hat darüber hinaus den aktuellen Entwicklungsstand im Bauch...auch wenn dieser (noch) nicht sichtbar ist.
Vermutlich werden für Kodi 19 noch weitere Anpassungen erforderlich sein, jedoch ist ein weiterer Test Aufgrund o.a. Fehler von Kodi 19 aktuell nicht wirklich möglich. Sollten sich jetzt Fehler eingeschlichen haben, bitte wie gewohnt wieder melden.@niog und @richyholly:
Soweit ich das verstanden habe kann ein direkter Stream der mpd-Dateien von Amazon zu Kodi nicht direkt von Kodi abgespielt werden, daher auch der Umweg über die lokale Speicherung der einzelnen Segmente. Wenn ihr hierzu eine bessere Lösung finden könntet, wäre das klasse.
Ebenso arbeite ich aktuell an der Wiedergabe von DRM-geschützen Content. Die Version 35 hat den kompletten Entwicklungsstand im Bauch, d.h. inkl. meiner Versuche mit Amazon Fußball und der damit verbundenen DRM Wiedergabe (die Menüeinträge sind auskommentiert - Zeilen 1506/1507 und ab Zeile 2221-2231 ist der Rest). Vielleicht habt ihr hierzu auch noch eine tolle Idee... -
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!