tidalf/plugin.audio.qobuz

View on GitHub
resources/lib/qobuz/node/helper.py

Summary

Maintainability
A
0 mins
Test Coverage
'''
    qobuz.node.helper
    ~~~~~~~~~~~~~~~~~

    :part_of: kodi-qobuz
    :copyright: (c) 2012-2018 by Joachim Basmaison, Cyril Leclerc
    :license: GPLv3, see LICENSE for more details.
'''
from qobuz.debug import getLogger
from qobuz.node import getNode, Flag

logger = getLogger(__name__)


def make_local_track_url(config, track):
    return '{scheme}://{host}:{port}/qobuz/{album_id}/{nid}.mpc'.format(
        scheme='http',
        host=config.app.registry.get('httpd_host'),
        port=config.app.registry.get('httpd_port'),
        album_id=track.get_album_id(),
        nid=str(track.nid))


def make_local_album_url(config, album):
    return '{scheme}://{host}:{port}/qobuz/{album_id}/'.format(
        scheme='http',
        host=config.app.registry.get('httpd_host'),
        port=config.app.registry.get('httpd_port'),
        album_id=album.nid)


class TreeTraverseOpts(object):
    _properties = ['xdir', 'lvl', 'whiteFlag', 'blackFlag', 'noRemote', 'data']

    def __init__(self, **ka):
        self.xdir = None
        self.lvl = None
        self.whiteFlag = None
        self.blackFlag = None
        self.noRemote = False
        self.data = None
        self.parse_keyword_argument(**ka)

    def parse_keyword_argument(self, **ka):
        for key in ka:
            if key not in self._properties:
                raise KeyError(key)
            setattr(self, key, ka.get(key))

    def clone(self):
        return TreeTraverseOpts(**{p: getattr(self, p)
                                   for p in self._properties})


def get_tree_traverse_opts(options=None):
    if options is None:
        return TreeTraverseOpts()
    return options.clone()


def get_node_album(album):
    node = getNode(Flag.ALBUM, data=album)
    cache = node.fetch(TreeTraverseOpts(noRemote=True))
    if cache is not None:
        node.data = cache
    return node