diff --git a/resources/lib/library_sync/process_metadata.py b/resources/lib/library_sync/process_metadata.py index b6e56a8a..50113912 100644 --- a/resources/lib/library_sync/process_metadata.py +++ b/resources/lib/library_sync/process_metadata.py @@ -71,68 +71,13 @@ class ProcessMetadata(backgroundthread.KillableThread, common.libsync_mixin): % (self.current, self.total, self.title)) def run(self): - """ - Do the work - """ LOG.debug('Processing thread started') - if self.show_dialog: - self.dialog = xbmcgui.DialogProgressBG() - self.dialog.create(utils.lang(39714)) try: - # Init with the very first library section. This will block! - section = self.queue.get() - self.queue.task_done() - if section is None: - return - while not self.isCanceled(): - if section is None: - break - LOG.debug('Start processing section %s: %s', - section.plex_type, section.name) - self.current = 1 - self.processed = 0 - self.total = section.total - self.section_name = section.name - self.section_type_text = utils.lang( - v.TRANSLATION_FROM_PLEXTYPE[section.plex_type]) - profile = Profile() - profile.enable() - with section.context(self.last_sync) as context: - while not self.isCanceled(): - # grabs item from queue. This will block! - item = self.queue.get() - if isinstance(item, InitNewSection) or item is None: - section = item - self.queue.task_done() - break - elif isinstance(item, UpdateLastSync): - context.plexdb.update_last_sync(item.plex_id, - section.plex_type, - self.last_sync) - else: - try: - context.add_update(item['xml'][0], - section_name=section.name, - section_id=section.id, - children=item['children']) - except: - utils.ERROR(txt='process_metadata crashed', - notify=True, - cancel_sync=True) - self.title = item['xml'][0].get('title') - self.processed += 1 - self.update_progressbar() - self.current += 1 - if self.processed == 500: - self.processed = 0 - context.commit() - self.queue.task_done() - profile.disable() - string_io = StringIO() - stats = Stats(profile, stream=string_io).sort_stats('cumulative') - stats.print_stats() - LOG.info('cProfile result: ') - LOG.info(string_io.getvalue()) + self._run() + except: + utils.ERROR(txt='process_metadata crashed', + notify=True, + cancel_sync=True) finally: if self.dialog: self.dialog.close() @@ -141,3 +86,60 @@ class ProcessMetadata(backgroundthread.KillableThread, common.libsync_mixin): self.queue.get() self.queue.task_done() LOG.debug('Processing thread terminated') + + def _run(self): + """ + Do the work + """ + if self.show_dialog: + self.dialog = xbmcgui.DialogProgressBG() + self.dialog.create(utils.lang(39714)) + # Init with the very first library section. This will block! + section = self.queue.get() + self.queue.task_done() + if section is None: + return + while not self.isCanceled(): + if section is None: + break + LOG.debug('Start processing section %s: %s', + section.plex_type, section.name) + self.current = 1 + self.processed = 0 + self.total = section.total + self.section_name = section.name + self.section_type_text = utils.lang( + v.TRANSLATION_FROM_PLEXTYPE[section.plex_type]) + profile = Profile() + profile.enable() + with section.context(self.last_sync) as context: + while not self.isCanceled(): + # grabs item from queue. This will block! + item = self.queue.get() + if isinstance(item, InitNewSection) or item is None: + section = item + self.queue.task_done() + break + elif isinstance(item, UpdateLastSync): + context.plexdb.update_last_sync(item.plex_id, + section.plex_type, + self.last_sync) + else: + context.add_update(item['xml'][0], + section_name=section.name, + section_id=section.id, + children=item['children']) + self.title = item['xml'][0].get('title') + self.processed += 1 + self.update_progressbar() + self.current += 1 + if self.processed == 500: + self.processed = 0 + context.commit() + self.queue.task_done() + profile.disable() + string_io = StringIO() + stats = Stats(profile, stream=string_io).sort_stats('cumulative') + stats.print_stats() + LOG.info('cProfile result: ') + LOG.info(string_io.getvalue())