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)
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)
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]