Add provider update startup check
This commit is contained in:
@@ -23,6 +23,7 @@ from urllib.parse import quote, urljoin, urlparse
|
||||
|
||||
import app_support
|
||||
import provider_bridge
|
||||
import provider_updates
|
||||
from app_support import (
|
||||
AGENT,
|
||||
ANIDB_ANIME_PAGE,
|
||||
@@ -97,6 +98,8 @@ WATCHLIST_REFRESH = None
|
||||
WATCHLIST_AUTO_REFRESH = None
|
||||
WATCHLIST_JELLYFIN_SYNC = None
|
||||
WATCHLIST_BACKUP_FORMAT_VERSION = 1
|
||||
PROVIDER_UPDATE_STATUS = provider_updates.default_status()
|
||||
PROVIDER_UPDATE_CHECK_THREAD = None
|
||||
|
||||
|
||||
def parse_iso_timestamp(value):
|
||||
@@ -3183,6 +3186,44 @@ def runtime_state():
|
||||
}
|
||||
|
||||
|
||||
def get_provider_update_status():
|
||||
with RUNTIME_LOCK:
|
||||
return json.loads(json.dumps(PROVIDER_UPDATE_STATUS))
|
||||
|
||||
|
||||
def set_provider_update_status(status):
|
||||
if not isinstance(status, dict):
|
||||
return
|
||||
with RUNTIME_LOCK:
|
||||
global PROVIDER_UPDATE_STATUS
|
||||
PROVIDER_UPDATE_STATUS = json.loads(json.dumps(status))
|
||||
|
||||
|
||||
def run_provider_update_check():
|
||||
try:
|
||||
set_provider_update_status(provider_updates.check_provider_updates())
|
||||
except Exception as exc:
|
||||
debug_log("provider_updates.error", error=exc)
|
||||
set_provider_update_status(provider_updates.error_status(exc))
|
||||
|
||||
|
||||
def start_provider_update_check():
|
||||
global PROVIDER_UPDATE_CHECK_THREAD
|
||||
with RUNTIME_LOCK:
|
||||
if PROVIDER_UPDATE_CHECK_THREAD is not None and PROVIDER_UPDATE_CHECK_THREAD.is_alive():
|
||||
return PROVIDER_UPDATE_CHECK_THREAD
|
||||
PROVIDER_UPDATE_STATUS.update(
|
||||
provider_updates.default_status("checking", "Checking provider JavaScript for upstream updates...")
|
||||
)
|
||||
PROVIDER_UPDATE_CHECK_THREAD = threading.Thread(
|
||||
target=run_provider_update_check,
|
||||
name="provider-update-check",
|
||||
daemon=True,
|
||||
)
|
||||
PROVIDER_UPDATE_CHECK_THREAD.start()
|
||||
return PROVIDER_UPDATE_CHECK_THREAD
|
||||
|
||||
|
||||
def build_runtime(start_workers=None):
|
||||
ensure_project_app_root()
|
||||
worker_state = background_workers_enabled() if start_workers is None else bool(start_workers) and background_workers_enabled()
|
||||
@@ -3323,6 +3364,7 @@ Handler = build_handler_class(
|
||||
episode_list=episode_list,
|
||||
export_watchlist_backup=export_watchlist_backup,
|
||||
get_config_snapshot=get_config_snapshot,
|
||||
get_provider_update_status=get_provider_update_status,
|
||||
get_watchlist_homepage_summary=get_watchlist_homepage_summary,
|
||||
get_jellyfin_sync_status=get_jellyfin_sync_status,
|
||||
get_watchlist=get_watchlist,
|
||||
@@ -3367,6 +3409,7 @@ def main():
|
||||
host = server_host()
|
||||
port = server_port()
|
||||
server = ThreadingHTTPServer((host, port), Handler)
|
||||
start_provider_update_check()
|
||||
debug_log("server.start", version=VERSION, host=host, port=port, argv=sys.argv[1:])
|
||||
print(f"Serving {APP_NAME} {VERSION} on http://{host}:{port}/")
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user