From af438d1236bf799006aef7e99a89b87e350502ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Thu, 21 Mar 2019 11:32:58 -0400 Subject: [PATCH] Continuing development. --- bazarr/config.py | 2 +- bazarr/get_providers.py | 31 +++++++++++++++++++++++++++++++ bazarr/main.py | 6 ++++-- views/menu.tpl | 15 +++++++++++++-- views/system.tpl | 33 ++++++++++++++++++++++++++++++++- 5 files changed, 81 insertions(+), 6 deletions(-) diff --git a/bazarr/config.py b/bazarr/config.py index 3b23f829e..19e885839 100644 --- a/bazarr/config.py +++ b/bazarr/config.py @@ -33,7 +33,7 @@ defaults = { 'use_embedded_subs': 'True', 'adaptive_searching': 'False', 'enabled_providers': '', - 'throtteled_providers': '', + 'throtteled_providers': '{}', 'multithreading': 'True', 'chmod': '0640', 'subfolder': 'current', diff --git a/bazarr/get_providers.py b/bazarr/get_providers.py index 3511f628d..39ba91b67 100644 --- a/bazarr/get_providers.py +++ b/bazarr/get_providers.py @@ -3,6 +3,7 @@ import os import datetime import logging import subliminal_patch +import pretty from get_args import args from config import settings @@ -139,3 +140,33 @@ def provider_throttle(name, exception): logging.info("Throttling %s for %s, until %s, because of: %s. Exception info: %r", name, throttle_description, throttle_until.strftime("%y/%m/%d %H:%M"), cls_name, exception.message) + +def update_throttled_provider(): + changed = False + if settings.general.enabled_providers: + for provider in settings.general.enabled_providers.lower().split(','): + reason, until, throttle_desc = tp.get(provider, (None, None, None)) + + if reason: + now = datetime.datetime.now() + if now < until: + pass + else: + logging.info("Using %s again after %s, (disabled because: %s)", provider, throttle_desc, reason) + del tp[provider] + settings.general.throtteled_providers = str(tp) + changed = True + + if changed: + with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: + settings.write(handle) + + +def list_throttled_providers(): + update_throttled_provider() + throttled_providers = [] + if settings.general.enabled_providers: + for provider in settings.general.enabled_providers.lower().split(','): + reason, until, throttle_desc = tp.get(provider, (None, None, None)) + throttled_providers.append([provider, reason, pretty.date(until)]) + return throttled_providers diff --git a/bazarr/main.py b/bazarr/main.py index 25bb6beb3..663bdfcfa 100644 --- a/bazarr/main.py +++ b/bazarr/main.py @@ -53,7 +53,7 @@ from cork import Cork from bottle import route, run, template, static_file, request, redirect, response, HTTPError, app, hook, abort from datetime import datetime, timedelta from get_languages import load_language_in_db, language_from_alpha3 -from get_providers import get_providers, get_providers_auth +from get_providers import get_providers, get_providers_auth, list_throttled_providers from get_series import * from get_episodes import * @@ -1642,6 +1642,8 @@ def system(): elif job.trigger.__str__().startswith('cron'): task_list.append([job.name, get_time_from_cron(job.trigger.fields), next_run, job.id]) + throttled_providers = list_throttled_providers() + i = 0 with open(os.path.join(args.config_dir, 'log', 'bazarr.log')) as f: for i, l in enumerate(f, 1): @@ -1678,7 +1680,7 @@ def system(): operating_system=platform.platform(), python_version=platform.python_version(), config_dir=args.config_dir, bazarr_dir=os.path.normcase(os.getcwd()), base_url=base_url, task_list=task_list, row_count=row_count, max_page=max_page, page_size=page_size, - releases=releases, current_port=settings.general.port) + releases=releases, current_port=settings.general.port, throttled_providers=throttled_providers) @route(base_url + 'logs/') diff --git a/views/menu.tpl b/views/menu.tpl index 9bea9b648..4dfdc9f1b 100644 --- a/views/menu.tpl +++ b/views/menu.tpl @@ -25,7 +25,11 @@ % from get_args import args + % from get_providers import update_throttled_provider + % update_throttled_provider() + % import ast + % import datetime % import os % import sqlite3 % from config import settings @@ -46,7 +50,8 @@ % c = conn.cursor() % wanted_series = c.execute("SELECT COUNT(*) FROM table_episodes WHERE missing_subtitles != '[]'" + monitored_only_query_string_sonarr).fetchone() % wanted_movies = c.execute("SELECT COUNT(*) FROM table_movies WHERE missing_subtitles != '[]'" + monitored_only_query_string_radarr).fetchone() - + % from get_providers import list_throttled_providers + % throttled_providers_count = len(eval(str(settings.general.throtteled_providers)))
+
+
+ + + + + + + + + + %for provider in throttled_providers: + + + + + + %end + +
NameStatusNext retry
{{provider[0]}}{{provider[1] if provider[1] is not None else "Good"}}{{provider[2] if provider[2] is not "now" else "-"}}
+
+
About