예제 #1
0
class ViewBase(object):
    columns = COLUMNS

    def __init__(self, host):
        self.host = host

        self.objects = Objects(host)

    @property
    def sp(self):
        return self.host.sp

    @property
    def client(self):
        return self.host.client

    @staticmethod
    def use_placeholders():
        return Client.Product in ['Plex Home Theater']

    @classmethod
    def append_header(cls, oc, title='', key=''):
        oc.add(DirectoryObject(key=key, title=title))

    def append_items(self,
                     oc,
                     items,
                     count=COLUMNS,
                     plain=False,
                     placeholders=None):
        """Append spotify metadata `items` to an ObjectContainer"""

        if placeholders is None:
            placeholders = self.use_placeholders()

        for x in range(count):
            if x < len(items):
                # Build object for metadata item
                oc.add(self.objects.get(items[x]))
            elif not plain and placeholders:
                # Add a placeholder to fix alignment on PHT
                self.append_header(oc)
예제 #2
0
class ViewBase(object):
    columns = COLUMNS

    def __init__(self, host):
        self.host = host

        self.objects = Objects(host)

    @property
    def sp(self):
        return self.host.sp

    @property
    def client(self):
        return self.host.client

    @staticmethod
    def use_placeholders():
        return Client.Product in [
            'Plex Home Theater'
        ]

    @classmethod
    def append_header(cls, oc, title='', key=''):
        oc.add(DirectoryObject(key=key, title=title))

    def append_items(self, oc, items, count=COLUMNS, plain=False, placeholders=None):
        """Append spotify metadata `items` to an ObjectContainer"""

        if placeholders is None:
            placeholders = self.use_placeholders()

        for x in range(count):
            if x < len(items):
                # Build object for metadata item
                oc.add(self.objects.get(items[x]))
            elif not plain and placeholders:
                # Add a placeholder to fix alignment on PHT
                self.append_header(oc)
예제 #3
0
    def _sql(self, file):
        ''' Get the database path based on the file objects/obj_map.json
            Compatible check, in the event multiple db version are supported with the same Kodi version.
            Load video, music, texture databases from the log file. Will only run once per service thread.
            Running database version lines
        '''
        from objects import Objects

        databases = Objects().objects

        if file not in ('video', 'music', 'texture') or databases.get(
                'database_set%s' % file):
            return self._get_database(databases[file], True)

        folder = xbmc.translatePath("special://database/").decode('utf-8')
        dirs, files = xbmcvfs.listdir(folder)
        dbs = {'Textures': "texture", 'MyMusic': "music", 'MyVideos': "video"}
        for db in dbs:

            count = 0
            filename = None

            for name in files:

                if (name.startswith(db) and not name.endswith('-wal')
                        and not name.endswith('-shm')
                        and not name.endswith('db-journal')):

                    count += 1
                    filename = name

            if count == 1:

                key = dbs[db]
                databases[key] = os.path.join(
                    folder, filename.decode('utf-8')).decode('utf-8')
                databases['database_set%s' % key] = True

                continue

            break
        else:
            return databases[file]

        with open(
                xbmc.translatePath('special://logpath/kodi.log').decode(
                    'utf-8'), 'r') as log:
            found_lines = len(dbs)

            for line in log:
                if 'Running database version' in line:

                    filename = line.rsplit('version ', 1)[1].strip()
                    filename = "%s.db" % filename

                    for database in dbs:
                        if database in line:

                            key = dbs[database]
                            databases[key] = os.path.join(
                                folder,
                                filename.decode('utf-8')).decode('utf-8')
                            databases['database_set%s' % key] = True
                            found_lines -= 1

                            break

                elif not found_lines:
                    break

        return databases[file]