Beiträge von spacy

    @widardd ich habe nicht so viele Alben in meiner Liste. Könntest Du daher mal etwas ausprobieren?

    In der Funktion def prepReqData(self,mode,asin=None,mediatype=None): ist elif mode == 'getPurchased': zu finden. Darunter steht

    Python
    'searchCriteria.member.3.attributeName':  filter[0],
    'searchCriteria.member.3.comparisonType': filter[1],
    'searchCriteria.member.3.attributeValue': filter[2],

    und diese drei Zeilen mit einem vorangestellten # auskommentieren und mal testen.
    Sollte das nicht zum Erfolg führen mal bitte o.a. Zeilen durch

    Python
    'searchCriteria.member.3.attributeName':  'trackStatus',
    'searchCriteria.member.3.comparisonType': 'IS_NULL',
    'searchCriteria.member.3.attributeValue': None,

    ersetzen.

    Genau das mache ich bereits, das Ergebnis liegt im Addon Ordner als "song.mpd" und unter Linux und Android funktioniert auch alles.
    Unter Windows ist der Dateipfad mit einem ' \ ' versehen und das mag inputstream nicht, also "hart" die ' \ ' auf ' / ' geändert und schon läufts bis zum nächsten Fehler. Libreelec verhält sich ähnlich, aber das hat nichts mit den Pfaden zu tun.
    DIe Idee war jetzt eine gemeinsame Basis zu schaffen zur Auslieferung von "song.mpd" und danach den nächsten Fehler zu untersuchen.

    Richtig es geht um das Amazon Mediathek Addon. Über Programmcode wird ein Request an Amazon gesendet, in der json-Antwort ist der Content des mpd-files enthalten.
    Dieser content wird lokal im Addon Ordner abgelegt und Kodi bzw. inputstream.adaptive zum Abspielen übergeben.
    Inputstream verlangt ' / ' im Pfad, was unter Windows nicht so gut kommt. Laut diversen Einträgen/Rückmeldungen sollte durch das Addon / im Addon ein lokaler Webservice bereitgestellt werden, der die Datei entsprechend ausliefert. Ich empfinde das noch immer als overkill und hoffe das irgendwie über die Kodi-Bordmittel lösen zu können.

    @TehTux, ich habe dein Beispiel ausprobiert und erhalte

    Python
    {"id":"1","jsonrpc":"2.0","result":{"details":{"path":"image/image%3a%2f%2f%252Fhome%252Fspacy%252F.kodi%252Fuserdata%252Faddon_data%252Fplugin.audio.amazonmedia%252Ffanart.jpg"},"mode":"redirect","protocol":"http"}}

    aber eben nicht die Datei an sich.

    Mit Inputstream kämpfe ich gerade auch an einer anderen Ecke. Was vielleicht helfen könnte, nur um den Fehler eingrenzen zu können, das Ganze mal unter Ubunut laufen zu lassen.
    Mein Addon z.B. läuft unter Ubuntu mit Inputstream wie es soll und unter Windows eben nicht, mit diversen Fehlerchen. Wobei das bei mir vermutlich auch einen Zusammenhang mit widevine hat.

    Edit:
    Ich habe mir gerade mal den Code auf github angesehen und der Entwickler scheint schon länger nichts mehr gemacht zu haben.
    Das gesamte Programm scheint nicht soo kompliziert zu sein. Um hier jedoch Änderungen vornehmen zu können, muss das komplette Addon übernommen werden und dafür ist mind. ein Account für die WWE Network Seite erforderlich. Anderenfalls wäre der Pull-Request auf github zwar möglich aber der Entwickler muss diesen akzeptieren und ich befürchte das wird nicht erfolgen.

    Ich bin auf der Suche nach einem Kodi-Standard zum Download/zur Bereitstellung eines Files aus einem Addon-Ordner nach diesem Prinzip:
    localhost:8080/jsonrpc?request= { <json string mit Pfadangabe> }

    Hintergrund:
    Im Addon Ordner liegt eine *.mpd Datei deren Inhalt regelmäßig, also mit jedem neuen Song, aktualisiert wird. Diese Datei soll per http:// - Aufruf Plattform unabhängig inputstream.adaptive übergeben und dazu der bereits in Kodi vorhandene Webserver verwendet werden.

    Ziel ist die Vermeidung selbst einen lokalen Webservice entwickeln zu müssen. 8) ...es gibt zwar Beispiele, aber ich möchte das irgendwie umgehen und im Standard bleiben.
    Aufrufe wie:

    Python
    kodi_json = '{"jsonrpc": "2.0","id": 1, "method": "Files.PrepareDownload", "params": { "file": "' + song + '", "media": "files"} }'

    oder

    Python
    kodi_json = '{"jsonrpc": "2.0","id": 1, "method": "Files.Download", "params": { "path": "' + song + '" } }'

    mit

    Python
    xbmc.executeJSONRPC(kodi_json)

    liefern Parameter-Fehler oder einfach "Funktion ist nicht bekannt".

    Auch hatte ich irgendwo gelesen, dass mit Kodi 18 die Schnittstelle stark beschnitten wurde und Downloads darüber nicht mehr möglich sein sollen, konnte es jedoch nicht wiederfinden.
    Gibt es grundsätzlich im Kodi Standard solch eine Möglichkeit und ist jsonrpc der richtige Ansatz?

    Ok, das war irgendwie zu erwarten, dann scheint es die Schnittstelle zu sein. Ich habe ohnehin das Gefühl dass die "alten" Schnittstellen beschnitten wurden/werden und Amazon sukzessive auf neue umstellt.
    In den nächsten Tagen werde ich mal ein wenig mit der Weboberfläche spielen und versuchen herauszufinden was die Jungs jetzt einsetzen. Bei Erstellung des Addons hatte ich noch angenommen die Schnittstellen seien konstant, ist ja schließlich eine Schnittstelle...die Praxis zeigt ein komplett anderes Bild.
    Na wer weiß vielleicht bieten die neuen Schnittstellen ein paar nette Features, wie sie kürzlich bei den "Empfehlungen" sichtbar wurden.

    @ksooo, schau mal bitte hier da ist die Lösung beschrieben.
    @widardd, genau ich meinte das [definition=12,8]Logging[/definition] innerhalb des addons.

    Das Log ist interessant...Amazon scheint bei 70 einen harten Schnitt zu machen.
    Der erste Aufruf liefert:

    Python
    "searchLibraryResult": {
      "nextResultsToken": "50",
      "resultCount": 50,
      ...
    }

    und der zweite Aufruf:


    Python
    "searchLibraryResult": {
      "nextResultsToken": null,
      "resultCount": 20,
      ...
    }

    Damit ist immer nach den besagten 70 Schluß. Wie verhält sich die Weboberfläche, kann man da blättern und werden alle Alben angezeigt?
    Gibt es vielleicht irgendwo eine Benutzereinstellung die da sagt: "Zeige mir max. 70 Einträge." (kann ich mir aber fast nicht vorstellen)

    Danke für den Tipp mit Amazon VOD, das muss ich mir mal genauer ansehen.
    Das ist kein Problem mit widevine an sich, es ist halt deren Architektur und Amazon hat noch einen Payload unter Windows...mal sehen vielleicht findet sich ja noch was.

    Schau mal im Kodi Ordner unter /cdm/, da müsste eine Datei "widevine_config.json" vorhanden sein und in dieser der folgende Parameter.

    Python
    "os": "linux",

    Dazu bitte im selben Ordner die Datei <id>.challenge öffnen. Diese ist kryptisch man kann dennoch ein paar Texte wie:

    • architecture_name : x86-64
    • company_name : Google
    • model_name : ChromeCDM
    • platform_name : Linux
    • widevine_cdm_version : 4.10.1440.182

    erkennen und diese bitte posten. Meine Werte habe ich mal zum Vergleich oben eingefügt. Ich vermute unter Libreelec und osmc werden andere Werte gelistet sein und bei Platform steht da sicher ARM.

    Die gemeldeten Fehler beziehen sich alle auf widevine, wie im vorangegangenen Post beschrieben. Unter Linux gibt es keine VMP (Verified Media Path) Validierung daher funktioniert's einfach. Unter Windows und iOS ist VMP immer aktiviert und fordert einen zusätzlichen "payload", d.h. es wird vor dem Abspielen ein weiterer Server-Request gesendet und dieser beinhaltet das Server-Zertifikat.
    Dieses Zertifikat wird mit dem nächsten, den eigentlichen Request irgendwie in Verbindung gebracht um die Validierung durchzuführen.

    Insofern kommen die folgenden Möglichkeiten in Betracht (aktueller Kenntnisstand und beides angefragt):
    - inpustream adaptive stellt einen Parameter zum Setzen der Plattform (Windows / Linux etc.) bereit, wobei ich nicht weiß welche Nebeneffekte das nach sich zieht
    - inpustream adaptive implementiert den Zertifikats-payload bzw. kann das Zertifikat als Parameter aufnehmen

    und (nicht ganz ernst gemeint 8) )
    - ihr steigt einfach auf Linux/Ubuntu um, genießt die Software-Freiheit und erhaltet wieder die Hoheit über eure eigenen Daten (aber das ist eine ganz anderes Thema)

    Ich konnte bisher leider selbst nichts bzgl. Libreelec nachvollziehen, d.h. ich habs nicht in einer VM zum Laufen bekommen. :S
    Bei der Analyse unter Windows fiel mir allerdings etwas auf, nachzulesen hier. Meiner Meinung nach verhält sich inpustream.adaptiv unter Windows anders als unter Linux und glaube aktuell die Ursache ist dort zu suchen.
    Vielleicht findet einer der Entwickler die Zeit und kann einen Blick auf meine Kommentare werfen...jedoch warten schon mehr als 90 Meldungen auf Bearbeitung...hoffen wir mal das Beste.

    Edit (07.04.):
    Ich konnte jetzt u.a. die Kommunikation von inpustream.adaptiv mitschneiden und überprüfen.
    Die gute Nachricht ist, es werden keine Parameter verändert. Alles wird zu 100% korrekt durchgeschleust.
    Die schlechte Nachricht es scheinen sich zwei Fehler herauszukristallisieren:
    1. VMP Validation Error, d.h. der generierte Schlüssel wird von Amazon abgelehnt
    2. Kodi ruft inpustream.adaptiv nicht über das "normale" Abspielen auf (Linksklick). Vermutlich wird Libreelec und Windows sich hier gleich verhalten.

    Mit Rechtklick (Play using...) und Auswahl von PAPlayer wird inpustream.adaptiv aufgerufen und liefert dann den VMP Fehler. Kann jemand das mit einem Libreelec bestätigen?

    Edit 2 (08.04.):
    Schaut mal hier: widevine news
    Das beschreibt ziemlich genau die gemeldeten Fehler.

    Wie hier bereits angedeutet, habe ich die neue Amazon Struktur bzgl. Empfehlungen ins Addon übernommen. Alle bisherigen Funktionen bestehen weiterhin, jedoch muss zur Nutzung der neuen Funktion das Addon zurückgesetzt werden. Nach erneuter Anmeldung wird die Kundensprache, wie z.B. de_DE, ermittelt, als neue Variable gespeichert und für die Abfragen verwendet.

    Eine Einschränkung gibt es in der neu generierten Liste. Hinter dem Eintrag "Mehr Musik wie..." wird nichts angezeigt. Die Ursache ist die dynamische Generierung der Liste durch Amazon und mit jedem erneuten Aufruf ändert sich der Inhalt. Bisher habe ich noch keine Möglichkeit gefunden den Eintrag sicher zu unterdrücken.

    @Ronny, im Code ist

    Python
    li.setInfo('video', '')

    hinterlegt und zwingt normalerweise Kodi den "VideoPlayer" zu verwenden. Damit einher gehen größere Speicherpuffer beim Streaming und somit geringere Aussetzer wenn die Leitung oder das Endgerät mal wieder nicht mag.
    Allerdings ist der eigentliche Grund, dass inpustream adaptive für Videos ausgelegt ist und beim PAPlayer nicht funktioniert bzw. der PAPlayer das nicht versteht.
    @peak3d hatte das mal kurz hier angerissen, weiß jedoch nicht ob er schon dazu gekommen ist die Anpassungen vorzunehmen.

    @balabana ich glaube beim Android als auch beim Libreelec scheint es noch etwas anderes zu sein. Vielleicht sind die Kodi builds je Betriedbsystem unterschiedlich.
    Unter Windows z.B. verhält sich der Parameter

    Python
    li.setInfo('video', '')

    anders als unter Linux, d.h. Kodi verhält sich anders und was ich aus euren Logfiles entnehmen konnte sieht es wohl ähnlich unter Libreelec aus.
    Ob das jetzt an Kodi selbst liegt, an der Betriebssystemumgebung, an verfügbaren Codecs oder dass doch noch an irgendeiner Stelle im Addon etwas verändert werden muss, kann ich momentan noch nicht sagen.
    Was es für mich schwierig macht ist die Abhängigkeit zur Komponente inpustream adaptive. Ich kann da einfach nix analysieren, selbst wenn ich in Kodi alle Schalter für [definition=12,0]debug[/definition] [definition='1','0']log[/definition] aktiviere.
    Also wenn jemand noch eine Idee hat...ich bin offen für Vorschläge. ;)

    Edit:
    Habe Kodi jetzt mal auf meinem Handy Huawei P10 Stock ROM also ohne Modifikationen installiert, Inputstream Helper und Inputstream Adaptive aktiviert und danach mein Repo installiert. Nach Installation des Addons und Anmeldung bei Amazon konnte ich alles ohne Schwierigkeiten abspielen.
    Frage an die Android Nutzer...eure Geräte sind auch ohne Modifikationen und welche Android Version wird verwendet?