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. ...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.
self.trackInfo = {
'tracknumber': None,
'discnumber': None,
'duration': None,
'year': None,
'genre': None,
'album': None,
'artist': None,
'title': None,
'rating': None
}
self.trackMeta = {
'mode': None,
'asin': None,
'objectId': None,
'thumb': None,
'purchased': False,
'isPrime': False,
'isUnlimited': False,
'color': '%s',
'isPlayable': 'true'
}
Alles anzeigen
setItem als generische Funktion für Kodi-Items und setImage beinhaltet die Settings-Weiche zum Anzeigen/Versorgen aller Bildchen...
def setItem(self,inf,met):
li = xbmcgui.ListItem(label=met['color'] % (inf['title']))
li.setArt(self.setImage(met['thumb']))
li.setInfo(type="music", infoLabels=inf)
if met['isPlayable'] == 'false': # workaround for unplayable items
met['mode'] = 'donothing'
li.setProperty('IsPlayable', met['isPlayable']) #'true')
url = self.setUrl(met)
return (url,li)
def setImage(self,img):
if self.showimages == 'true':
return ({'icon':img,'thumb':img,'fanart':img,'poster':img,'banner':img,'landscape':img})
else:
return ({'thumb':img})
Alles anzeigen
...und setUrl zum Setzen der Addon-Paramter per URL, also was aufgerufen werden soll nachdem man auf einen Listeintrag geklickt hat.
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.
@peat, deinen Vorschlag finde ich super und werde ich mir auf jeden Fall noch ansehen wie soetwas umgesetzt werden kann.