resources/lib/qobuz/node/user.py
'''
qobuz.node.user
~~~~~~~~~~~~~~~~
:part_of: kodi-qobuz
:copyright: (c) 2012-2018 by Joachim Basmaison, Cyril Leclerc
:license: GPLv3, see LICENSE for more details.
'''
from kodi_six import xbmcgui # pylint:disable=E0401
from qobuz.api.user import current as user
from qobuz.debug import getLogger
from qobuz.node import getNode, Flag
from qobuz.node.inode import INode
from qobuz.theme import color
from qobuz import config
import os
logger = getLogger(__name__)
def getImage(name):
if name is None:
return ''
if name.startswith('http'):
return name
if not config.path:
return ''
return os.path.join(config.path.image, name + '.png')
class Node_user(INode):
def __init__(self, parent=None, parameters=None, data=None):
parameters = {} if parameters is None else parameters
super(Node_user, self).__init__(
parent=parent, parameters=parameters, data=data)
self.nt = Flag.USER
self.content_type = 'artists'
self.is_folder = True
self.data = self.fetch()
def get_label(self, _=None):
return u'[{subscription} - {login}]'.format(
login=user.get_property(
'user/login', default='Demo'),
country=user.get_property('user/country_code'),
lang=user.get_property('user/language_code'),
subscription=user.get_property(
'user/credential/description', default='Free'))
def get_image(self):
#if user.get_property('user/avatar') is not None:
# return user.get_property('user/avatar')
#else:
return getImage('icon-default-256')
def fetch(self, options=None):
return user.data
def populate(self, options=None):
# self.add_child(getNode(Flag.SETTINGS))
self.add_child(getNode(Flag.TESTING))
def get_description(self):
return u'''[{credential_description}]
- label: {credential_label}
- lossy_streaming: {lossy_streaming}
- offline streaming: {offline_streaming}
- mobile streaming: {mobile_streaming}
- lossless streaming: {lossless_streaming}
'''.format(
credential_label=color(
self.get_property(
'user/credential/parameters/color_scheme/logo',
default='#0000FF00',
to='color'),
self.get_property('user/credential/label')),
credential_description=self.get_property(
'user/credential/description'),
lossy_streaming=self.get_property(
'user/credential/parameters/lossy_streaming'),
offline_streaming=self.get_property(
'user/credential/parameters/offline_streaming'),
mobile_streaming=self.get_property(
'user/credential/parameters/mobile_streaming'),
lossless_streaming=self.get_property(
'user/credential/parameters/lossless_streaming'))
def makeListItem(self, **ka):
item = xbmcgui.ListItem(self.get_label(),
self.get_label2(),
self.get_image(), self.get_image(), None)
if not item:
logger.warn('Error: Cannot make xbmc list item')
return None
item.setInfo(
'Music', infoLabels={'artist': user.get_property('user/login')})
item.setProperty('artist_description', self.get_description())
return item