mirror of
https://github.com/morpheus65535/bazarr.git
synced 2025-02-25 07:15:56 +08:00
code cleanup: scheduler
This commit is contained in:
parent
a1a452e452
commit
f3405d645b
2 changed files with 201 additions and 183 deletions
|
@ -28,7 +28,6 @@ import queueconfig
|
||||||
import platform
|
import platform
|
||||||
import apprise
|
import apprise
|
||||||
import operator
|
import operator
|
||||||
from calendar import day_name
|
|
||||||
|
|
||||||
from get_args import args
|
from get_args import args
|
||||||
from logger import empty_log
|
from logger import empty_log
|
||||||
|
@ -61,11 +60,14 @@ from get_subtitle import download_subtitle, series_download_subtitles, movies_do
|
||||||
manual_search, manual_download_subtitle, manual_upload_subtitle
|
manual_search, manual_download_subtitle, manual_upload_subtitle
|
||||||
from utils import history_log, history_log_movie, get_sonarr_version, get_radarr_version
|
from utils import history_log, history_log_movie, get_sonarr_version, get_radarr_version
|
||||||
from helper import path_replace_reverse, path_replace_reverse_movie
|
from helper import path_replace_reverse, path_replace_reverse_movie
|
||||||
from scheduler import *
|
from scheduler import Scheduler
|
||||||
from notifier import send_notifications, send_notifications_movie
|
from notifier import send_notifications, send_notifications_movie
|
||||||
from subliminal_patch.extensions import provider_registry as provider_manager
|
from subliminal_patch.extensions import provider_registry as provider_manager
|
||||||
from subliminal_patch.core import SUBTITLE_EXTENSIONS
|
from subliminal_patch.core import SUBTITLE_EXTENSIONS
|
||||||
|
|
||||||
|
|
||||||
|
scheduler = Scheduler()
|
||||||
|
|
||||||
if six.PY2:
|
if six.PY2:
|
||||||
reload(sys)
|
reload(sys)
|
||||||
sys.setdefaultencoding('utf8')
|
sys.setdefaultencoding('utf8')
|
||||||
|
@ -920,7 +922,7 @@ def search_missing_subtitles(no):
|
||||||
authorize()
|
authorize()
|
||||||
ref = request.environ['HTTP_REFERER']
|
ref = request.environ['HTTP_REFERER']
|
||||||
|
|
||||||
add_job(series_download_subtitles, args=[no], name=('search_missing_subtitles_' + str(no)))
|
scheduler.add_job(series_download_subtitles, args=[no], name=('search_missing_subtitles_' + str(no)))
|
||||||
|
|
||||||
redirect(ref)
|
redirect(ref)
|
||||||
|
|
||||||
|
@ -931,7 +933,7 @@ def search_missing_subtitles_movie(no):
|
||||||
authorize()
|
authorize()
|
||||||
ref = request.environ['HTTP_REFERER']
|
ref = request.environ['HTTP_REFERER']
|
||||||
|
|
||||||
add_job(movies_download_subtitles, args=[no], name=('movies_download_subtitles_' + str(no)))
|
scheduler.add_job(movies_download_subtitles, args=[no], name=('movies_download_subtitles_' + str(no)))
|
||||||
|
|
||||||
redirect(ref)
|
redirect(ref)
|
||||||
|
|
||||||
|
@ -1177,7 +1179,7 @@ def wanted_search_missing_subtitles_list():
|
||||||
authorize()
|
authorize()
|
||||||
ref = request.environ['HTTP_REFERER']
|
ref = request.environ['HTTP_REFERER']
|
||||||
|
|
||||||
add_job(wanted_search_missing_subtitles, name='manual_wanted_search_missing_subtitles')
|
scheduler.add_job(wanted_search_missing_subtitles, name='manual_wanted_search_missing_subtitles')
|
||||||
|
|
||||||
redirect(ref)
|
redirect(ref)
|
||||||
|
|
||||||
|
@ -1613,12 +1615,8 @@ def save_settings():
|
||||||
notifier_url = request.forms.get('settings_notifier_' + notifier['name'] + '_url')
|
notifier_url = request.forms.get('settings_notifier_' + notifier['name'] + '_url')
|
||||||
database.execute("UPDATE table_settings_notifier SET enabled=?, url=? WHERE name=?",
|
database.execute("UPDATE table_settings_notifier SET enabled=?, url=? WHERE name=?",
|
||||||
(enabled,notifier_url,notifier['name']))
|
(enabled,notifier_url,notifier['name']))
|
||||||
|
|
||||||
schedule_update_job()
|
scheduler.update_configurable_tasks()
|
||||||
sonarr_full_update()
|
|
||||||
radarr_full_update()
|
|
||||||
schedule_wanted_search()
|
|
||||||
schedule_upgrade_subs()
|
|
||||||
|
|
||||||
logging.info('BAZARR Settings saved succesfully.')
|
logging.info('BAZARR Settings saved succesfully.')
|
||||||
|
|
||||||
|
@ -1645,61 +1643,8 @@ def check_update():
|
||||||
def system():
|
def system():
|
||||||
authorize()
|
authorize()
|
||||||
|
|
||||||
def get_time_from_interval(td_object):
|
task_list = scheduler.get_task_list()
|
||||||
seconds = int(td_object.total_seconds())
|
|
||||||
periods = [
|
|
||||||
('year', 60 * 60 * 24 * 365),
|
|
||||||
('month', 60 * 60 * 24 * 30),
|
|
||||||
('day', 60 * 60 * 24),
|
|
||||||
('hour', 60 * 60),
|
|
||||||
('minute', 60),
|
|
||||||
('second', 1)
|
|
||||||
]
|
|
||||||
|
|
||||||
strings = []
|
|
||||||
for period_name, period_seconds in periods:
|
|
||||||
if seconds > period_seconds:
|
|
||||||
period_value, seconds = divmod(seconds, period_seconds)
|
|
||||||
has_s = 's' if period_value > 1 else ''
|
|
||||||
strings.append("%s %s%s" % (period_value, period_name, has_s))
|
|
||||||
|
|
||||||
return ", ".join(strings)
|
|
||||||
|
|
||||||
def get_time_from_cron(cron):
|
|
||||||
year = str(cron[0])
|
|
||||||
if year == "2100":
|
|
||||||
return "Never"
|
|
||||||
|
|
||||||
day = str(cron[4])
|
|
||||||
hour = str(cron[5])
|
|
||||||
text = ""
|
|
||||||
|
|
||||||
if day == "*":
|
|
||||||
text = "everyday"
|
|
||||||
else:
|
|
||||||
text = "every " + day_name[int(day)]
|
|
||||||
|
|
||||||
if hour != "*":
|
|
||||||
text += " at " + hour + ":00"
|
|
||||||
|
|
||||||
return text
|
|
||||||
|
|
||||||
task_list = []
|
|
||||||
for job in scheduler.get_jobs():
|
|
||||||
if isinstance(job.trigger, CronTrigger):
|
|
||||||
if str(job.trigger.__getstate__()['fields'][0]) == "2100":
|
|
||||||
next_run = 'Never'
|
|
||||||
else:
|
|
||||||
next_run = pretty.date(job.next_run_time.replace(tzinfo=None))
|
|
||||||
else:
|
|
||||||
next_run = pretty.date(job.next_run_time.replace(tzinfo=None))
|
|
||||||
|
|
||||||
if isinstance(job.trigger, IntervalTrigger):
|
|
||||||
interval = "every " + get_time_from_interval(job.trigger.__getstate__()['interval'])
|
|
||||||
task_list.append([job.name, interval, next_run, job.id])
|
|
||||||
elif isinstance(job.trigger, CronTrigger):
|
|
||||||
task_list.append([job.name, get_time_from_cron(job.trigger.fields), next_run, job.id])
|
|
||||||
|
|
||||||
throttled_providers = list_throttled_providers()
|
throttled_providers = list_throttled_providers()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -1744,9 +1689,9 @@ def get_logs():
|
||||||
def execute_task(taskid):
|
def execute_task(taskid):
|
||||||
authorize()
|
authorize()
|
||||||
ref = request.environ['HTTP_REFERER']
|
ref = request.environ['HTTP_REFERER']
|
||||||
|
|
||||||
execute_now(taskid)
|
scheduler.execute_job_now(taskid)
|
||||||
|
|
||||||
redirect(ref)
|
redirect(ref)
|
||||||
|
|
||||||
|
|
||||||
|
@ -2162,7 +2107,7 @@ def notifications():
|
||||||
@custom_auth_basic(check_credentials)
|
@custom_auth_basic(check_credentials)
|
||||||
def running_tasks_list():
|
def running_tasks_list():
|
||||||
authorize()
|
authorize()
|
||||||
return dict(tasks=running_tasks)
|
return dict(tasks=scheduler.get_running_tasks())
|
||||||
|
|
||||||
|
|
||||||
@route(base_url + 'episode_history/<no:int>')
|
@route(base_url + 'episode_history/<no:int>')
|
||||||
|
|
|
@ -20,134 +20,207 @@ from apscheduler.events import EVENT_JOB_SUBMITTED, EVENT_JOB_EXECUTED, EVENT_JO
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import pytz
|
import pytz
|
||||||
from tzlocal import get_localzone
|
from tzlocal import get_localzone
|
||||||
|
from calendar import day_name
|
||||||
|
import pretty
|
||||||
|
|
||||||
|
|
||||||
def sonarr_full_update():
|
class Scheduler:
|
||||||
if settings.general.getboolean('use_sonarr'):
|
|
||||||
full_update = settings.sonarr.full_update
|
|
||||||
if full_update == "Daily":
|
|
||||||
scheduler.add_job(update_all_episodes, CronTrigger(hour=settings.sonarr.full_update_hour), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_all_episodes',
|
|
||||||
name='Update all Episode Subtitles from disk', replace_existing=True)
|
|
||||||
elif full_update == "Weekly":
|
|
||||||
scheduler.add_job(update_all_episodes, CronTrigger(day_of_week=settings.sonarr.full_update_day, hour=settings.sonarr.full_update_hour), max_instances=1,
|
|
||||||
coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_all_episodes',
|
|
||||||
name='Update all Episode Subtitles from disk', replace_existing=True)
|
|
||||||
elif full_update == "Manually":
|
|
||||||
scheduler.add_job(update_all_episodes, CronTrigger(year='2100'), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_all_episodes',
|
|
||||||
name='Update all Episode Subtitles from disk', replace_existing=True)
|
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.__running_tasks = []
|
||||||
|
|
||||||
def radarr_full_update():
|
if str(get_localzone()) == "local":
|
||||||
if settings.general.getboolean('use_radarr'):
|
self.aps_scheduler = BackgroundScheduler(timezone=pytz.timezone('UTC'))
|
||||||
full_update = settings.radarr.full_update
|
|
||||||
if full_update == "Daily":
|
|
||||||
scheduler.add_job(update_all_movies, CronTrigger(hour=settings.radarr.full_update_hour), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15,
|
|
||||||
id='update_all_movies', name='Update all Movie Subtitles from disk',
|
|
||||||
replace_existing=True)
|
|
||||||
elif full_update == "Weekly":
|
|
||||||
scheduler.add_job(update_all_movies, CronTrigger(day_of_week=settings.radarr.full_update_day, hour=settings.radarr.full_update_hour), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_all_movies',
|
|
||||||
name='Update all Movie Subtitles from disk',
|
|
||||||
replace_existing=True)
|
|
||||||
elif full_update == "Manually":
|
|
||||||
scheduler.add_job(update_all_movies, CronTrigger(year='2100'), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_all_movies',
|
|
||||||
name='Update all Movie Subtitles from disk',
|
|
||||||
replace_existing=True)
|
|
||||||
|
|
||||||
|
|
||||||
def execute_now(taskid):
|
|
||||||
scheduler.modify_job(taskid, next_run_time=datetime.now())
|
|
||||||
|
|
||||||
|
|
||||||
if str(get_localzone()) == "local":
|
|
||||||
scheduler = BackgroundScheduler(timezone=pytz.timezone('UTC'))
|
|
||||||
else:
|
|
||||||
scheduler = BackgroundScheduler()
|
|
||||||
|
|
||||||
global running_tasks
|
|
||||||
running_tasks = []
|
|
||||||
|
|
||||||
|
|
||||||
def task_listener_add(event):
|
|
||||||
if event.job_id not in running_tasks:
|
|
||||||
running_tasks.append(event.job_id)
|
|
||||||
|
|
||||||
|
|
||||||
def task_listener_remove(event):
|
|
||||||
if event.job_id in running_tasks:
|
|
||||||
running_tasks.remove(event.job_id)
|
|
||||||
|
|
||||||
|
|
||||||
scheduler.add_listener(task_listener_add, EVENT_JOB_SUBMITTED)
|
|
||||||
scheduler.add_listener(task_listener_remove, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
|
|
||||||
|
|
||||||
|
|
||||||
def schedule_update_job():
|
|
||||||
if not args.no_update:
|
|
||||||
if settings.general.getboolean('auto_update'):
|
|
||||||
scheduler.add_job(check_and_apply_update, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_bazarr',
|
|
||||||
name='Update Bazarr from source on Github' if not args.release_update else 'Update Bazarr from release on Github',
|
|
||||||
replace_existing=True)
|
|
||||||
else:
|
else:
|
||||||
scheduler.add_job(check_and_apply_update, CronTrigger(year='2100'), hour=4, id='update_bazarr',
|
self.aps_scheduler = BackgroundScheduler()
|
||||||
name='Update Bazarr from source on Github' if not args.release_update else 'Update Bazarr from release on Github',
|
|
||||||
replace_existing=True)
|
|
||||||
scheduler.add_job(check_releases, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15, id='update_release', name='Update Release Info',
|
|
||||||
replace_existing=True)
|
|
||||||
|
|
||||||
else:
|
|
||||||
scheduler.add_job(check_releases, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
|
|
||||||
misfire_grace_time=15,
|
|
||||||
id='update_release', name='Update Release Info', replace_existing=True)
|
|
||||||
|
|
||||||
|
# task listener
|
||||||
|
def task_listener_add(event):
|
||||||
|
if event.job_id not in self.__running_tasks:
|
||||||
|
self.__running_tasks.append(event.job_id)
|
||||||
|
|
||||||
if settings.general.getboolean('use_sonarr'):
|
def task_listener_remove(event):
|
||||||
scheduler.add_job(update_series, IntervalTrigger(minutes=1), max_instances=1, coalesce=True, misfire_grace_time=15,
|
if event.job_id in self.__running_tasks:
|
||||||
id='update_series', name='Update Series list from Sonarr')
|
self.__running_tasks.remove(event.job_id)
|
||||||
scheduler.add_job(sync_episodes, IntervalTrigger(minutes=5), max_instances=1, coalesce=True, misfire_grace_time=15,
|
|
||||||
id='sync_episodes', name='Sync episodes with Sonarr')
|
|
||||||
|
|
||||||
if settings.general.getboolean('use_radarr'):
|
self.aps_scheduler.add_listener(task_listener_add, EVENT_JOB_SUBMITTED)
|
||||||
scheduler.add_job(update_movies, IntervalTrigger(minutes=5), max_instances=1, coalesce=True, misfire_grace_time=15,
|
self.aps_scheduler.add_listener(task_listener_remove, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
|
||||||
id='update_movies', name='Update Movie list from Radarr')
|
|
||||||
|
|
||||||
def schedule_wanted_search():
|
# configure all tasks
|
||||||
if settings.general.getboolean('use_sonarr') or settings.general.getboolean('use_radarr'):
|
self.__sonarr_update_task()
|
||||||
scheduler.add_job(wanted_search_missing_subtitles,
|
self.__radarr_update_task()
|
||||||
IntervalTrigger(hours=int(settings.general.wanted_search_frequency)), max_instances=1,
|
self.__cache_cleanup_task()
|
||||||
coalesce=True, misfire_grace_time=15, id='wanted_search_missing_subtitles',
|
self.update_configurable_tasks()
|
||||||
name='Search for wanted Subtitles', replace_existing=True)
|
|
||||||
|
|
||||||
|
self.aps_scheduler.start()
|
||||||
|
|
||||||
def schedule_upgrade_subs():
|
def update_configurable_tasks(self):
|
||||||
if settings.general.getboolean('upgrade_subs') and (settings.general.getboolean('use_sonarr') or
|
self.__sonarr_full_update_task()
|
||||||
settings.general.getboolean('use_radarr')):
|
self.__radarr_full_update_task()
|
||||||
scheduler.add_job(upgrade_subtitles, IntervalTrigger(hours=int(settings.general.upgrade_frequency)),
|
self.__update_bazarr_task()
|
||||||
max_instances=1, coalesce=True, misfire_grace_time=15, id='upgrade_subtitles',
|
self.__search_wanted_subtitles_task()
|
||||||
name='Upgrade previously downloaded Subtitles', replace_existing=True)
|
self.__upgrade_subtitles_task()
|
||||||
|
|
||||||
scheduler.add_job(cache_maintenance, IntervalTrigger(hours=24), max_instances=1, coalesce=True,
|
def add_job(self, job, name=None, max_instances=1, coalesce=True, args=None):
|
||||||
misfire_grace_time=15, id='cache_cleanup', name='Cache maintenance')
|
self.aps_scheduler.add_job(
|
||||||
|
job, DateTrigger(run_date=datetime.now()), name=name, id=name, max_instances=max_instances,
|
||||||
|
coalesce=coalesce, args=args)
|
||||||
|
|
||||||
schedule_update_job()
|
def execute_job_now(self, taskid):
|
||||||
sonarr_full_update()
|
self.aps_scheduler.modify_job(taskid, next_run_time=datetime.now())
|
||||||
radarr_full_update()
|
|
||||||
schedule_wanted_search()
|
|
||||||
schedule_upgrade_subs()
|
|
||||||
scheduler.start()
|
|
||||||
|
|
||||||
|
def get_running_tasks(self):
|
||||||
|
return self.__running_tasks
|
||||||
|
|
||||||
def add_job(job, name=None, max_instances=1, coalesce=True, args=None):
|
def get_task_list(self):
|
||||||
scheduler.add_job(job, DateTrigger(run_date=datetime.now()), name=name, id=name, max_instances=max_instances,
|
def get_time_from_interval(td_object):
|
||||||
coalesce=coalesce, args=args)
|
seconds = int(td_object.total_seconds())
|
||||||
|
periods = [
|
||||||
|
('year', 60 * 60 * 24 * 365),
|
||||||
|
('month', 60 * 60 * 24 * 30),
|
||||||
|
('day', 60 * 60 * 24),
|
||||||
|
('hour', 60 * 60),
|
||||||
|
('minute', 60),
|
||||||
|
('second', 1)
|
||||||
|
]
|
||||||
|
|
||||||
|
strings = []
|
||||||
|
for period_name, period_seconds in periods:
|
||||||
|
if seconds > period_seconds:
|
||||||
|
period_value, seconds = divmod(seconds, period_seconds)
|
||||||
|
has_s = 's' if period_value > 1 else ''
|
||||||
|
strings.append("%s %s%s" % (period_value, period_name, has_s))
|
||||||
|
|
||||||
def shutdown_scheduler():
|
return ", ".join(strings)
|
||||||
scheduler.shutdown(wait=True)
|
|
||||||
|
def get_time_from_cron(cron):
|
||||||
|
year = str(cron[0])
|
||||||
|
if year == "2100":
|
||||||
|
return "Never"
|
||||||
|
|
||||||
|
day = str(cron[4])
|
||||||
|
hour = str(cron[5])
|
||||||
|
|
||||||
|
if day == "*":
|
||||||
|
text = "everyday"
|
||||||
|
else:
|
||||||
|
text = "every " + day_name[int(day)]
|
||||||
|
|
||||||
|
if hour != "*":
|
||||||
|
text += " at " + hour + ":00"
|
||||||
|
|
||||||
|
return text
|
||||||
|
|
||||||
|
task_list = []
|
||||||
|
for job in self.aps_scheduler.get_jobs():
|
||||||
|
if isinstance(job.trigger, CronTrigger):
|
||||||
|
if str(job.trigger.__getstate__()['fields'][0]) == "2100":
|
||||||
|
next_run = 'Never'
|
||||||
|
else:
|
||||||
|
next_run = pretty.date(job.next_run_time.replace(tzinfo=None))
|
||||||
|
else:
|
||||||
|
next_run = pretty.date(job.next_run_time.replace(tzinfo=None))
|
||||||
|
|
||||||
|
if isinstance(job.trigger, IntervalTrigger):
|
||||||
|
interval = "every " + get_time_from_interval(job.trigger.__getstate__()['interval'])
|
||||||
|
task_list.append([job.name, interval, next_run, job.id])
|
||||||
|
elif isinstance(job.trigger, CronTrigger):
|
||||||
|
task_list.append([job.name, get_time_from_cron(job.trigger.fields), next_run, job.id])
|
||||||
|
|
||||||
|
return task_list
|
||||||
|
|
||||||
|
def __sonarr_update_task(self):
|
||||||
|
if settings.general.getboolean('use_sonarr'):
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_series, IntervalTrigger(minutes=1), max_instances=1, coalesce=True, misfire_grace_time=15,
|
||||||
|
id='update_series', name='Update Series list from Sonarr')
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
sync_episodes, IntervalTrigger(minutes=5), max_instances=1, coalesce=True, misfire_grace_time=15,
|
||||||
|
id='sync_episodes', name='Sync episodes with Sonarr')
|
||||||
|
|
||||||
|
def __radarr_update_task(self):
|
||||||
|
if settings.general.getboolean('use_radarr'):
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_movies, IntervalTrigger(minutes=5), max_instances=1, coalesce=True, misfire_grace_time=15,
|
||||||
|
id='update_movies', name='Update Movie list from Radarr')
|
||||||
|
|
||||||
|
def __cache_cleanup_task(self):
|
||||||
|
self.aps_scheduler.add_job(cache_maintenance, IntervalTrigger(hours=24), max_instances=1, coalesce=True,
|
||||||
|
misfire_grace_time=15, id='cache_cleanup', name='Cache maintenance')
|
||||||
|
|
||||||
|
def __sonarr_full_update_task(self):
|
||||||
|
if settings.general.getboolean('use_sonarr'):
|
||||||
|
full_update = settings.sonarr.full_update
|
||||||
|
if full_update == "Daily":
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_all_episodes, CronTrigger(hour=settings.sonarr.full_update_hour), max_instances=1,
|
||||||
|
coalesce=True, misfire_grace_time=15, id='update_all_episodes',
|
||||||
|
name='Update all Episode Subtitles from disk', replace_existing=True)
|
||||||
|
elif full_update == "Weekly":
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_all_episodes,
|
||||||
|
CronTrigger(day_of_week=settings.sonarr.full_update_day, hour=settings.sonarr.full_update_hour),
|
||||||
|
max_instances=1, coalesce=True, misfire_grace_time=15, id='update_all_episodes',
|
||||||
|
name='Update all Episode Subtitles from disk', replace_existing=True)
|
||||||
|
elif full_update == "Manually":
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_all_episodes, CronTrigger(year='2100'), max_instances=1, coalesce=True,
|
||||||
|
misfire_grace_time=15, id='update_all_episodes',
|
||||||
|
name='Update all Episode Subtitles from disk', replace_existing=True)
|
||||||
|
|
||||||
|
def __radarr_full_update_task(self):
|
||||||
|
if settings.general.getboolean('use_radarr'):
|
||||||
|
full_update = settings.radarr.full_update
|
||||||
|
if full_update == "Daily":
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_all_movies, CronTrigger(hour=settings.radarr.full_update_hour), max_instances=1,
|
||||||
|
coalesce=True, misfire_grace_time=15,
|
||||||
|
id='update_all_movies', name='Update all Movie Subtitles from disk', replace_existing=True)
|
||||||
|
elif full_update == "Weekly":
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_all_movies,
|
||||||
|
CronTrigger(day_of_week=settings.radarr.full_update_day, hour=settings.radarr.full_update_hour),
|
||||||
|
max_instances=1, coalesce=True, misfire_grace_time=15, id='update_all_movies',
|
||||||
|
name='Update all Movie Subtitles from disk', replace_existing=True)
|
||||||
|
elif full_update == "Manually":
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
update_all_movies, CronTrigger(year='2100'), max_instances=1, coalesce=True, misfire_grace_time=15,
|
||||||
|
id='update_all_movies', name='Update all Movie Subtitles from disk', replace_existing=True)
|
||||||
|
|
||||||
|
def __update_bazarr_task(self):
|
||||||
|
if not args.no_update:
|
||||||
|
task_name = 'Update Bazarr from source on Github'
|
||||||
|
if args.release_update:
|
||||||
|
task_name = 'Update Bazarr from release on Github'
|
||||||
|
|
||||||
|
if settings.general.getboolean('auto_update'):
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
check_and_apply_update, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
|
||||||
|
misfire_grace_time=15, id='update_bazarr', name=task_name, replace_existing=True)
|
||||||
|
else:
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
check_and_apply_update, CronTrigger(year='2100'), hour=4, id='update_bazarr', name=task_name,
|
||||||
|
replace_existing=True)
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
check_releases, IntervalTrigger(hours=6), max_instances=1, coalesce=True, misfire_grace_time=15,
|
||||||
|
id='update_release', name='Update Release Info', replace_existing=True)
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
check_releases, IntervalTrigger(hours=6), max_instances=1, coalesce=True, misfire_grace_time=15,
|
||||||
|
id='update_release', name='Update Release Info', replace_existing=True)
|
||||||
|
|
||||||
|
def __search_wanted_subtitles_task(self):
|
||||||
|
if settings.general.getboolean('use_sonarr') or settings.general.getboolean('use_radarr'):
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
wanted_search_missing_subtitles, IntervalTrigger(hours=int(settings.general.wanted_search_frequency)),
|
||||||
|
max_instances=1, coalesce=True, misfire_grace_time=15, id='wanted_search_missing_subtitles',
|
||||||
|
name='Search for wanted Subtitles', replace_existing=True)
|
||||||
|
|
||||||
|
def __upgrade_subtitles_task(self):
|
||||||
|
if settings.general.getboolean('upgrade_subs') and \
|
||||||
|
(settings.general.getboolean('use_sonarr') or settings.general.getboolean('use_radarr')):
|
||||||
|
self.aps_scheduler.add_job(
|
||||||
|
upgrade_subtitles, IntervalTrigger(hours=int(settings.general.upgrade_frequency)), max_instances=1,
|
||||||
|
coalesce=True, misfire_grace_time=15, id='upgrade_subtitles',
|
||||||
|
name='Upgrade previously downloaded Subtitles', replace_existing=True)
|
||||||
|
|
Loading…
Reference in a new issue