@ -175,6 +175,8 @@ def show(show_id, folder=None, no_search=False):
required = True )
@click.option ( ' --add-limit ' , ' -l ' , default = 0 , help = ' Limit number of shows added to Sonarr. ' , show_default = True )
@click.option ( ' --add-delay ' , ' -d ' , default = 2.5 , help = ' Seconds between each add request to Sonarr. ' , show_default = True )
@click.option ( ' --sort ' , ' -s ' , default = ' votes ' , type = click . Choice ( [ ' votes ' , ' rating ' , ' release ' ] ) ,
help = ' Sort list to process. ' )
@click.option ( ' --genre ' , ' -g ' , default = None , help = ' Only add shows from this genre to Sonarr. ' )
@click.option ( ' --folder ' , ' -f ' , default = None , help = ' Add shows with this root folder to Sonarr. ' )
@click.option ( ' --no-search ' , is_flag = True , help = ' Disable search when adding shows to Sonarr. ' )
@ -182,8 +184,8 @@ def show(show_id, folder=None, no_search=False):
@click.option ( ' --authenticate-user ' ,
help = ' Specify which user to authenticate with to retrieve Trakt lists. Default: first user in the config ' )
@click.option ( ' --ignore-blacklist ' , is_flag = True , help = ' Ignores the blacklist when running the command. ' )
def shows ( list_type , add_limit = 0 , add_delay = 2.5 , genre= None , folder = None , no_search = False , notifications = False ,
authenticate_user= None , ignore_blacklist = False ) :
def shows ( list_type , add_limit = 0 , add_delay = 2.5 , sort= ' votes ' , genre= None , folder = None , no_search = False ,
notifications= False , authenticate_user= None , ignore_blacklist = False ) :
from media . sonarr import Sonarr
from media . trakt import Trakt
from helpers import misc as misc_helper
@ -247,8 +249,15 @@ def shows(list_type, add_limit=0, add_delay=2.5, genre=None, folder=None, no_sea
log . info ( " Removed existing Sonarr shows from Trakt shows list, shows left to process: %d " ,
len ( processed_series_list ) )
# sort filtered series list by highest votes
sorted_series_list = sorted ( processed_series_list , key = lambda k : k [ ' show ' ] [ ' votes ' ] , reverse = True )
# sort filtered series list
if sort == ' release ' :
sorted_series_list = misc_helper . sorted_list ( processed_series_list , ' show ' , ' first_aired ' )
log . info ( " Sorted shows list to process by release date " )
elif sort == ' rating ' :
sorted_series_list = misc_helper . sorted_list ( processed_series_list , ' show ' , ' rating ' )
log . info ( " Sorted shows list to process by highest rating " )
else :
sorted_series_list = misc_helper . sorted_list ( processed_series_list , ' show ' , ' votes ' )
log . info ( " Sorted shows list to process by highest votes " )
# loop series_list
@ -353,6 +362,8 @@ def movie(movie_id, folder=None, no_search=False):
required = True )
@click.option ( ' --add-limit ' , ' -l ' , default = 0 , help = ' Limit number of movies added to Radarr. ' , show_default = True )
@click.option ( ' --add-delay ' , ' -d ' , default = 2.5 , help = ' Seconds between each add request to Radarr. ' , show_default = True )
@click.option ( ' --sort ' , ' -s ' , default = ' votes ' , type = click . Choice ( [ ' votes ' , ' rating ' , ' release ' ] ) ,
help = ' Sort list to process. ' )
@click.option ( ' --genre ' , ' -g ' , default = None , help = ' Only add movies from this genre to Radarr. ' )
@click.option ( ' --folder ' , ' -f ' , default = None , help = ' Add movies with this root folder to Radarr. ' )
@click.option ( ' --no-search ' , is_flag = True , help = ' Disable search when adding movies to Radarr. ' )
@ -360,8 +371,8 @@ def movie(movie_id, folder=None, no_search=False):
@click.option ( ' --authenticate-user ' ,
help = ' Specify which user to authenticate with to retrieve Trakt lists. Default: first user in the config. ' )
@click.option ( ' --ignore-blacklist ' , is_flag = True , help = ' Ignores the blacklist when running the command. ' )
def movies ( list_type , add_limit = 0 , add_delay = 2.5 , genre= None , folder = None , no_search = False , notifications = False ,
authenticate_user= None , ignore_blacklist = False ) :
def movies ( list_type , add_limit = 0 , add_delay = 2.5 , sort= ' votes ' , genre= None , folder = None , no_search = False ,
notifications= False , authenticate_user= None , ignore_blacklist = False ) :
from media . radarr import Radarr
from media . trakt import Trakt
from helpers import misc as misc_helper
@ -426,9 +437,16 @@ def movies(list_type, add_limit=0, add_delay=2.5, genre=None, folder=None, no_se
log . info ( " Removed existing Radarr movies from Trakt movies list, movies left to process: %d " ,
len ( processed_movies_list ) )
# sort filtered movie list by highest votes
sorted_movies_list = sorted ( processed_movies_list , key = lambda k : k [ ' movie ' ] [ ' votes ' ] , reverse = True )
log . info ( " Sorted movie list to process by highest votes " )
# sort filtered movie list
if sort == ' release ' :
sorted_movies_list = misc_helper . sorted_list ( processed_movies_list , ' movie ' , ' released ' )
log . info ( " Sorted movies list to process by release date " )
elif sort == ' rating ' :
sorted_movies_list = misc_helper . sorted_list ( processed_movies_list , ' movie ' , ' rating ' )
log . info ( " Sorted movies list to process by highest rating " )
else :
sorted_movies_list = misc_helper . sorted_list ( processed_movies_list , ' movie ' , ' votes ' )
log . info ( " Sorted movies list to process by highest votes " )
# loop movies
log . info ( " Processing list now... " )
@ -501,7 +519,7 @@ def callback_notify(data):
return
def automatic_shows ( add_delay = 2.5 , no_search= False , notifications = False , ignore_blacklist = False ) :
def automatic_shows ( add_delay = 2.5 , sort= ' votes ' , no_search= False , notifications = False , ignore_blacklist = False ) :
from media . trakt import Trakt
total_shows_added = 0
@ -530,7 +548,7 @@ def automatic_shows(add_delay=2.5, no_search=False, notifications=False, ignore_
# run shows
added_shows = shows . callback ( list_type = list_type , add_limit = limit ,
add_delay = add_delay , no_search= no_search ,
add_delay = add_delay , sort= sort , no_search= no_search ,
notifications = notifications , ignore_blacklist = local_ignore_blacklist )
elif list_type . lower ( ) == ' watchlist ' :
for authenticate_user , limit in value . items ( ) :
@ -547,7 +565,7 @@ def automatic_shows(add_delay=2.5, no_search=False, notifications=False, ignore_
# run shows
added_shows = shows . callback ( list_type = list_type , add_limit = limit ,
add_delay = add_delay , no_search= no_search ,
add_delay = add_delay , sort= sort , no_search= no_search ,
notifications = notifications , authenticate_user = authenticate_user ,
ignore_blacklist = local_ignore_blacklist )
elif list_type . lower ( ) == ' lists ' :
@ -566,7 +584,7 @@ def automatic_shows(add_delay=2.5, no_search=False, notifications=False, ignore_
# run shows
added_shows = shows . callback ( list_type = list , add_limit = limit ,
add_delay = add_delay , no_search= no_search ,
add_delay = add_delay , sort= sort , no_search= no_search ,
notifications = notifications , authenticate_user = authenticate_user ,
ignore_blacklist = local_ignore_blacklist )
@ -589,7 +607,7 @@ def automatic_shows(add_delay=2.5, no_search=False, notifications=False, ignore_
return
def automatic_movies ( add_delay = 2.5 , no_search= False , notifications = False , ignore_blacklist = False ) :
def automatic_movies ( add_delay = 2.5 , sort= ' votes ' , no_search= False , notifications = False , ignore_blacklist = False ) :
from media . trakt import Trakt
total_movies_added = 0
@ -618,8 +636,8 @@ def automatic_movies(add_delay=2.5, no_search=False, notifications=False, ignore
# run movies
added_movies = movies . callback ( list_type = list_type , add_limit = limit ,
add_delay = add_delay , no_search= no_search ,
notifications = notifications , ignore_blacklist = local_ignore_blacklist )
add_delay = add_delay , sort= sort , no_search= no_search ,
notifications = notifications )
elif list_type . lower ( ) == ' watchlist ' :
for authenticate_user , limit in value . items ( ) :
if limit < = 0 :
@ -635,7 +653,7 @@ def automatic_movies(add_delay=2.5, no_search=False, notifications=False, ignore
# run movies
added_movies = movies . callback ( list_type = list_type , add_limit = limit ,
add_delay = add_delay , no_search= no_search ,
add_delay = add_delay , sort= sort , no_search= no_search ,
notifications = notifications , authenticate_user = authenticate_user ,
ignore_blacklist = local_ignore_blacklist )
elif list_type . lower ( ) == ' lists ' :
@ -654,7 +672,7 @@ def automatic_movies(add_delay=2.5, no_search=False, notifications=False, ignore
# run shows
added_movies = movies . callback ( list_type = list , add_limit = limit ,
add_delay = add_delay , no_search= no_search ,
add_delay = add_delay , sort= sort , no_search= no_search ,
notifications = notifications , authenticate_user = authenticate_user ,
ignore_blacklist = local_ignore_blacklist )
@ -680,11 +698,13 @@ def automatic_movies(add_delay=2.5, no_search=False, notifications=False, ignore
@app.command ( help = ' Run in automatic mode. ' )
@click.option ( ' --add-delay ' , ' -d ' , default = 2.5 , help = ' Seconds between each add request to Sonarr / Radarr. ' ,
show_default = True )
@click.option ( ' --sort ' , ' -s ' , default = ' votes ' , type = click . Choice ( [ ' votes ' , ' rating ' , ' release ' ] ) ,
help = ' Sort list to process. ' )
@click.option ( ' --no-search ' , is_flag = True , help = ' Disable search when adding to Sonarr / Radarr. ' )
@click.option ( ' --run-now ' , is_flag = True , help = " Do a first run immediately without waiting. " )
@click.option ( ' --no-notifications ' , is_flag = True , help = " Disable notifications. " )
@click.option ( ' --ignore-blacklist ' , is_flag = True , help = ' Ignores the blacklist when running the command. ' )
def run ( add_delay = 2.5 , no_search= False , run_now = False , no_notifications = False , ignore_blacklist = False ) :
def run ( add_delay = 2.5 , sort= ' votes ' , no_search= False , run_now = False , no_notifications = False , ignore_blacklist = False ) :
log . info ( " Automatic mode is now running... " )
# Add tasks to schedule and do first run if enabled
@ -692,6 +712,7 @@ def run(add_delay=2.5, no_search=False, run_now=False, no_notifications=False, i
movie_schedule = schedule . every ( cfg . automatic . movies . interval ) . hours . do (
automatic_movies ,
add_delay ,
sort ,
no_search ,
not no_notifications ,
ignore_blacklist
@ -706,6 +727,7 @@ def run(add_delay=2.5, no_search=False, run_now=False, no_notifications=False, i
shows_schedule = schedule . every ( cfg . automatic . shows . interval ) . hours . do (
automatic_shows ,
add_delay ,
sort ,
no_search ,
not no_notifications ,
ignore_blacklist