Add provider update startup check

This commit is contained in:
Dymas
2026-08-11 22:14:07 +02:00
parent d13b7da5b2
commit 7f5088f70d
5 changed files with 317 additions and 1 deletions
+43
View File
@@ -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: