import logging
from config import config_manager
from utils.plex_utils import PlexManager
from .cache_service import CacheManager

log = logging.getLogger(__name__)

def update_all_plex_libraries_cache():
    """
    强制刷新所有已配置的Plex媒体库的缓存。
    这个函数将被定时任务调用。
    """
    log.info("开始执行定时任务：更新Plex媒体库缓存...")
    plex_config = config_manager.get('plex')
    if not plex_config or not plex_config.get('host'):
        log.info("Plex未配置，跳过更新任务。")
        return

    try:
        manager = PlexManager(plex_config)
        libraries = manager.get_libraries()

        for lib in libraries:
            lib_id = lib['id']
            # 为每个媒体库创建一个独立的缓存文件
            cache_mgr = CacheManager(f"plex_lib_{lib_id}.json")
            
            # 调用 get_data 并传入真正的 fetch 函数，这会强制刷新缓存
            log.debug(f"正在为Plex媒体库 '{lib['name']}' ({lib_id}) 刷新缓存...")
            cache_mgr.get_data(manager.get_library_items, library_id=lib_id)
        
        log.info("Plex媒体库缓存更新任务完成。")

    except Exception as e:
        log.error(f"更新Plex缓存时发生错误: {e}", exc_info=True)

# TODO: 在这里添加其他更新函数，例如：
# def update_local_skits_cache():
#     log.info("开始更新本地短剧缓存...")
#     ...
