Skip to content

Commit

Permalink
v5.10.x Add Sonarr and Radarr API config options.
Browse files Browse the repository at this point in the history
Option to delete last episode when series has ended.
Option to unmonitor movie when it is deleted.
Option to unmonitor episodes as they are delete.
Option to unmonitor series when last episode is deleted.
Option to remove movie from Radarr when movie is deleted.
Option to remove series from Sonarr when last episode is deleted.
  • Loading branch information
terrelsa13 committed Nov 9, 2024
1 parent 7779a09 commit 5eaa0c9
Show file tree
Hide file tree
Showing 27 changed files with 1,206 additions and 235 deletions.
2 changes: 1 addition & 1 deletion mumc.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def MUMC():
print_cache_stats(cfg)

if (cfg['DEBUG'] == 255):
#show cache data (only when DEBUG == 255
#show cache data (only when DEBUG == 255)
cache_data_to_debug(cfg)

#show footer info
Expand Down
4 changes: 2 additions & 2 deletions mumc_modules/mumc_compare_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@


def is_instance(the_element):
if not isinstance(the_element, Mapping):
if (not isinstance(the_element, Mapping)):
raise TypeError('keys_exist() expects a dict-like object as the first argument.')


def keys_exist(the_element, *keys_indexes):
if isinstance(the_element, Mapping):
if not keys_indexes:
if (not keys_indexes):
raise ValueError('keys_exist() expects at least one key/index argument.')

temp_element = the_element
Expand Down
40 changes: 29 additions & 11 deletions mumc_modules/mumc_config_builder.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from mumc_modules.mumc_output import print_byType
from mumc_modules.mumc_setup_questions import get_brand,get_url,get_port,get_base,get_admin_username,get_admin_password,get_library_setup_behavior,get_library_matching_behavior,get_tag_name,get_show_disabled_users,get_user_and_library_selection_type
from mumc_modules.mumc_setup_questions import get_brand,get_url,get_port,get_base,get_admin_username,get_admin_password,get_library_setup_behavior,get_library_matching_behavior,get_tag_name,get_show_disabled_users,get_user_and_library_selection_type,proceed_arr_setup,get_arr_url,get_arr_port,get_arr_api
from mumc_modules.mumc_key_authentication import authenticate_user_by_name
from mumc_modules.mumc_versions import get_script_version
from mumc_modules.mumc_console_info import print_all_media_disabled,built_new_config_not_setup_to_delete_media
Expand Down Expand Up @@ -142,6 +142,34 @@ def build_configuration_file(the_dict,orig_dict={}):

print('----------------------------------------------------------------------------------------')

#Add Sonarr and Radarr API settings to MUMC
#arrDict={'Radarr':'7878','Sonarr':'8989','Lidarr':'8686','Readarr':'8787'}
arrDict={'Radarr':'7878','Sonarr':'8989'}

for arr in arrDict:
if (proceed_arr_setup(arr)):
#define *arr dict
the_dict['admin_settings']['media_managers'][arr.casefold()]={}
#enable *arr
the_dict['admin_settings']['media_managers'][arr.casefold()]['enabled']=True
#get *arr url
arr_url=get_arr_url(arr)
#get *arr port
arr_port=get_arr_port(arr,arrDict[arr])
#build *arr url
if (len(arr_port)):
#*arr url with port
the_dict['admin_settings']['media_managers'][arr.casefold()]['url']=arr_url + ':' + arr_port
else:
#*arr url without port
the_dict['admin_settings']['media_managers'][arr.casefold()]['url']=arr_url
#get *arr api
the_dict['admin_settings']['media_managers'][arr.casefold()]['api_key']=get_arr_api(arr)

print('----------------------------------------------------------------------------------------')

print('----------------------------------------------------------------------------------------')

#set REMOVE_FILES
the_dict['advanced_settings']['REMOVE_FILES']=False

Expand All @@ -160,16 +188,6 @@ def build_configuration_file(the_dict,orig_dict={}):
strings_list_to_print=built_new_config_not_setup_to_delete_media('',the_dict)
print_byType(strings_list_to_print,the_dict['advanced_settings']['console_controls']['warnings']['script']['show'],the_dict,the_dict['formatting'])

'''
try:
print_byType(strings_list_to_print,the_dict['advanced_settings']['console_controls']['warnings']['script']['show'],the_dict,the_dict['advanced_settings']['console_controls']['warnings']['script']['formatting'])
except:
try:
print_byType(strings_list_to_print[0],True,the_dict,{'font':{'color':'','style':''},'background':{'color':''}})
except:
pass
'''

#the exception
except (AttributeError, ModuleNotFoundError):
#something went wrong
Expand Down
100 changes: 100 additions & 0 deletions mumc_modules/mumc_config_default.py
Original file line number Diff line number Diff line change
Expand Up @@ -1091,6 +1091,54 @@ def merge_configuration(default_base,merge):
default_base['advanced_settings']['episode_control']['minimum_episodes_behavior']=merge['advanced_settings']['episode_control']['minimum_episodes_behavior']
except:
pass
try:
default_base['advanced_settings']['episode_control']['series_ended']['delete_episodes']=merge['advanced_settings']['episode_control']['series_ended']['delete_episodes']
except:
pass

try:
default_base['advanced_settings']['radarr']['movie']['unmonitor']=merge['advanced_settings']['radarr']['movie']['unmonitor']
except:
pass
try:
default_base['advanced_settings']['radarr']['movie']['remove']=merge['advanced_settings']['radarr']['movie']['remove']
except:
pass

try:
default_base['advanced_settings']['sonarr']['series']['unmonitor']=merge['advanced_settings']['sonarr']['series']['unmonitor']
except:
pass
try:
default_base['advanced_settings']['sonarr']['series']['remove']=merge['advanced_settings']['sonarr']['series']['unmonitor']
except:
pass
try:
default_base['advanced_settings']['sonarr']['episode']['unmonitor']=merge['advanced_settings']['sonarr']['episode']['remove']
except:
pass

try:
default_base['advanced_settings']['lidarr']['album']['unmonitor']=merge['advanced_settings']['lidarr']['album']['unmonitor']
except:
pass
try:
default_base['advanced_settings']['lidarr']['album']['remove']=merge['advanced_settings']['album']['album']['remove']
except:
pass
try:
default_base['advanced_settings']['lidarr']['track']['unmonitor']=merge['advanced_settings']['lidarr']['track']['unmonitor']
except:
pass

try:
default_base['advanced_settings']['readarr']['book']['unmonitor']=merge['advanced_settings']['readarr']['readarr']['unmonitor']
except:
pass
try:
default_base['advanced_settings']['readarr']['book']['delete']=merge['advanced_settings']['readarr']['readarr']['delete']
except:
pass

try:
default_base['advanced_settings']['trakt_fix']['set_missing_last_played_date']['movie']=merge['advanced_settings']['trakt_fix']['set_missing_last_played_date']['movie']
Expand Down Expand Up @@ -1510,6 +1558,58 @@ def merge_configuration(default_base,merge):
except:
error_found_in_mumc_config_yaml+='ConfigNameError: admin_settings > users is missing from the mumc_config.yaml\n'

try:
default_base['admin_settings']['media_managers']['radarr']['enabled']=merge['admin_settings']['media_managers']['radarr']['enabled']
except:
pass
try:
default_base['admin_settings']['media_managers']['radarr']['url']=merge['admin_settings']['media_managers']['radarr']['url']
except:
pass
try:
default_base['admin_settings']['media_managers']['radarr']['api_key']=merge['admin_settings']['media_managers']['radarr']['api_key']
except:
pass

try:
default_base['admin_settings']['media_managers']['sonarr']['enabled']=merge['admin_settings']['media_managers']['sonarr']['enabled']
except:
pass
try:
default_base['admin_settings']['media_managers']['sonarr']['url']=merge['admin_settings']['media_managers']['sonarr']['url']
except:
pass
try:
default_base['admin_settings']['media_managers']['sonarr']['api_key']=merge['admin_settings']['media_managers']['sonarr']['api_key']
except:
pass

try:
default_base['admin_settings']['media_managers']['lidarr']['enabled']=merge['admin_settings']['media_managers']['lidarr']['enabled']
except:
pass
try:
default_base['admin_settings']['media_managers']['lidarr']['url']=merge['admin_settings']['media_managers']['lidarr']['url']
except:
pass
try:
default_base['admin_settings']['media_managers']['lidarr']['api_key']=merge['admin_settings']['media_managers']['lidarr']['api_key']
except:
pass

try:
default_base['admin_settings']['media_managers']['readarr']['enabled']=merge['admin_settings']['media_managers']['readarr']['enabled']
except:
pass
try:
default_base['admin_settings']['media_managers']['readarr']['url']=merge['admin_settings']['media_managers']['readarr']['url']
except:
pass
try:
default_base['admin_settings']['media_managers']['readarr']['api_key']=merge['admin_settings']['media_managers']['readarr']['api_key']
except:
pass

try:
default_base['admin_settings']['api_controls']['attempts']=merge['admin_settings']['api_controls']['attempts']
except:
Expand Down
25 changes: 25 additions & 0 deletions mumc_modules/mumc_config_skeleton.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,25 @@ def setYAMLConfigSkeleton(the_dict):
the_dict['advanced_settings']['delete_empty_folders']['episode']['series']=False

the_dict['advanced_settings']['episode_control']={}
the_dict['advanced_settings']['episode_control']['minimum_episodes']=None
the_dict['advanced_settings']['episode_control']['minimum_played_episodes']=None
the_dict['advanced_settings']['episode_control']['minimum_episodes_behavior']=None
the_dict['advanced_settings']['episode_control']['series_ended']={}
the_dict['advanced_settings']['episode_control']['series_ended']['delete_episodes']=False

the_dict['advanced_settings']['radarr']={}
the_dict['advanced_settings']['radarr']['movie']={}

the_dict['advanced_settings']['sonarr']={}
the_dict['advanced_settings']['sonarr']['series']={}
the_dict['advanced_settings']['sonarr']['episode']={}

#the_dict['advanced_settings']['lidarr']={}
#the_dict['advanced_settings']['lidarr']['album']={}
#the_dict['advanced_settings']['lidarr']['track']={}

#the_dict['advanced_settings']['readarr']={}
#the_dict['advanced_settings']['readarr']['book']={}

the_dict['advanced_settings']['trakt_fix']={}
the_dict['advanced_settings']['trakt_fix']['set_missing_last_played_date']={}
Expand Down Expand Up @@ -495,6 +514,12 @@ def setYAMLConfigSkeleton(the_dict):

the_dict['admin_settings']['users']=[]

the_dict['admin_settings']['media_managers']={}
the_dict['admin_settings']['media_managers']['radarr']={}
the_dict['admin_settings']['media_managers']['sonarr']={}
the_dict['admin_settings']['media_managers']['lidarr']={}
the_dict['admin_settings']['media_managers']['readarr']={}

the_dict['admin_settings']['api_controls']={}

the_dict['admin_settings']['cache']={}
Expand Down
Loading

0 comments on commit 5eaa0c9

Please sign in to comment.