From 46afeff95c8d64d586c567b87c7161d5f87a6b94 Mon Sep 17 00:00:00 2001 From: JonnyWong16 <JonnyWong16@users.noreply.github.com> Date: Fri, 4 Feb 2022 11:58:13 -0800 Subject: [PATCH] Faster lock/unlock with library `lockAllField` and `unlockAllField` --- utility/lock_unlock_poster_art.py | 44 +++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/utility/lock_unlock_poster_art.py b/utility/lock_unlock_poster_art.py index 501260f..24bafe1 100644 --- a/utility/lock_unlock_poster_art.py +++ b/utility/lock_unlock_poster_art.py @@ -37,27 +37,32 @@ PLEX_TOKEN = os.getenv('PLEX_TOKEN', PLEX_TOKEN) def lock_unlock(plex, rating_key=None, libraries=None, lock=None, unlock=None): - if rating_key: - lock_unlock_items([plex.fetchItem(rating_key)], lock, unlock) - if libraries is None: libraries = [] - - for lib in libraries: - library = plex.library.section(lib) - lock_unlock_items(library.all(), lock, unlock) - if library.TYPE == 'show': - lock_unlock_items(library.all(libtype='season'), lock, unlock) - elif library.TYPE == 'artist': - lock_unlock_items(library.all(libtype='album'), lock, unlock) - - -def lock_unlock_items(items, lock, unlock): if lock is None: lock = [] if unlock is None: unlock = [] + if rating_key: + item = plex.fetchItem(rating_key) + lock_unlock_items([item], lock, unlock) + if item.type == 'show': + lock_unlock_items(item.seasons(), lock, unlock) + elif item.type == 'artist': + lock_unlock_items(item.albums(), lock, unlock) + + else: + for lib in libraries: + library = plex.library.section(lib) + lock_unlock_library(library, lock, unlock) + if library.type == 'show': + lock_unlock_library(library, lock, unlock, libtype='season') + elif library.type == 'artist': + lock_unlock_library(library, lock, unlock, libtype='album') + + +def lock_unlock_items(items, lock, unlock): for item in items: if 'poster' in lock: item.lockPoster() @@ -69,6 +74,17 @@ def lock_unlock_items(items, lock, unlock): item.unlockArt() +def lock_unlock_library(library, lock, unlock, libtype=None): + if 'poster' in lock: + library.lockAllField('thumb', libtype=libtype) + if 'art' in lock: + library.lockAllField('art', libtype=libtype) + if 'poster' in unlock: + library.unlockAllField('thumb', libtype=libtype) + if 'art' in unlock: + library.unlockAllField('art', libtype=libtype) + + if __name__ == "__main__": plex = PlexServer(PLEX_URL, PLEX_TOKEN) sections = [library.title for library in plex.library.sections()]