# -*- coding: utf-8 -*-
import os
import json
import requests
import sys

# --- 配置区域 ---
TOKEN_JSON_URL = "http://146.56.117.42/OK/lib/cookie.json"

try:
    internal_storage_path = os.environ.get('EXTERNAL_STORAGE', '/storage/emulated/0')
except (KeyError, TypeError):
    internal_storage_path = '/storage/emulated/0'

target_folder_name = "TV"
target_folder_path = os.path.join(internal_storage_path, target_folder_name)


# --- 必须按APP框架要求定义的Spider类 ---
class Spider:
    update_status_message = ""

    def getDependence(self):
        return []

    def init(self, extend=""):
        # init 逻辑不变，负责干活并把结果存到变量里
        print("Python Spider: init() called.")
        try:
            success = self.sync_files_from_server()
            if success:
                Spider.update_status_message = "✅ Cookie 更新成功！"
            else:
                Spider.update_status_message = "❌ 加载更新Cookie失败！"
        except Exception as e:
            Spider.update_status_message = f"❌ 发生意外错误: {e}"
        print(Spider.update_status_message)
        return ""

    def homeContent(self, filter):
        """
        获取首页内容。
        根据您的正确判断，我们在这里动态生成一个“分类”，它的名字就是我们的状态消息。
        """
        print("Python Spider: homeContent() called. [Dynamic Category Name Strategy]")
        
        # 如果 init 还没跑完，就显示一个默认消息
        display_message = "正在获取状态..."
        if Spider.update_status_message:
            display_message = Spider.update_status_message

        # --- 核心中的核心 ---
        # 创建一个只有一个分类的列表，分类的名字就是我们的动态消息
        classes = [
            {
                "type_id": "status_category",  # 给一个ID
                "type_name": display_message   # 名字就是我们要显示的话
            }
        ]
        
        # 组装最终结果，list 必须为空
        result = {
            'class': classes,
            'filters': {},
            'list': []
        }
        
        return json.dumps(result, ensure_ascii=False)


    # --- 以下所有方法都保持不变，作为“安全框架”存在 ---
    def homeVideoContent(self):
        # 这个方法现在不重要了，但为了安全我们保留一个完整的空返回
        return json.dumps({'page': 1, 'pagecount': 1, 'limit': 0, 'total': 0, 'list': []})

    def categoryContent(self, tid, pg, filter, extend):
        # 当用户点击我们创建的那个“分类按钮”时，这里会被调用
        # 我们返回一个空列表即可
        return json.dumps({'page': 1, 'pagecount': 1, 'limit': 0, 'total': 0, 'list': []})

    def detailContent(self, ids):
        return json.dumps({'list': [{}]})

    def searchContent(self, key, quick):
        return json.dumps({'list': []})

    def playerContent(self, flag, id, vipFlags):
        return json.dumps({'parse': 0, 'playUrl': '', 'url': ''})
        
    def sync_files_from_server(self):
        # ... (这个函数保持不变) ...
        print("--- 开始文件同步任务 ---")
        try:
            if not os.path.exists(target_folder_path):
                os.makedirs(target_folder_path)
        except OSError as e:
            print(f"错误：创建本地文件夹失败 - {e}", file=sys.stderr)
            return False
        try:
            response = requests.get(TOKEN_JSON_URL, timeout=15)
            response.raise_for_status()
            file_list = response.json()
        except Exception as e:
            print(f"错误：下载或解析清单文件失败 - {e}", file=sys.stderr)
            return False
        print(f"清单获取成功，共发现 {len(file_list)} 个文件。开始同步所有文件...")
        for file_info in file_list:
            try:
                file_name = file_info['name']
                file_url = file_info['url']
                local_file_path = os.path.join(target_folder_path, file_name)
                if os.path.exists(local_file_path):
                    print(f"↓ '{file_name}' 已存在，准备从 {file_url} 下载并覆盖...")
                else:
                    print(f"↓ '{file_name}' 不存在，准备从 {file_url} 下载...")
                download_response = requests.get(file_url, stream=True, timeout=60)
                download_response.raise_for_status()
                with open(local_file_path, 'wb') as f:
                    for chunk in download_response.iter_content(chunk_size=8192):
                        f.write(chunk)
                print(f"  ↳ 下载/更新成功: '{local_file_path}'")
            except Exception as e:
                print(f"处理 '{file_info.get('name', '未知文件')}' 时发生错误 - {e}", file=sys.stderr)
        print(f"--- 文件同步任务完成 ---")
        return True