# -*- coding: utf-8 -*-
"""Background category-scoped EPG snapshot refresh; no guide UI blocking."""
import time
import xbmc
import relay
from default import GROUPS, read_cache, update_cache, CACHE_TTL

monitor = xbmc.Monitor()
try:
    relay_server = relay.start()
    xbmc.log('KodiFlix Live local relay ready on 127.0.0.1:18877', xbmc.LOGINFO)
except OSError as exc:
    relay_server = None
    xbmc.log('KodiFlix Live relay unavailable: {}'.format(type(exc).__name__), xbmc.LOGWARNING)
# A staggered update avoids simultaneous requests and keeps navigation responsive.
while not monitor.abortRequested():
    for category, _ in GROUPS:
        if monitor.abortRequested():
            break
        snapshot = read_cache(category)
        if snapshot is None or time.time() - snapshot.get('updated', 0) >= CACHE_TTL:
            try:
                update_cache(category)
            except Exception as exc:
                xbmc.log('KodiFlix Live background refresh {}: {}'.format(category, type(exc).__name__), xbmc.LOGWARNING)
        if monitor.waitForAbort(2):
            break
    if monitor.waitForAbort(60):
        break

if relay_server is not None:
    relay_server.shutdown()
    relay_server.server_close()
