From 72f4761a1d64997c3087e7a1250168066d69ad1c Mon Sep 17 00:00:00 2001 From: terrelsa13 Date: Wed, 21 Aug 2024 23:02:31 -0400 Subject: [PATCH] v5.9.x Simplify tag yaml structure See feature request #127 --- mumc_modules/mumc_config_builder.py | 8 +- mumc_modules/mumc_config_default.py | 138 +++++++++++++----- mumc_modules/mumc_config_skeleton.py | 32 +++-- mumc_modules/mumc_configuration_yaml.py | 14 ++ mumc_modules/mumc_get_media.py | 12 +- mumc_modules/mumc_init.py | 65 +++++---- mumc_modules/mumc_post_process.py | 9 +- mumc_modules/mumc_versions.py | 2 +- mumc_modules/mumc_yaml_check.py | 184 ++++++++++++++++++++++++ 9 files changed, 375 insertions(+), 89 deletions(-) diff --git a/mumc_modules/mumc_config_builder.py b/mumc_modules/mumc_config_builder.py index e541d63..05d746c 100755 --- a/mumc_modules/mumc_config_builder.py +++ b/mumc_modules/mumc_config_builder.py @@ -99,15 +99,15 @@ def build_configuration_file(the_dict,orig_dict={}): print('----------------------------------------------------------------------------------------') #Initialize for compare with other tag to prevent using the same tag in both blacktag and whitetag - the_dict['advanced_settings']['blacktags']=[] - the_dict['advanced_settings']['whitetags']=[] + the_dict['advanced_settings']['blacktags']['global']=[] + the_dict['advanced_settings']['whitetags']['global']=[] #ask user for global blacktag(s) - the_dict['advanced_settings']['blacktags']=get_tag_name('blacktag',the_dict['advanced_settings']['whitetags']) + the_dict['advanced_settings']['blacktags']['global']=get_tag_name('blacktag',the_dict['advanced_settings']['whitetags']['global']) print('----------------------------------------------------------------------------------------') #ask user for global whitetag(s) - the_dict['advanced_settings']['whitetags']=get_tag_name('whitetag',the_dict['advanced_settings']['blacktags']) + the_dict['advanced_settings']['whitetags']['global']=get_tag_name('whitetag',the_dict['advanced_settings']['blacktags']['global']) print('----------------------------------------------------------------------------------------') #Updating the config; Prepare to run the config editor diff --git a/mumc_modules/mumc_config_default.py b/mumc_modules/mumc_config_default.py index 0201a81..f85c3df 100755 --- a/mumc_modules/mumc_config_default.py +++ b/mumc_modules/mumc_config_default.py @@ -495,10 +495,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['movie']['whitetagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['movie']['whitetagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['movie']['blacktagged']['action']=merge['advanced_settings']['behavioral_statements']['movie']['blacktagged']['action'] @@ -520,10 +520,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['movie']['blacktagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['movie']['blacktagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['movie']['whitelisted']['action']=merge['advanced_settings']['behavioral_statements']['movie']['whitelisted']['action'] @@ -632,10 +632,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['episode']['whitetagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['episode']['whitetagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['episode']['blacktagged']['action']=merge['advanced_settings']['behavioral_statements']['episode']['blacktagged']['action'] @@ -657,10 +657,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['episode']['blacktagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['episode']['blacktagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['episode']['whitelisted']['action']=merge['advanced_settings']['behavioral_statements']['episode']['whitelisted']['action'] @@ -765,10 +765,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['audio']['whitetagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['audio']['whitetagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['audio']['blacktagged']['action']=merge['advanced_settings']['behavioral_statements']['audio']['blacktagged']['action'] @@ -790,10 +790,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['audio']['blacktagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['audio']['blacktagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['audio']['whitelisted']['action']=merge['advanced_settings']['behavioral_statements']['audio']['whitelisted']['action'] @@ -837,7 +837,6 @@ def merge_configuration(default_base,merge): except: pass - #loop thru in reverse to preserve order if (server_brand == 'jellyfin'): try: default_base['advanced_settings']['behavioral_statements']['audiobook']['favorited']['action']=merge['advanced_settings']['behavioral_statements']['audiobook']['favorited']['action'] @@ -904,10 +903,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags']=merge['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['action']=merge['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['action'] @@ -929,10 +928,10 @@ def merge_configuration(default_base,merge): default_base['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['dynamic_behavior']=merge['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['dynamic_behavior'] except: pass - try: - default_base['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags'] - except: - pass + #try: + #default_base['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags']=merge['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags'] + #except: + #pass try: default_base['advanced_settings']['behavioral_statements']['audiobook']['whitelisted']['action']=merge['advanced_settings']['behavioral_statements']['audiobook']['whitelisted']['action'] @@ -1062,13 +1061,78 @@ def merge_configuration(default_base,merge): ''' try: - default_base['advanced_settings']['whitetags']=merge['advanced_settings']['whitetags'] + default_base['advanced_settings']['whitetags']['global']=merge['advanced_settings']['whitetags']['global'] except: - pass + try: + default_base['advanced_settings']['whitetags']['global']=merge['advanced_settings']['whitetags'] + except: + pass try: - default_base['advanced_settings']['blacktags']=merge['advanced_settings']['blacktags'] + default_base['advanced_settings']['whitetags']['movie']=merge['advanced_settings']['whitetags']['movie'] except: - pass + try: + default_base['advanced_settings']['whitetags']['movie']=merge['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags'] + except: + pass + try: + default_base['advanced_settings']['whitetags']['episode']=merge['advanced_settings']['whitetags']['episode'] + except: + try: + default_base['advanced_settings']['whitetags']['episode']=merge['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags'] + except: + pass + try: + default_base['advanced_settings']['whitetags']['audio']=merge['advanced_settings']['whitetags']['audio'] + except: + try: + default_base['advanced_settings']['whitetags']['audio']=merge['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags'] + except: + pass + if (server_brand == 'jellyfin'): + try: + default_base['advanced_settings']['whitetags']['audiobook']=merge['advanced_settings']['whitetags']['audiobook'] + except: + try: + default_base['advanced_settings']['whitetags']['audiobook']=merge['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags'] + except: + pass + + try: + default_base['advanced_settings']['blacktags']['global']=merge['advanced_settings']['blacktags']['global'] + except: + try: + default_base['advanced_settings']['blacktags']['global']=merge['advanced_settings']['blacktags'] + except: + pass + try: + default_base['advanced_settings']['blacktags']['movie']=merge['advanced_settings']['blacktags']['movie'] + except: + try: + default_base['advanced_settings']['blacktags']['movie']=merge['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags'] + except: + pass + try: + default_base['advanced_settings']['blacktags']['episode']=merge['advanced_settings']['blacktags']['episode'] + except: + try: + default_base['advanced_settings']['blacktags']['episode']=merge['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags'] + except: + pass + try: + default_base['advanced_settings']['blacktags']['audio']=merge['advanced_settings']['blacktags']['audio'] + except: + try: + default_base['advanced_settings']['blacktags']['audio']=merge['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags'] + except: + pass + if (server_brand == 'jellyfin'): + try: + default_base['advanced_settings']['blacktags']['audiobook']=merge['advanced_settings']['blacktags']['audiobook'] + except: + try: + default_base['advanced_settings']['blacktags']['audiobook']=merge['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags'] + except: + pass try: default_base['advanced_settings']['delete_empty_folders']['episode']['season']=merge['advanced_settings']['delete_empty_folders']['episode']['season'] diff --git a/mumc_modules/mumc_config_skeleton.py b/mumc_modules/mumc_config_skeleton.py index 6c9e132..31a9b1c 100755 --- a/mumc_modules/mumc_config_skeleton.py +++ b/mumc_modules/mumc_config_skeleton.py @@ -115,7 +115,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['movie']['whitetagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['movie']['whitetagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['movie']['whitetagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['movie']['whitetagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']={} the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']['action']=None @@ -123,7 +123,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['movie']['blacktagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['movie']['whitelisted']={} the_dict['advanced_settings']['behavioral_statements']['movie']['whitelisted']['action']=None @@ -154,7 +154,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['episode']['whitetagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['episode']['whitetagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['episode']['whitetagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['episode']['whitetagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']={} the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']['action']=None @@ -162,7 +162,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['episode']['blacktagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['episode']['whitelisted']={} the_dict['advanced_settings']['behavioral_statements']['episode']['whitelisted']['action']=None @@ -193,7 +193,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['audio']['whitetagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['audio']['whitetagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['audio']['whitetagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['audio']['whitetagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']={} the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']['action']=None @@ -201,7 +201,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['audio']['blacktagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['audio']['whitelisted']={} the_dict['advanced_settings']['behavioral_statements']['audio']['whitelisted']['action']=None @@ -233,7 +233,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitetagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']={} the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['action']=None @@ -241,7 +241,7 @@ def setYAMLConfigSkeleton(the_dict): the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['played_conditional']=None the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['action_control']=-1 the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['dynamic_behavior']=None - the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags']=[] + #the_dict['advanced_settings']['behavioral_statements']['audiobook']['blacktagged']['tags']=[] the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitelisted']={} the_dict['advanced_settings']['behavioral_statements']['audiobook']['whitelisted']['action']=None @@ -323,8 +323,20 @@ def setYAMLConfigSkeleton(the_dict): #the_dict['advanced_settings']['behavioral_tags']['audiobook']['created:-1:>=:1:true']['dynamic_behavior']=None #the_dict['advanced_settings']['behavioral_tags']['audiobook']['created:-1:>=:1:true']['high_priority']=None - the_dict['advanced_settings']['whitetags']=[] - the_dict['advanced_settings']['blacktags']=[] + the_dict['advanced_settings']['whitetags']={} + the_dict['advanced_settings']['whitetags']['global']=[] + the_dict['advanced_settings']['whitetags']['movie']=[] + the_dict['advanced_settings']['whitetags']['episode']=[] + the_dict['advanced_settings']['whitetags']['audio']=[] + if (server_brand == 'jellyfin'): + the_dict['advanced_settings']['whitetags']['audiobook']=[] + the_dict['advanced_settings']['blacktags']={} + the_dict['advanced_settings']['blacktags']['global']=[] + the_dict['advanced_settings']['blacktags']['movie']=[] + the_dict['advanced_settings']['blacktags']['episode']=[] + the_dict['advanced_settings']['blacktags']['audio']=[] + if (server_brand == 'jellyfin'): + the_dict['advanced_settings']['blacktags']['audiobook']=[] the_dict['advanced_settings']['delete_empty_folders']={} the_dict['advanced_settings']['delete_empty_folders']['episode']={} diff --git a/mumc_modules/mumc_configuration_yaml.py b/mumc_modules/mumc_configuration_yaml.py index 52b8cc4..f80c862 100755 --- a/mumc_modules/mumc_configuration_yaml.py +++ b/mumc_modules/mumc_configuration_yaml.py @@ -310,7 +310,21 @@ def yaml_configurationLayout(config_data,server_brand): #INTENTIONALLY COMMENTED OUT #config_data['advanced_settings']['whitetags']=[] + #config_data['advanced_settings']['whitetags']['global']=[] + #config_data['advanced_settings']['whitetags']['movie']=[] + #config_data['advanced_settings']['whitetags']['episode']=[] + #config_data['advanced_settings']['whitetags']['audio']=[] + #if (server_brand == 'jellyfin'): + #config_data['advanced_settings']['whitetags']['audiobook']=[] + + #INTENTIONALLY COMMENTED OUT #config_data['advanced_settings']['blacktags']=[] + #config_data['advanced_settings']['blacktags']['global']=[] + #config_data['advanced_settings']['blacktags']['movie']=[] + #config_data['advanced_settings']['blacktags']['episode']=[] + #config_data['advanced_settings']['blacktags']['audio']=[] + #if (server_brand == 'jellyfin'): + #config_data['advanced_settings']['blacktags']['audiobook']=[] config_data['advanced_settings']['delete_empty_folders']['episode']['season']=False config_data['advanced_settings']['delete_empty_folders']['episode']['series']=False diff --git a/mumc_modules/mumc_get_media.py b/mumc_modules/mumc_get_media.py index aa51a17..f8a7d4e 100755 --- a/mumc_modules/mumc_get_media.py +++ b/mumc_modules/mumc_get_media.py @@ -968,10 +968,14 @@ def init_getMedia(the_dict): #remove whitespace(s) from the beginning and end of each tag filter_whitetags_media_specific = [tagstr for tagstr in the_dict['basic_settings']['filter_tags'][mediaType]['whitetags'] if tagstr.strip()] filter_blacktags_media_specific = [tagstr for tagstr in the_dict['basic_settings']['filter_tags'][mediaType]['blacktags'] if tagstr.strip()] - whitetags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['whitetagged']['tags'] if tagstr.strip()] - blacktags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['blacktagged']['tags'] if tagstr.strip()] - whitetags_global = [tagstr for tagstr in the_dict['advanced_settings']['whitetags'] if tagstr.strip()] - blacktags_global = [tagstr for tagstr in the_dict['advanced_settings']['blacktags'] if tagstr.strip()] + #whitetags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['whitetagged']['tags'] if tagstr.strip()] + #blacktags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['blacktagged']['tags'] if tagstr.strip()] + #whitetags_global = [tagstr for tagstr in the_dict['advanced_settings']['whitetags'] if tagstr.strip()] + #blacktags_global = [tagstr for tagstr in the_dict['advanced_settings']['blacktags'] if tagstr.strip()] + whitetags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['whitetags'][mediaType] if tagstr.strip()] + blacktags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['blacktags'][mediaType] if tagstr.strip()] + whitetags_global = [tagstr for tagstr in the_dict['advanced_settings']['whitetags']['global'] if tagstr.strip()] + blacktags_global = [tagstr for tagstr in the_dict['advanced_settings']['blacktags']['global'] if tagstr.strip()] #combine tags and remove any duplicates #the_dict['whitetags'][mediaType]=list(set(filter_whitetags_media_specific + whitetags_media_specific + whitetags_global)) diff --git a/mumc_modules/mumc_init.py b/mumc_modules/mumc_init.py index ea40899..178bb6e 100755 --- a/mumc_modules/mumc_init.py +++ b/mumc_modules/mumc_init.py @@ -4,7 +4,7 @@ from mumc_modules.mumc_paths_files import add_to_PATH from mumc_modules.mumc_cache import cached_data_handler from mumc_modules.mumc_console_attributes import console_text_attributes -from mumc_modules.mumc_server_type import isJellyfinServer +from mumc_modules.mumc_server_type import isEmbyServer,isJellyfinServer from mumc_modules.mumc_compare_items import keys_exist_return_value from mumc_modules.mumc_versions import get_min_config_version,get_script_version from mumc_modules.mumc_tagged import get_isFilterStatementTag @@ -182,36 +182,41 @@ def getIsAnyMediaEnabled(the_dict): return the_dict for mediaType in ('movie','episode','audio','audiobook'): - #remove whitespace(s) from the beginning and end of each tag - whitetags_global = [tagstr for tagstr in the_dict['advanced_settings']['whitetags'] if tagstr.strip()] - blacktags_global = [tagstr for tagstr in the_dict['advanced_settings']['blacktags'] if tagstr.strip()] - whitetags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['whitetagged']['tags'] if tagstr.strip()] - blacktags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['blacktagged']['tags'] if tagstr.strip()] - #combine tags and remove any duplicates - the_dict['whitetags']=list(set(whitetags_global + whitetags_media_specific)) - the_dict['blacktags']=list(set(blacktags_global + blacktags_media_specific)) - - for this_tag in the_dict['whitetags']: - if (not ((this_filter_tag_list:=get_isFilterStatementTag(this_tag)) == False)): - #if (this_tag.startswith('played')): - #tagType='played' - #elif (this_tag.startswith('created')): - #tagType='created' - #if (this_filter_tag_list['media_' + tagType + '_days'] >= 0): - if (this_filter_tag_list[1] >= 0): - the_dict['all_media_disabled']=False - return the_dict + if (not ((isEmbyServer(the_dict['admin_settings']['server']['brand'])) and (mediaType == 'audiobook'))): + #remove whitespace(s) from the beginning and end of each tag + #whitetags_global = [tagstr for tagstr in the_dict['advanced_settings']['whitetags'] if tagstr.strip()] + #blacktags_global = [tagstr for tagstr in the_dict['advanced_settings']['blacktags'] if tagstr.strip()] + #whitetags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['whitetagged']['tags'] if tagstr.strip()] + #blacktags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][mediaType]['blacktagged']['tags'] if tagstr.strip()] + whitetags_global = [tagstr for tagstr in the_dict['advanced_settings']['whitetags']['global'] if tagstr.strip()] + blacktags_global = [tagstr for tagstr in the_dict['advanced_settings']['blacktags']['global'] if tagstr.strip()] + whitetags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['whitetags'][mediaType] if tagstr.strip()] + blacktags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['blacktags'][mediaType] if tagstr.strip()] + #combine tags and remove any duplicates + the_dict['whitetags']=list(set(whitetags_global + whitetags_media_specific)) + the_dict['blacktags']=list(set(blacktags_global + blacktags_media_specific)) + + for this_tag in the_dict['whitetags']: + if (not ((this_filter_tag_list:=get_isFilterStatementTag(this_tag)) == False)): + #if (this_tag.startswith('played')): + #tagType='played' + #elif (this_tag.startswith('created')): + #tagType='created' + #if (this_filter_tag_list['media_' + tagType + '_days'] >= 0): + if (this_filter_tag_list[1] >= 0): + the_dict['all_media_disabled']=False + return the_dict - for this_tag in the_dict['blacktags']: - if (not ((this_filter_tag_list:=get_isFilterStatementTag(this_tag)) == False)): - #if (this_tag.startswith('played')): - #tagType='played' - #elif (this_tag.startswith('created')): - #tagType='created' - #if (this_filter_tag_list['media_' + tagType + '_days'] >= 0): - if (this_filter_tag_list[1] >= 0): - the_dict['all_media_disabled']=False - return the_dict + for this_tag in the_dict['blacktags']: + if (not ((this_filter_tag_list:=get_isFilterStatementTag(this_tag)) == False)): + #if (this_tag.startswith('played')): + #tagType='played' + #elif (this_tag.startswith('created')): + #tagType='created' + #if (this_filter_tag_list['media_' + tagType + '_days'] >= 0): + if (this_filter_tag_list[1] >= 0): + the_dict['all_media_disabled']=False + return the_dict return the_dict diff --git a/mumc_modules/mumc_post_process.py b/mumc_modules/mumc_post_process.py index 89922b4..294d457 100755 --- a/mumc_modules/mumc_post_process.py +++ b/mumc_modules/mumc_post_process.py @@ -247,11 +247,14 @@ def behavior_playedPatternCleanup(behavior_str,postproc_dict,the_dict): if ((ActionType == 'blacktagged') or (ActionType == 'whitetagged')): #remove whitespace(s) from the beginning and end of each tag - tags_global = [tagstr for tagstr in the_dict['advanced_settings'][ActionType.replace('ged','s')] if tagstr.strip()] - tags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][postproc_dict['media_type_lower']][ActionType]['tags'] if tagstr.strip()] + #tags_global = [tagstr for tagstr in the_dict['advanced_settings'][ActionType.replace('ged','s')] if tagstr.strip()] + #tags_media_specific = [tagstr for tagstr in the_dict['advanced_settings']['behavioral_statements'][postproc_dict['media_type_lower']][ActionType]['tags'] if tagstr.strip()] + tags_filter = [tagstr for tagstr in the_dict['basic_settings']['filter_tags'][postproc_dict['media_type_lower']][ActionType.replace('ged','s')] if tagstr.strip()] + tags_media_specific = [tagstr for tagstr in the_dict['advanced_settings'][ActionType.replace('ged','s')][postproc_dict['media_type_lower']] if tagstr.strip()] + tags_global = [tagstr for tagstr in the_dict['advanced_settings'][ActionType.replace('ged','s')]['global'] if tagstr.strip()] #combine tags and remove any duplicates - media_tags=list(set(tags_global + tags_media_specific)) + media_tags=list(set(tags_filter + tags_media_specific + tags_global)) for userInfo in postproc_dict['enabled_users']: #for itemId in media_data: diff --git a/mumc_modules/mumc_versions.py b/mumc_modules/mumc_versions.py index b6dbecf..970b5d1 100755 --- a/mumc_modules/mumc_versions.py +++ b/mumc_modules/mumc_versions.py @@ -4,7 +4,7 @@ #Get the current script version def get_script_version(): - return '5.9.7-beta' + return '5.9.8-beta' #Get the min config version diff --git a/mumc_modules/mumc_yaml_check.py b/mumc_modules/mumc_yaml_check.py index 190cc15..146a284 100755 --- a/mumc_modules/mumc_yaml_check.py +++ b/mumc_modules/mumc_yaml_check.py @@ -1167,6 +1167,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > movie > whitetagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','movie','whitetagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -1180,6 +1181,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): movie_whitetag_set.add(tag) + ''' ####################################################################################################### @@ -1223,6 +1225,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > movie > blacktagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','movie','blacktagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -1236,6 +1239,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): movie_blacktag_set.add(tag) + ''' ####################################################################################################### @@ -1447,6 +1451,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > episode > whitetagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','episode','whitetagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -1460,6 +1465,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): episode_whitetag_set.add(tag) + ''' ####################################################################################################### @@ -1503,6 +1509,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > episode > blacktagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','episode','blacktagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -1516,6 +1523,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): episode_blacktag_set.add(tag) + ''' ####################################################################################################### @@ -1720,6 +1728,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > audio > whitetagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','audio','whitetagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -1733,6 +1742,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): audio_whitetag_set.add(tag) + ''' ####################################################################################################### @@ -1776,6 +1786,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > audio > blacktagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','audio','blacktagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -1789,6 +1800,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): audio_blacktag_set.add(tag) + ''' ####################################################################################################### @@ -2002,6 +2014,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > audiobook > whitetagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','audiobook','whitetagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -2015,6 +2028,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): audiobook_whitetag_set.add(tag) + ''' ####################################################################################################### @@ -2065,6 +2079,7 @@ def cfgCheckYAML(cfg,init_dict): ): error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > behavioral_statements > audiobook > blacktagged > dynamic_behavior must be an boolean\n\tValid values True or False\n' + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','behavioral_statements','audiobook','blacktagged','tags')) == None)): if (isinstance(check,list)): for tag in check: @@ -2078,6 +2093,7 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): audiobook_blacktag_set.add(tag) + ''' ####################################################################################################### @@ -2215,6 +2231,7 @@ def cfgCheckYAML(cfg,init_dict): ####################################################################################################### + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','whitetags')) == None)): if (isinstance(check,list)): for tag in check: @@ -2228,9 +2245,93 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): global_whitetag_set.add(tag) + ''' + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','whitetags','global')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > whitetags > global must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_whitetag_set.add(tag) + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','whitetags','movie')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > whitetags > movie must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_whitetag_set.add(tag) + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','whitetags','episode')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > whitetags > episode must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_whitetag_set.add(tag) + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','whitetags','audio')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > whitetags > audio must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_whitetag_set.add(tag) + +####################################################################################################### + + if (isJellyfinServer(server_brand)): + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','whitetags','audiobook')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > whitetags > audiobook must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_whitetag_set.add(tag) ####################################################################################################### + ''' if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','blacktags')) == None)): if (isinstance(check,list)): for tag in check: @@ -2244,6 +2345,89 @@ def cfgCheckYAML(cfg,init_dict): else: if (not (tag == None)): global_blacktag_set.add(tag) + ''' + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','blacktags','global')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > blacktags > global must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_blacktag_set.add(tag) + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','blacktags','movie')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > blacktags > movie must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_blacktag_set.add(tag) + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','blacktags','episode')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > blacktags > episode must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_blacktag_set.add(tag) + +####################################################################################################### + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','blacktags','audio')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > blacktags > audio must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_blacktag_set.add(tag) + +####################################################################################################### + + if (isJellyfinServer(server_brand)): + + if (not ((check:=keys_exist_return_value(cfg,'advanced_settings','blacktags','audiobook')) == None)): + if (isinstance(check,list)): + for tag in check: + if ( + not ((cfgCheckYAML_isFilterTag(tag,get_isFilterStatementTag(tag))) or + (((isinstance(tag,str)) and + (tag.find('\\') < 0)) or + (tag == None))) + ): + error_found_in_mumc_config_yaml+='ConfigValueError: advanced_settings > blacktags > audiobook must be a list of strings or an empty list\n\tBacklashes \'\\\' are not an allowed character\n' + else: + if (not (tag == None)): + global_blacktag_set.add(tag) #######################################################################################################