from fastapi import APIRouter, Query, HTTPException
import requests
from pydantic import BaseModel

shortVideo = APIRouter()

# 第三方API地址
EXTERNAL_API_URL = "https://playlet.zonelian.com"


@shortVideo.get("/video/category/list")
async def category_search(
        page: int = Query(1, description="页数"),
        limit: int = Query(10, description="搜索内容列表数"),
        zlsj: str = Query("zlsj", description="跳过加解密")
):
    """
    视频搜索接口 - 封装第三方 API。
    """
    # 参数传递给第三方API
    params = {
        "page": page,
        "limit": limit,
        "zlsj": zlsj
    }
    try:
        # 发送请求到第三方API
        response = requests.get(EXTERNAL_API_URL + "/api/category/list", params=params)
        response.raise_for_status()  # 确保HTTP请求成功

        # 返回第三方API的结果
        return response.json()

    except requests.exceptions.RequestException as e:
        # 处理请求错误
        raise HTTPException(status_code=500, detail=f"请求第三方API出错: {str(e)}")


@shortVideo.get("/video/playlet/list")
async def playlet_search(
        name_en: str = Query(1, description="分类"),
        page: int = Query(1, description="页数"),
        limit: int = Query(10, description="搜索内容列表数"),
        zlsj: str = Query("zlsj", description="跳过加解密")
):
    """
    视频搜索接口 - 封装第三方 API。
    """
    # 参数传递给第三方API
    params = {
        "name_en": name_en,
        "page": page,
        "limit": limit,
        "zlsj": zlsj
    }
    try:
        # 发送请求到第三方API
        response = requests.get(EXTERNAL_API_URL + "/api/playlet/list", params=params)
        response.raise_for_status()  # 确保HTTP请求成功

        # 返回第三方API的结果
        return response.json()

    except requests.exceptions.RequestException as e:
        # 处理请求错误
        raise HTTPException(status_code=500, detail=f"请求第三方API出错: {str(e)}")


@shortVideo.get("/video/playlet/episode")
async def episode_search(
        vid: int = Query(1, description="短剧id"),
        page: int = Query(1, description="页数"),
        limit: int = Query(10, description="搜索内容列表数"),
        zlsj: str = Query("zlsj", description="跳过加解密")
):
    """
    视频搜索接口 - 封装第三方 API。
    """
    # 参数传递给第三方API
    params = {
        "vid": vid,
        "page": page,
        "limit": limit,
        "zlsj": zlsj
    }
    try:
        # 发送请求到第三方API
        response = requests.get(EXTERNAL_API_URL + "/api/playlet/episode", params=params)
        response.raise_for_status()  # 确保HTTP请求成功

        # 返回第三方API的结果
        return response.json()

    except requests.exceptions.RequestException as e:
        # 处理请求错误
        raise HTTPException(status_code=500, detail=f"请求第三方API出错: {str(e)}")


@shortVideo.get("/video/playlet/watch")
async def episode_search(
        vid: int = Query(1, description="短剧id"),
        eid: int = Query(1, description="剧集id"),
        page: int = Query(1, description="页数"),
        limit: int = Query(10, description="搜索内容列表数"),
        zlsj: str = Query("zlsj", description="跳过加解密")
):
    """
    视频搜索接口 - 封装第三方 API。
    """
    # 参数传递给第三方API
    params = {
        "vid": vid,
        "eid": eid,
        "page": page,
        "limit": limit,
        "zlsj": zlsj
    }
    try:
        # 发送请求到第三方API
        response = requests.get(EXTERNAL_API_URL + "/api/playlet/watch", params=params)
        response.raise_for_status()  # 确保HTTP请求成功

        # 返回第三方API的结果
        return response.json()

    except requests.exceptions.RequestException as e:
        # 处理请求错误
        raise HTTPException(status_code=500, detail=f"请求第三方API出错: {str(e)}")


@shortVideo.get("/video/playlet/auth")
async def episode_auth(
        eid: int = Query(1, description="剧集id"),
        zlsj: str = Query("zlsj", description="跳过加解密")
):
    """
    视频搜索接口 - 封装第三方 API。
    """
    try:
        # 发送请求到第三方API
        response = requests.post(EXTERNAL_API_URL + "/api/playlet/auth?eid=" + str(eid) + '&zlsj=' + zlsj)
        response.raise_for_status()  # 确保HTTP请求成功

        # 返回第三方API的结果
        return response.json()

    except requests.exceptions.RequestException as e:
        # 处理请求错误
        raise HTTPException(status_code=500, detail=f"请求第三方API出错: {str(e)}")