def list_track(kodi_directory, stats): root = kodi_directory.root total = 0 tmp_directory = Directory(None, asList=True) final_directory = Directory(None, asList=True) if is_track(root): tmp_directory.add_node(root) else: options = helper.TreeTraverseOpts(xdir=tmp_directory, lvl=3, whiteFlag=Flag.ALL, blackFlag=Flag.STOPBUILD) populate_node(root, options) total = len(tmp_directory.nodes) if not total: logger.info('NoTrack') return [] progress_update(kodi_directory, 'Begin', '', cyclic_progress(stats)) seen = Struct(**{'albums': {}, 'tracks': {}}) for node in tmp_directory.nodes: progress_update(kodi_directory, u'Scanning', node.get_label(), cyclic_progress(stats)) node.set_parameter('mode', Mode.SCAN) if is_track(node): _list_track_process_node_track(final_directory, seen, node) else: _list_track_process_node_other(final_directory, seen, node) return final_directory.nodes
def scan(self): import sys from qobuz.node.flag import Flag """Building tree when using Xbmc library scanning feature """ from qobuz.gui.directory import Directory if not self.set_root_node(): warn(self, "Cannot set root node ('%s')" % (str( self.node_type))) return False handle = qobuz.boot.handle Dir = Directory(self.root, self.nodes, withProgress=False) Dir.handle = int(sys.argv[1]) Dir.asList = False Dir.asLocalURL = True if self.root.nt & Flag.TRACK: self.root.fetch(None, None, Flag.TRACK, Flag.NONE) Dir.add_node(self.root) else: self.root.populating(Dir, self.depth, self.whiteFlag, self.blackFlag) Dir.set_content(self.root.content_type) Dir.end_of_directory() notifyH('Scanning results', str(Dir.total_put) + ' items where scanned', mstime=3000) return True
def run(self): '''Building our tree, creating root node based on our node_type ''' if not self.set_root_node(): logger.warn('Cannot set root node (%s, %s)', self.node_type, self.root.get_parameter('nid')) return False if self.has_method_parameter(): return self.execute_method_parameter() with Directory(self.root, self.nodes, handle=config.app.handle, showProgress=True, asList=self.asList) as kodi_directory: if config.app.registry.get('contextmenu_replaceitems', to='bool'): kodi_directory.replaceItems = True try: options = helper.TreeTraverseOpts(xdir=kodi_directory, lvl=self.depth, whiteFlag=self.whiteFlag, blackFlag=self.blackFlag) _ret = populate_node(self.root, options) except exception.QobuzError as e: kodi_directory.end_of_directory(False) logger.warn('Error while populating our directory: %s', e) return False if not self.asList: helper_kodi_directory_setup(kodi_directory, self.root.content_type) return kodi_directory.end_of_directory()
def run(self): """Building our tree, creating root node based on our node_type """ if not self.set_root_node(): warn(self, ("Cannot set root node (%s, %s)") % (str(self.node_type), str(self.root.get_parameter('nid')))) return False if self.root.hasWidget: return self.root.displayWidget() if self.has_method_parameter(): return self.execute_method_parameter() from qobuz.gui.directory import Directory Dir = Directory(self.root, self.nodes, withProgress=self.enable_progress) Dir.asList = self.asList Dir.handle = config.app.handle if getSetting('contextmenu_replaceitems', asBool=True): Dir.replaceItems = True try: ret = self.root.populating(Dir, self.depth, self.whiteFlag, self.blackFlag) except Qerror as e: Dir.end_of_directory(False) Dir = None warn(self, "Error while populating our directory: %s" % (repr(e))) return False if not self.asList: import xbmcplugin # @UnresolvedImport Dir.set_content(self.root.content_type) methods = [ xbmcplugin.SORT_METHOD_UNSORTED, xbmcplugin.SORT_METHOD_LABEL, xbmcplugin.SORT_METHOD_DATE, xbmcplugin.SORT_METHOD_TITLE, xbmcplugin.SORT_METHOD_VIDEO_YEAR, xbmcplugin.SORT_METHOD_GENRE, xbmcplugin.SORT_METHOD_ARTIST, xbmcplugin.SORT_METHOD_ALBUM, xbmcplugin.SORT_METHOD_PLAYLIST_ORDER, xbmcplugin.SORT_METHOD_TRACKNUM, ] [xbmcplugin.addSortMethod(handle=config.app.handle, sortMethod=method) for method in methods] return Dir.end_of_directory()
def list_track(kodi_directory, stats): root = kodi_directory.root total = 0 tmp_directory = Directory(None, asList=True) final_directory = Directory(None, asList=True) if is_track(root): tmp_directory.add_node(root) else: options = helper.TreeTraverseOpts( xdir=tmp_directory, lvl=3, whiteFlag=Flag.ALL, blackFlag=Flag.STOPBUILD) populate_node(root, options) total = len(tmp_directory.nodes) if not total: logger.info('NoTrack') return [] progress_update(kodi_directory, 'Begin', '', cyclic_progress(stats)) seen = Struct(**{ 'albums': {}, 'tracks': {} }) for node in tmp_directory.nodes: progress_update(kodi_directory, u'Scanning', node.get_label(), cyclic_progress(stats)) node.set_parameter('mode', Mode.SCAN) if is_track(node): _list_track_process_node_track(final_directory, seen, node) else: _list_track_process_node_other(final_directory, seen, node) return final_directory.nodes
def scan(self): '''Building tree when using Xbmc library scanning feature ''' if not self.set_root_node(): logger.warn('Cannot set root node (%s)', self.node_type) return False stats = Struct(**{'count': 0}) with Directory(self.root, nodes=self.nodes, handle=config.app.handle, asLocalUrl=True, showProgress=True) as kodi_directory: kodi_directory.progress.heading = u'Scan' tracks = {} for track in list_track(kodi_directory, stats): tracks.update({track.nid: track}) if not tracks.keys(): logger.warn('NoTrackScannedError') kodi_directory.end_of_directory() return False for _nid, track in tracks.items(): if not is_track(track): continue if not track.get_displayable(): continue progress_update(kodi_directory, u'Add Track', track.get_label(default='Library scan'), cyclic_progress(stats)) kodi_directory.add_node(track) kodi_directory.set_content(self.root.content_type) kodi_directory.end_of_directory() notifyH('Scanning results', '%s items where scanned' % str(kodi_directory.total_put), mstime=3000) return True