def execute_library_tasks(videoid, task_handlers, title, nfo_settings=None): """Execute library tasks for videoid and show errors in foreground""" for task_handler in task_handlers: execute_tasks(title=title, tasks=compile_tasks(videoid, task_handler, nfo_settings), task_handler=task_handler, notify_errors=True, library_home=library_path())
def execute_library_tasks_silently(videoid, task_handlers, title=None, nfo_settings=None): """Execute library tasks for videoid and don't show any GUI feedback""" # pylint: disable=unused-argument for task_handler in task_handlers: for task in compile_tasks(videoid, task_handler, nfo_settings): try: task_handler(task, library_path()) except Exception: # pylint: disable=broad-except import traceback common.error(traceback.format_exc()) common.error('{} of {} failed', task_handler.__name__, task['title'])
def execute_library_tasks(videoid, task_handlers, title, sync_mylist=True, nfo_settings=None): """Execute library tasks for videoid and show errors in foreground""" for task_handler in task_handlers: execute_tasks(title=title, tasks=compile_tasks(videoid, task_handler, nfo_settings), task_handler=task_handler, notify_errors=True, library_home=library_path()) # Exclude update operations if task_handlers != [remove_item, export_item]: _sync_mylist(videoid, task_handler, sync_mylist)
def purge(): """Purge all items exported to Kodi library and delete internal library database""" common.info('Purging internal database and kodi library') for videoid_value in g.SHARED_DB.get_movies_id_list(): videoid = common.VideoId.from_path( [common.VideoId.MOVIE, videoid_value]) execute_library_tasks(videoid, [remove_item], common.get_local_string(30030)) for videoid_value in g.SHARED_DB.get_tvshows_id_list(): videoid = common.VideoId.from_path( [common.VideoId.SHOW, videoid_value]) execute_library_tasks(videoid, [remove_item], common.get_local_string(30030)) # If for some reason such as improper use of the add-on, unexpected error or other # has caused inconsistencies with the contents of the database or stored files, # make sure that everything is removed g.SHARED_DB.purge_library() for folder_name in [FOLDER_MOVIES, FOLDER_TV]: section_dir = xbmc.translatePath( xbmc.makeLegalFilename('/'.join([library_path(), folder_name]))) common.delete_folder_contents(section_dir, delete_subfolders=True)