Merge branch 'develop' into ignoreBlacklist

pull/54/head
James 7 years ago committed by desimaniac
commit c39868fd28

@ -261,7 +261,8 @@ You can repeat this process for as many users as you like.
"pushover": {
"service": "pushover",
"app_token": "",
"user_token": ""
"user_token": "",
"priority": 0
},
"slack": {
"service": "slack",
@ -591,7 +592,8 @@ Currently, only Pushover and Slack are supported. More will be added later.
"pushover": {
"service": "pushover",
"app_token": "",
"user_token": ""
"user_token": "",
"priority": 0
},
"slack": {
"service": "slack",
@ -609,6 +611,8 @@ Currently, only Pushover and Slack are supported. More will be added later.
`app_token` and `user_token` - retrieve from Pushover.net.
You can specify a priority for the messages send via Pushover using the `priority` key. It can be any Pushover priority value (https://pushover.net/api#priority).
_Note: The key name (i.e the name right under notifications) can be anything, but the `"service":` must be exactly `"pushover"`._

@ -1,3 +1,5 @@
from copy import copy
from misc.log import logger
log = logger.get_logger(__name__)
@ -63,3 +65,15 @@ def allowed_genres(genre, object_type, trakt_object):
allowed_object = True
break
return allowed_object
def sorted_list(original_list, list_type, sort_key, reverse=True):
prepared_list = copy(original_list)
for item in prepared_list:
if not item[list_type][sort_key]:
if sort_key == 'released' or sort_key == 'first_aired':
item[list_type][sort_key] = ""
else:
item[list_type][sort_key] = 0
return sorted(prepared_list, key=lambda k: k[list_type][sort_key], reverse=reverse)

@ -8,9 +8,10 @@ log = logger.get_logger(__name__)
class Pushover:
NAME = "Pushover"
def __init__(self, app_token, user_token):
def __init__(self, app_token, user_token, priority=0):
self.app_token = app_token
self.user_token = user_token
self.priority = priority
log.debug("Initialized Pushover notification agent")
def send(self, **kwargs):
@ -23,7 +24,8 @@ class Pushover:
payload = {
'token': self.app_token,
'user': self.user_token,
'message': kwargs['message']
'message': kwargs['message'],
'priority': self.priority,
}
resp = requests.post('https://api.pushover.net/1/messages.json', data=payload, timeout=30)
return True if resp.status_code == 200 else False

@ -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

Loading…
Cancel
Save