[Release] Amazon Music

  • Supi Danke Dir für den tollen Support und dieses Megageile Addon! :thumbup:

    Nvidia Shield TV Pro 2015/2019| Omega | HorizonzV
    Zbox ID83 | i3 | 8 GB Ram | SSD M4 64GB | Libreelec Omega | Estuary Mod 2
    Zotac Zbox Ad02 | 8 GB Ram | Libreelec 9| Madnox
    AMD Ryzen 5 3600 | 16GB | Radeon RX5500 XT Win 10 x64 | Pegasus Nightly | Viele Skins zum Probieren
    NAS Synology DS 216+II 16TB DSM 7.2
    Fire Cube 3 | Omega | Metropolis
    Tanix TX3 4/64 GB | Corelec Omega | Estuary Mod

  • Vielen Dank für die Blumen :D

    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 :evil: ...sorry, ich befürchte, dass das länger dauern wird.

  • 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. :wacko:

    Einmal editiert, zuletzt von spacy (26. September 2019 um 19:26)

  • 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. :wacko:

    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 :thumbup:
    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" verwendet

    Wie 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:


    durch

    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:

    Code
    var 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.

  • 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 :D ) 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.

  • Nettes Addon. Wollte einfach nur ein Danke da lassen :)

    Mein HTPC
    Gehäuse: Silverstone SST-GD06B Grandia Desktop mit 3 Gehäuselüftern
    Board: ASRock B85M Pro4 Sockel 1150 Dual Channel DDR3 mATX
    CPU: Intel Core I3 4130 2x 3,40 GHz Sockel 1150 Boxed
    GPU: Intel HD-Grafik 4400
    RAM: DDR3 4GB Crucial CT51264BA160B
    Netzteil: 300 Watt be quiet! Pure Power L8
    SSD: 120 GB Samsung 840 Evo Series 2,5''
    TV: Digital Devices Cine S2 V6.5
    Speicher: 4 x 3,5'' HDD intern, 1x 2,5'' HDD extern = 15 TB

  • 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.

    2 Mal editiert, zuletzt von spacy (4. November 2019 um 20:16)

  • 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...

    Einmal editiert, zuletzt von spacy (10. November 2019 um 09:02)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!