Beiträge von spacy

    Hi Xtra78,
    die Client-Server-Kommunikation unterscheidet sich zum Teil erheblich von den bisherigen Prime-Music-Strukturen. Dennoch sehe ich eine realistische Chance zur Umsetzung und wird vermutlich größere Anpassungen nach sich ziehen. Ich nehme das bei mir ins Backlog auf und kümmere mich im September darum.

    Klasse, dann scheint ja jetzt alles zu funktionieren *P
    Danke, für's Testen.

    Edit: Version 0.0.24 steht jetzt bereit. Mit dieser habe ich die Filter ein wenig zurückgenommen und somit werden wieder die Stations angezeigt.

    Wenn ich eins nicht mag, dann sind es (undefinierte) Programmabstürze, das hält mein kleines IT-ler Herz einfach nicht aus. :rolleyes:

    ...ich habe einen Schalter in den Settings eingebaut, der euch erlaubt die nicht abspielbaren Song ein- und auszublenden. Initial werden diese Songs immer ausgeblendet und wer sich einen kompletten Überblick verschaffen möchte, blendet den Rest einfach wieder ein. Gebt mal bitte Bescheid ob das wie gewünscht vor allem auch mit UNLIMITED funktioniert.

    Das löst zwar nicht das Problem, ist vermutlich dennoch mehr Kodi konform.

    Ich habe mir das mal etwas genauer angesehen und der Kodi-Absturz tritt "nur" in einer bestimmten Playersicht von Kodi auf. D.h. wenn die Playlist angezeigt wird springt Kodi mit folgenden Logeintrag über das Item und spielt einfach den darauf folgenden Song ab. Soweit alles super.

    Python
    ERROR: Playlist Player: skipping unplayable item: 3, path [plugin://plugin.audio.amazonmedia/?asin=B076Z21R3R&mode=1234&objectId=None]

    In der Playersicht wird jedoch scheinbar viel ignoriert was zuvor definiert wurde, z.B. ob das Item überhaupt abspielbar ist ( li.setProperty('IsPlayable', 'true/false' ) und dann kommen folgende Logeinträge

    Python
    ERROR: CBinaryAddonManager::GetInstalledAddonInfo: Requested addon '' unknown as binary
    WARNING: CreateLoader - unsupported protocol(plugin) in plugin://plugin.audio.amazonmedia/?asin=B0054MTUU0&mode=1234&objectId=None
    ERROR: Open - failed to open source <plugin://plugin.audio.amazonmedia/?asin=B0054MTUU0&mode=1234&objectId=None>
    ERROR: Init: Error opening file plugin://plugin.audio.amazonmedia/?asin=B0054MTUU0&mode=1234&objectId=None
    ERROR: CAudioDecoder: Unable to Init Codec while loading file plugin://plugin.audio.amazonmedia/?asin=B0054MTUU0&mode=1234&objectId=None
    WARNING: PAPlayer::QueueNextFileEx - Failed to create the decoder

    ...danach ist Kodi weg.

    Mir fehlt gerade ein Lösungsansatz, daher eine Frage an die Kodi-Experten. Hatte das schon jemand in seinem Addon und wenn ja wie wurde das gelöst?
    Gedanklich wäre ich noch bei der Radikalkur und könnte alle nicht abspielbaren Songs von vornherein "löschen" und damit gar nicht erst zur Anzeige bringen. Aber da will ich (noch) nicht ran.

    Danke für die Erläuterung...das Überspringen von nicht abspielbaren Songs scheint noch nicht richtig zu funktionieren, ich kann es reproduzieren. Je nach Kodi-Player geht's oder eben nicht, aber was auf gar keinen Fall sein darf sind Abstürze...und das irritiert mich schon etwas.
    Vielleicht ist das Skippen von Songs in der Form wie ich es versuche im Kodi Konzept nicht vorgesehen. Laut Logfile, meine Interpretation, versucht Kodi auf den nächsten Song zu springen. Der nächste Song wird jedoch durch dasselbe Addon verarbeitet welches gerade noch aktiv ist, dieses wird warum auch immer nicht gefunden. Die Meldungen "ERROR: Open - failed to open source" und "ERROR: Init: Error opening file plugin" deuten darauf hin und somit kann auch nicht der erforderliche Codec initialisiert werden...ja, und dann war es das auch schon mit Kodi. :evil:
    Fällt für mich in die Kategorie "nicht abgefangener Fehlerfall", egal, ich muss mir das Zusammenspiel von Addon, Player, Sprünge etc. noch deutlich genauer ansehen und versuchen es besser zu verstehen. Vermutlich sind wieder irgendwo zwei Schleifchen mehr zu machen und dann läufts wieder...wir werden sehen.

    Mein Bilderproblemchen habe ich auch weiter einschränken können. Innerhalb von Kodi läuft, zumindest für mich, alles zufriedenstellend, mal abgesehen von o.a. Punkt, alle Bilder und Texte werden dargestellt. In der App Yatse sind immer dann die Bilder und Metadaten "verschwunden", wenn die Zufallswiedergabe aktiviert wird, alles andere läuft. Das Kodi Webinterface zeigt auch alles, somit scheint es etwas im Zusammenspiel von Yatse mit dem Webinterface zu tun zu haben und mind. an einer Stelle schlägt ein timeout zu. Ich glaube das schaue ich mir erst wieder an, wenn ich mal zuviel Zeit haben sollte. :D

    Du meinst Kodi wurde beendet? Bevor ich auf gut Glück etwas am Code ändere ohne es so wie du testen zu können, könntest du vielleicht eine Programmanpassung bei dir lokal vornehmen und erneut testen?
    Im Kodi Ordner unter "addons" -> "plugin.audio.amazonmedia" findest du die Datei "amazonmedia.py" in dieser Datei nach Zeile 2003 "xbmc.sleep(100)" einfügen.

    Das müsste danach so aussehen:
    Vorher

    Python
    if 'statusCode' in obj and obj['contentResponse']['statusCode'] == 'CONTENT_NOT_ELIGIBLE' or obj['contentResponse']['statusCode'] == 'BAD_REQUEST':
                    return

    Nachher:

    Python
    if 'statusCode' in obj and obj['contentResponse']['statusCode'] == 'CONTENT_NOT_ELIGIBLE' or obj['contentResponse']['statusCode'] == 'BAD_REQUEST':
                    xbmc.sleep(100)
                    return

    Wenn meine Theorie stimmt, dürfte es an der Verarbeitungsgeschwindigkeit von Kod selbst liegen bzw. der Speicherbereinigung nach Abarbeitung des Addons und durch diese kurze Pause von 100ms Kodi nicht mehr stolpern.

    Moin zusammen,

    bug fix steht bereit, bitte noch einmal probieren...offensichtlich funktioniert die Anmeldung nicht wenn gzip dafür aktiviert wird, naja ohne gehts ja auch und soo viele Daten werden da ja nicht hin und her geschupst. :whistling:

    Für alles Nachfolgende läuft die Kommunikation über die gzip Komprimierung, was zu einer besseren Reaktionszeit führen sollte.

    Version 19 steht jetzt zur Verfügung mit folgenden Änderungen:
    - die letzten Sucheinträge stehen jetzt in allen Kategorien zur Verfügung
    - ein paar Code Optimierungen, kleinere Korrekturen
    - nicht abspielbare Songs werden schneller übersprungen (ohne Fehlermeldung)

    Ich konnte mein Anzeigeproblem am Smartphone aus diesem Post weiter eingrenzen. Wenn die Playlist so wie sie ist abgespielt wird, funktioniert alles wie gewünscht, alle Bilder und Texte sind sichtbar. Gebe ich jedoch über Yatse eine Zufallswidergabe vor fehlen sämtliche Informationen. D.h. einen Schritt weiter und dennoch keine Idee zur Lösung 8o

    @dazoam ich habe eine Lösung gefunden den Player zu stoppen, zusätzlich wird eine Meldung ausgegeben. Wenn ich es heute noch schaffe, schiebe ich das Update noch auf GitHub. Ich hatte es bei mir ein paar mal getestet und es funktionierte wie gewünscht, das müsste natürlich noch in anderen Umgebungen verifiziert werden.
    Die Logik sieht in etwa so aus:
    - Kodi läuft
    - Amazon wird angefragt
    - ein Song soll abgespielt werden
    - Rückmeldung von Amazon "da läuft irgendwo anders bereits etwas"
    - Stoppe das Abspielen in Kodi und gib eine Meldung aus

    Ob durch das Addon über die Amazon-Schnittstellen die "andere Instanz" gestoppt werden kann, weiß ich aktuell nicht. Wäre sicher ein cooles Feature, stelle ich mir aber gerade nicht einfach vor und funktioniert vermutlich nur in einer sehr engen Client-Server-Kopplung, denn der Client muss irgendwie auf das "Stopp" - Signal reagieren und alles einstellen.

    Nach meinem Verständnis kann das Kodi als Client auf keinen Fall leisten. So wie ich das bisher sehe agiert Kodi nach dem "Fire-and-forget" Prinzip. Soll heißen mit jedem Click wird das Addon immer neu initialisiert, ausgenommen davon sind die "zurück" Buttons, was manchmal hilreich und manchmal störend ist.

    Edit: Warum lange warten...ich habs gleich erledigt. 8)

    Moin zusammen,
    wenn ihr Fehler findet und/oder neue Features wünscht bitte alles melden. Ich will mir das gern alles nach und nach ansehen.
    Darüber hinaus freut es mich, dass mein Addon bei euch Zuspruch findet und ihr einen Nutzen daraus ziehen könnt. :thumbup:

    @dazoam ich hatte mir das gerade noch einmal angesehen. Im Fall eines Parallelbetriebs von Prime erhält der zweite Client "MAX_CONCURRENCY_REACHED" als Rückmeldung. Mein Programm sagt in dem Fall "schreibe einen LogEintrag, mach aber weiter". Kodi hatte zuvor die Playlist erhalten und bei Abspielproblemen mit einem Song springt Kodi von sich aus auf den nächsten Song. Somit beginnt das Spiel von vorn bis die Playlist abgearbeitet ist. Das ist der von dir beschriebene Fehler-Loop.
    Vorstellbar wäre im Fall von "MAX_CONCURRENCY_REACHED" die Playlist, also den Player zu stoppen und eine entsprechende Meldung auszugeben. Das muss ich mir gleich mal ansehen.

    Mal eine andere Frage:
    Nutzt jemand von euch die Kodi-eigene App oder Yatse zur Remotesteuerung? Werden bei Euch Bilder und weitere Details in der aktuellen Playlist angezeigt?
    Ich sehe dort nur Bilder nach der ersten Amazon-Anmeldung per User/Passwort und nach einer gewissen Zeit nur noch "plugin://plugin.audio.amazon..."
    Die komplette Menüstruktur funktioniert und alle Metadaten und Bilder werden gezeigt, auch das Abspielen funktioniert, nur die Playlistdarstellung ist leer.
    Sieht aus als wäre da irgendwo ein Timeout im Hintergrund, oder der Kodi-Player bekommt etwas nicht mit, oder ich habe im Programm etwas vergessen, oder, oder, oder...ich habe gerade keine Idee woran das liegen könnte. ?(

    ...mal wieder ein Status...wenn man über die Alben einsteigt und danach die Songs angezeigt werden, wird nun auch der einzelne Song entsprechend eingefärbt. Dies funktioniert jedoch ausschließlich beim Einstieg über die Alben, d.h. auch über die Albensuche kommt etwas Farbe ins Spiel.
    Wenn die gleiche Abfrage nicht mit der Alben-ID sondern mit Song-ID's durchgeführt wird liefert Amazon keine "gekauft" Information mit. Hier scheint der Bedarf seitens Amazon wohl nicht vorzuliegen die Datenstrukturen konsistent zu halten (was eigentlich der gesamten Webobfläche von Amazon helfen würde :rolleyes: oder zumindest dem Coding dahinter). Dennoch ist der zweite Lookup sehr hilfreich zur Anreicherung von Metadaten.
    Technisch gesehen habe ich das halbe Programm sehr umfangreich umgebaut und jetzt wird die gesamte Listaufbereitung über einen Kamm geschoren. Soweit ich das überblicken konnte funktioniert noch bzw. wieder alles :whistling: und es wirkt auf mich irgendwie "runder" in den einzelnen Sichten.

    Im nächsten Schritt werde ich mir den Vorschlag von @peat näher ansehen, einen Schalter in den Settings bzgl. Farbgestaltung einbauen und natürlich noch einmal alles durchtesten (man kennt ja den Fehlerteufel).
    Sobald das halbwegs vorzeigbar ist gibt's eine neue Version per Update.

    Edit: Jetzt bin ich tatsächlich selbst ein wenig überrascht ...heute lief es wie am Schnürchen (und das kommt auch nicht so oft vor). Gerade die für mich gefühlt große Stationsbaustelle hatte sich binnen Minuten aufgelöst und der Wunsch von peat war deutlich leichter zu implementieren als gedacht (und dabei waren gleich neue Ideen entstanden). So gesehen bin ich jetzt mit den Themen erst einmal durch, quasi fertig (ist man nie, ist schon klar ;) , aber wenigstens für den Moment). Ich werde morgen das Ganze noch einmal testen und wenn nichts hochkommt gibt's morgen Abend das Update.

    @piet vielen Dank im doppelten Sinne und die Ausgangsbasis war schon sehr hilfreich und lehrreich. :thumbup:
    Darauf muss man erst einmal kommen, sowas hatte ich in anderen Programmiersprachen bisher nicht gesehen (oder unbewußt immer übersehen). Da muss ich direkt mal den Code prüfen ob das noch an anderen Stellen Auswirkungen hat.
    Hast Du evtl. auch eine Idee zu diesem Post? Ich würde schon gern immer alle Grafiken anzeigen ohne Metadaten zu "verlieren".

    Nachtrag...was man nicht im Kopf hat.
    Die Initialisierung der Strukturen nehme ich jetzt direkt in der Funktion vor, damit umgehe ich das Problemchen.

    Jetzt habe ich mal eine Spezialfrage an die (Python) Entwickler unter uns. Vielleicht sehe ich nur den Wald vor lauter Bäumen nicht, aber ich finde einfach keinen Fehler. ?(
    Problem: Über eine Schleife werden die Amazon Daten verarbeitet und schrittweise Kodi als Listeintrag übergeben. Bei der Zuweisung der Titelinformation im zweiten und allen nachfolgenden Einträgen wird jedoch immer der Eintrag vom ersten Durchlauf zugewiesen. Alle anderen Felder stimmen zu 100% und beim Start (Aufruf von setData) wird das komplette Listitem immer neu initialisiert.

    Ich führe folgenden Code zum Iterieren über ein Array aus. Mit jedem Loop werden (unterschiedliche) Albeninformationen verarbeitet.

    Python
    for item in param['albums']:
      inf, met = self.setData(item,{'mode':'lookup'})
      url, li  = self.setItem(inf,met)
      itemlist.append((url, li, True))


    setData startet mit der Initialisierung von info und meta

    Python
    def setData(self,item,filter):
      info = self.trackInfo
      meta = self.trackMeta

    danach folgt

    Python
    if info['title'] == None and 'albumName' in item:
      info['title'] = item['albumName']


    So sehen die Rohdaten von Amazon aus:

    und das wird in der Schleife generiert, enthält folgende Reihenfolge (item, info, meta)...und im zweiten Teil sieht man unter title die Information des ersten Durchlaufs mit "Back from the Edge [Explicit]", "Voicenotes" hätte ich erwartet.

    Code
    2019-06-30 11:15:12.673 T:140264152938240  NOTICE: plugin.audio.amazonmedia: {u'asin': u'B01LFX0UCS', u'justification': {u'asin': u'B017T679VK', u'reason': u'Weil Sie sich Justin Bieber angeh\xf6rt haben', u'title': u'Love Yourself', u'cause': u'Mp3Consumption', u'artist': u'Justin Bieber'}, u'albumArtImageUrl': u'https://m.media-amazon.com/images/I/41EBMaPDuVL.jpg', u'artistAsin': u'B001QA3DC0', u'averageOverallRating': 4.701045388, u'isMusicSubscription': True, u'albumName': u'Back from the Edge [Explicit]', u'totalReviewCount': 51, u'isFreeOnDemandPlayable': False, u'artistName': u'James Arthur', u'originalReleaseDate': 1477605600000, u'isFree': True, u'totalNumberOfTracks': 17, u'isPrime': True}
    2019-06-30 11:15:12.673 T:140264152938240  NOTICE: plugin.audio.amazonmedia: {u'album': u'Back from the Edge [Explicit]', u'genre': None, u'rating': 4.701045388, u'title': u'Back from the Edge [Explicit]', u'year': None, u'duration': None, u'tracknumber': None, u'discnumber': None, u'artist': u'James Arthur'}
    2019-06-30 11:15:12.673 T:140264152938240  NOTICE: plugin.audio.amazonmedia: {u'isPlayable': u'true', u'asin': u'B01LFX0UCS', u'purchased': False, u'isUnlimited': True, u'mode': u'lookup', u'objectId': None, u'color': u'%s', u'isPrime': True, u'thumb': u'https://m.media-amazon.com/images/I/41EBMaPDuVL.jpg'}
    
    
    2019-06-30 11:15:12.693 T:140264152938240  NOTICE: plugin.audio.amazonmedia: {u'asin': u'B0766D6MFL', u'justification': {u'asin': u'B07CY2X4TK', u'reason': u'Weil Sie sich Selena Gomez angeh\xf6rt haben', u'title': u'Back To You', u'cause': u'Mp3Consumption', u'artist': u'Selena Gomez'}, u'albumArtImageUrl': u'https://m.media-amazon.com/images/I/41SGoaMQkGL.jpg', u'artistAsin': u'B004E4PJWW', u'averageOverallRating': 5.0, u'isMusicSubscription': True, u'albumName': u'Voicenotes', u'totalReviewCount': 10, u'isFreeOnDemandPlayable': False, u'artistName': u'Charlie Puth', u'originalReleaseDate': 1525989600000, u'isFree': True, u'totalNumberOfTracks': 13, u'isPrime': True}
    2019-06-30 11:15:12.693 T:140264152938240  NOTICE: plugin.audio.amazonmedia: {u'album': u'Voicenotes', u'genre': None, u'rating': 5.0, u'title': u'Back from the Edge [Explicit]', u'year': None, u'duration': None, u'tracknumber': None, u'discnumber': None, u'artist': u'Charlie Puth'}
    2019-06-30 11:15:12.693 T:140264152938240  NOTICE: plugin.audio.amazonmedia: {u'isPlayable': u'true', u'asin': u'B0766D6MFL', u'purchased': False, u'isUnlimited': True, u'mode': u'lookup', u'objectId': None, u'color': u'%s', u'isPrime': True, u'thumb': u'https://m.media-amazon.com/images/I/41SGoaMQkGL.jpg'}

    Hi zusammen,

    aufgrund der traumhaften Temperaturen und ein paar anderer Hobbies, wie Familie, Freunde, Job etc., ist die Motivation etwas am Addon zu machen gerade nicht sonderlich hoch. :whistling: ...aber keine Sorge ganz untätig war ich dennoch nicht.

    Ich verfolge gerade einen noch stärkeren generischen Ansatz und habe dafür einiges umgebaut und u.a. neue Strukturen implementiert. Soll heißen jede Amazon-Abfrage durchläuft ab einem bestimmten Punkt immer den selben Code zur Listgenerierung und zum Abspielen der Songs. Das sollte helfen Redundanzen zu minimieren und Anpassungen sofort überall wirksam werden zu lassen.

    Hier ein paar Impressionen der Datenstrukturen. trackInfo ist zum Setzen/Füllen der Kodi-Items vorgesehen und trackMeta ist u.a. für URL Parameter, Farb- und Bildinformationen etc. gedacht.

    setItem als generische Funktion für Kodi-Items und setImage beinhaltet die Settings-Weiche zum Anzeigen/Versorgen aller Bildchen...

    ...und setUrl zum Setzen der Addon-Paramter per URL, also was aufgerufen werden soll nachdem man auf einen Listeintrag geklickt hat.

    Python
    def setUrl(self,query):
            url = {
                'mode':     query['mode'],
                'asin':     query['asin'],
                'objectId': query['objectId']
            }
            return self.addonBaseUrl + '?' + urllib.urlencode(url)

    Wenn diese Version mal vorzeigbar ist wird sie einen größeren Umbau hinter sich haben und hoffentlich die gewünschten farblichen Listeinträge vollständig und richtig anzeigen. Darüber hinaus wird es vermutlich noch einen zusätzlichen Schalter in den Settings geben, sodass die eingefärbten Listeinträge an- und abgeschaltet werden können. Dann kann jeder selbst entscheiden was er gerne sehen möchte. 8)

    @peat, deinen Vorschlag finde ich super und werde ich mir auf jeden Fall noch ansehen wie soetwas umgesetzt werden kann.

    Na dann schreibe ich mal was Nerdiges :thumbup: ...vielleicht wird's damit etwas deutlicher.
    Zur Identifikation ob PRIME oder UNLIMITED oder gekauft oder in Bibliothek oder oder oder...stehen verschiedene Informationen seitens Amazon zur Verfügung.
    Leider liefert Amazon nur sehr selten alle Informationen gesammelt an den verschiedenen Schnittstellen. D.h. bei gekauften Alben oder in der "gekaufte/eigene Song-Übersicht" sind diese Informationen vorhanden. Beim Lookup auf die Alben zur Auflistung zugehöriger Titel fehlt die Information "gekauft", daher kann ich die Einträge nicht einfärben.
    Was in diesem Fall natürlich...besonders ist, wenn man zuvor auf "gekaufte Alben" geklickt hat, alle Alben logischerweise in "Gold" (fand ich passend zum Einkauf :D ) dargestellt werden und nachfolgende Titel nicht mehr. Hier könnte man die Sinnhaftigkeit sicher diskutieren, oder eben gleich wieder entfernen.
    An dieser Stelle musste ich eine Entscheidung treffen, etwas halbgares mit mehr oder minder korrekten Einfärbungen oder eben nur die Einträge einfärben, die gesichert sind. Das Ergebnis kennt ihr ja.

    Das Gleiche trifft übrigens auch bei allen anderen Einträgen zu, selbst wenn einzelne Songs gekauft wurden, soll heißen bei "Playlisten" oder "Radio" fehlen ebenfalls die Informationen und alle Einträge sind "normal".
    Ich hatte ja weitere oben geschrieben, dass ich vorerst alle zusätzlichen Lookup's entfernt hatte und diese nach und nach wieder einbauen werde. Sollte ich eine Schnittstelle mit den benötigten Informationen finden wirds leichter, ansonsten würde ich bei der Vorgehenweise bleiben nur dann einen Status verändern, wenn dieser gesichert ist. Ich hoffe das ist halbwegs nachvollziehbar.


    Python
    isPrime
    primeStatus
    isMusicSubscription
    purchased
    isPurchased
    
    
    libraryStatus

    Nachtrag bzgl. gekaufter Alben und der Amazon API:
    Der 'searchReturnType' verlangt entweder 'ALBUMS' oder 'TRACKS'. Bei 'ALBUMS' wird nur eine Liste der gekauften Alben zurückgeliefert unabhängig von der Anzahl gekaufter Songs und es ist auch keine Songliste enthalten. Erst durch einen weiteren Lookup erhält man mehr Details zum Album.

    Nachtrag 2:
    Ich habe gerade eine weitere Schnittstelle gefunden, die mir die "gekauft" Information liefert. Wenn ich beide Lookup's nacheinander ausführe und die Ergebnisse verknüpfe könnte es vielleicht klappen...muss ich mir mal ansehen.

    Hm...stimmt auffallend. Version 0.0.16 steht mit Bug fix bereit.
    Die Farbe ist gewollt, gekaufte Dinge in "Gold", aber eben nur da wo es eindeutig zugeordnet werden kann (die Amazon Informationen sind oft sehr...lückenhaft).