Skip to content

第三方视频API文档

概述

本文档描述了 cik.netlify.app 后端服务提供的视频API接口。这些接口用于获取视频源、搜索视频内容和获取视频详情。

基础信息

基础URL: https://cik.netlify.app

项目中的配置地址说明

assetSite - 静态资源服务器

地址: https://web-app-center.netlify.app

主要用途:

  1. 背景图片服务: 为应用提供背景图片资源

    • 普通背景图片: /assets/background_${1-28}.jpg
    • 18+内容背景图片: /assets/background_18_${1-100}.jpg
  2. HLS视频流代理: 提供纯净的HLS视频流服务

    • 接口路径: /api/video/hls/pure/${token}.m3u8
    • 用于处理和转换视频流格式
  3. 视频播放页面重定向: 当第三方视频源返回的视频详情中 proxy: true 时,自动重定向到该域名下的播放页面

proxyUrl - 代理服务器

地址: https://deploy-3wi.pages.dev

主要用途:

  1. 跨域请求代理: 解决前端跨域访问第三方资源的问题

    • 代理接口: /api/proxy?url=${targetUrl}
    • 支持各种HTTP方法和头部转发
  2. 视频地址解析: 代理访问第三方视频网站进行地址解析

    • 用于解析云播放地址,提取真实的视频文件URL
  3. 资源访问代理: 代理访问各种外部资源

    • 图片、音频、视频等媒体文件
    • 支持Range请求,用于分片下载
  4. 音乐播放代理: 为音乐播放提供代理服务

    • 当音乐URL不是HTTPS或需要代理时使用

这两个地址在项目中起到了关键的基础设施作用,assetSite主要负责静态资源和视频流服务,proxyUrl主要负责代理和跨域访问功能。

API接口列表

1. 获取视频源列表

接口地址: GET https://cik.netlify.app/api/video/source

功能描述: 获取所有可用的视频源配置信息

请求参数: 无

响应格式:

json
{
  "code": 0,
  "data": [
    {
      "key": "z",
      "name": "最大资源",
      "rating": 5,
      "api": "https://api.zuidazy.net/api.php/provide/vod/at/xml",
      "group": "normal"
    },
    {
      "key": "k",
      "name": "快播资源",
      "rating": 4.5,
      "api": "https://www.kuaibozy.com/api.php/provide/vod/at/xml",
      "group": "normal"
    }
  ],
  "msg": "成功"
}

字段说明:

  • key: 视频源唯一标识符
  • name: 视频源显示名称
  • rating: 视频源评分 (1-5)
  • api: 视频源的XML API地址
  • group: 分组类型 ("normal" 或 "18+")

2. 视频搜索

接口地址: GET https://cik.netlify.app/api/video/list

功能描述: 在指定视频源中搜索视频内容

请求参数:

参数名类型必填说明
apistring视频源标识符 (从source接口获取)
sstring搜索关键词
tstring视频类型ID (从types字段获取tid值)
pstring页码,默认1

t字段取值说明: t字段的值来源于任意一次list接口调用返回的types数组中的tid字段。常见的类型ID包括:

  • 1: 电影
  • 2: 电视剧
  • 3: 综艺
  • 4: 动漫
  • 6: 动作片
  • 7: 喜剧片
  • 8: 爱情片
  • 9: 科幻片
  • 10: 恐怖片
  • 11: 剧情片
  • 13: 国产剧
  • 14: 欧美剧
  • 15: 韩剧
  • 16: 日剧
  • 等等...

获取完整类型列表的方法:

bash
# 先调用list接口获取types数组
curl "https://cik.netlify.app/api/video/list?api=z"
# 从返回的data.types数组中获取所有可用的tid和tname

请求示例:

GET https://cik.netlify.app/api/video/list?api=z&s=复仇者联盟&p=1

响应格式:

json
{
  "code": 0,
  "data": {
    "video": [
      {
        "id": 12345,
        "name": "复仇者联盟4:终局之战",
        "note": "HD高清",
        "last": "2024-01-15",
        "dt": "2019-04-26",
        "tid": 6,
        "type": "动作片"
      }
    ],
    "page": {
      "page": 1,
      "pagecount": 10,
      "pagesize": 20,
      "recordcount": 200
    },
    "types": [
      {
        "tid": "6",
        "tname": "动作片"
      },
      {
        "tid": "7",
        "tname": "喜剧片"
      }
    ],
    "name": "最大资源",
    "s": "复仇者联盟",
    "type": null,
    "prefer": false,
    "searchDisable": false
  },
  "msg": "成功"
}

字段说明:

  • video: 视频列表数组
    • id: 视频唯一ID
    • name: 视频标题
    • note: 视频备注信息 (如清晰度)
    • last: 最后更新时间
    • dt: 发布时间
    • tid: 类型ID
    • type: 类型名称
  • page: 分页信息
  • types: 可用的视频类型列表,包含所有可用的类型ID和名称
    • tid: 类型ID,用于t参数的取值
    • tname: 类型名称,用于显示
  • name: 视频源名称
  • prefer: 是否为优选源
  • searchDisable: 是否禁用搜索

3. 获取视频详情

接口地址: GET https://cik.netlify.app/api/video/{api}/{id}

功能描述: 获取指定视频的详细信息和播放源

路径参数:

参数名类型说明
apistring视频源标识符
idstring视频ID

请求示例:

GET https://cik.netlify.app/api/video/z/12345

响应格式:

json
{
  "code": 0,
  "data": {
    "id": 12345,
    "name": "复仇者联盟4:终局之战",
    "subname": "Avengers: Endgame",
    "note": "HD高清",
    "pic": "https://example.com/poster.jpg",
    "type": "动作片",
    "year": "2019",
    "actor": "小罗伯特·唐尼,克里斯·埃文斯",
    "area": "美国",
    "des": "电影描述...",
    "director": "安东尼·罗素,乔·罗素",
    "lang": "英语",
    "last": "2024-01-15",
    "state": 1,
    "tid": 6,
    "proxy": false,
    "prefer": false,
    "dataList": [
      {
        "name": "线路1",
        "urls": [
          {
            "label": "HD",
            "url": "https://example.com/play.html?vid=123"
          }
        ]
      }
    ]
  },
  "msg": "成功"
}

字段说明:

  • id: 视频ID
  • name: 视频标题
  • subname: 副标题 (通常为英文名)
  • pic: 封面图片URL
  • type: 视频类型
  • year: 发行年份
  • actor: 主演列表
  • area: 制片地区
  • des: 视频描述
  • director: 导演
  • lang: 语言
  • state: 状态 (1=正常)
  • proxy: 是否需要代理访问
  • prefer: 是否为优选源
  • dataList: 播放源列表
    • name: 播放源名称
    • urls: 播放地址列表
      • label: 清晰度标签
      • url: 播放页面URL (需要进一步解析)

错误处理

所有API接口使用统一的错误响应格式:

成功响应:

json
{
  "code": 0,
  "data": {...},
  "msg": "成功"
}

错误响应:

json
{
  "code": -1,
  "data": null,
  "msg": "错误描述信息"
}

常见错误码:

  • 0: 请求成功
  • -1: 请求失败 (通用错误)

使用说明

1. 基本使用流程

  1. 获取视频源: 调用 /api/video/source 获取可用的视频源列表
  2. 搜索视频: 使用视频源的 key 调用 /api/video/list 搜索视频
  3. 获取详情: 使用视频的 idapi 调用 /api/video/{api}/{id} 获取详情
  4. 解析播放: 从详情中获取播放URL,需要进一步解析才能获得真实播放地址

2. 注意事项

  • 所有接口都支持CORS跨域访问
  • 建议添加适当的请求间隔,避免频繁请求
  • 播放URL通常指向播放页面,需要额外的解析步骤才能获得真实的视频流地址
  • 部分视频源可能需要代理访问 (proxy: true)
  • 18+ 内容的视频源需要特殊处理

3. 请求头建议

http
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Accept: application/json

代码示例

JavaScript/Node.js

javascript
// 获取视频源列表
async function getVideoSources() {
  const response = await fetch('https://cik.netlify.app/api/video/source');
  const data = await response.json();
  return data.data;
}

// 获取视频类型列表
async function getVideoTypes(api) {
  const response = await fetch(`https://cik.netlify.app/api/video/list?api=${api}`);
  const data = await response.json();
  return data.data.types;
}

// 搜索视频
async function searchVideos(api, keyword, type = '', page = 1) {
  const params = new URLSearchParams({
    api: api,
    s: keyword,
    t: type,
    p: page.toString()
  });
  
  const response = await fetch(`https://cik.netlify.app/api/video/list?${params}`);
  const data = await response.json();
  return data.data;
}

// 获取视频详情
async function getVideoDetail(api, id) {
  const response = await fetch(`https://cik.netlify.app/api/video/${api}/${id}`);
  const data = await response.json();
  return data.data;
}

// 使用示例
async function example() {
  // 1. 获取视频源
  const sources = await getVideoSources();
  console.log('可用视频源:', sources);
  
  // 2. 获取视频类型列表
  const firstSource = sources[0];
  const types = await getVideoTypes(firstSource.key);
  console.log('可用类型:', types);
  
  // 3. 选择动作片类型进行搜索 (tid: "6")
  const actionTypeId = types.find(t => t.tname === '动作片')?.tid || '6';
  const searchResult = await searchVideos(firstSource.key, '复仇者联盟', actionTypeId);
  console.log('搜索结果:', searchResult);
  
  // 4. 获取第一个视频的详情
  if (searchResult.video && searchResult.video.length > 0) {
    const firstVideo = searchResult.video[0];
    const detail = await getVideoDetail(firstSource.key, firstVideo.id);
    console.log('视频详情:', detail);
  }
}

Python

python
import requests

def get_video_sources():
    """获取视频源列表"""
    response = requests.get('https://cik.netlify.app/api/video/source')
    return response.json()['data']

def get_video_types(api):
    """获取视频类型列表"""
    params = {'api': api}
    response = requests.get('https://cik.netlify.app/api/video/list', params=params)
    return response.json()['data']['types']

def search_videos(api, keyword, type_id='', page=1):
    """搜索视频"""
    params = {
        'api': api,
        's': keyword,
        't': type_id,
        'p': str(page)
    }
    response = requests.get('https://cik.netlify.app/api/video/list', params=params)
    return response.json()['data']

def get_video_detail(api, video_id):
    """获取视频详情"""
    url = f'https://cik.netlify.app/api/video/{api}/{video_id}'
    response = requests.get(url)
    return response.json()['data']

# 使用示例
if __name__ == '__main__':
    # 1. 获取可用的视频源
    sources = get_video_sources()
    print('可用视频源:', sources)
    
    # 2. 获取视频类型列表
    api = sources[0]['key']
    types = get_video_types(api)
    print('可用类型:', types)
    
    # 3. 选择动作片类型进行搜索
    action_type = next((t for t in types if t['tname'] == '动作片'), {'tid': '6'})
    results = search_videos(api, '复仇者联盟', action_type['tid'], 1)
    print('搜索结果:', results)
    
    # 4. 获取第一个视频的详情
    if results.get('video') and len(results['video']) > 0:
        detail = get_video_detail(api, results['video'][0]['id'])
        print('视频详情:', detail)

技术说明

1. 数据来源

该API服务聚合了多个视频网站的数据,包括但不限于:

  • 最大资源 (zuidazy.net)
  • 快播资源 (kuaibozy.com)
  • 无尽资源 (wujinapi.com)
  • 新浪资源 (xinlangapi.com)
  • 等等...

2. 数据格式

  • 所有时间字段使用 YYYY-MM-DD 格式
  • 评分使用 1-5 的数值范围
  • 所有文本内容使用 UTF-8 编码

3. 限制说明

  • 该API为第三方服务,稳定性和可用性无法保证
  • 部分内容可能涉及版权问题,使用时请遵守相关法律法规
  • 建议在生产环境中添加适当的缓存和错误处理机制

更新日志

  • 2024-01-15: 初始版本,包含基础的视频源、搜索、详情API

视频资源 API 文档

概述

本文档描述了视频资源服务的 REST API 接口,包括资源源获取、视频搜索和视频详情查询等功能。


基础信息

  • 主域名: https://cik.netlify.app
  • 资源域名: https://web-app-center.netlify.app
  • 代理服务: https://deploy-3wi.pages.dev

API 接口

1. 获取视频资源源列表

获取可用的视频资源提供商列表。

端点:

GET /api/video/source

响应示例:

json
{
    "code": 0,
    "data": [
        {
            "key": "a",
            "name": "电影天堂资源",
            "rating": 4.5,
            "api": "https://caiji.dyttzyapi.com/api.php/provide/vod/at/xml",
            "dataSource": "/data/video/dyttzyapi.json",
            "searchDisable": true,
            "group": "normal"
        },
        {
            "key": "h",
            "name": "华为吧",
            "rating": 4.2,
            "api": "https://huawei8.live/api.php/provide/vod/at/xml",
            "group": "normal"
        }
    ],
    "msg": "成功"
}

字段说明:

字段类型说明
keystring资源源唯一标识,用于后续查询
namestring资源源名称
ratingnumber资源源评分
apistring原始数据接口
dataSourcestring数据源文件路径(可选)
searchDisableboolean是否禁用搜索功能
groupstring资源分组

2. 搜索视频列表

根据关键词搜索视频内容。

端点:

GET /api/video/list

查询参数:

参数类型必填说明
sstring搜索关键词,需要 URL 编码
apistring资源源 key,从源列表接口获取

请求示例:

GET /api/video/list?s=%E9%80%83%E5%AD%A6%E5%A8%81%E9%BE%99&api=a

响应示例:

json
{
    "code": 0,
    "data": {
        "page": {
            "page": 1,
            "pagecount": 1,
            "pagesize": 20,
            "recordcount": 5
        },
        "video": [
            {
                "last": "2025-08-28 17:27:47",
                "id": 61772,
                "tid": 7,
                "name": "新逃学威龙:卧底高校",
                "type": "喜剧片",
                "dt": "dytt,dyttm3u8",
                "note": "HD国语"
            }
        ],
        "types": [
            {
                "tid": 7,
                "tname": "喜剧片"
            }
        ],
        "name": "电影天堂资源",
        "s": "逃学威龙",
        "type": null,
        "prefer": false,
        "searchDisable": true
    },
    "msg": "成功"
}

字段说明:

分页信息 (page):

字段类型说明
pagenumber当前页码
pagecountnumber总页数
pagesizenumber每页大小
recordcountnumber总记录数

视频信息 (video):

字段类型说明
idnumber视频唯一 ID,用于查询详情
namestring视频名称
typestring视频类型
tidnumber类型 ID
laststring最后更新时间
dtstring数据源类型
notestring视频质量说明

类型筛选 (types):

字段类型说明
tidnumber类型 ID
tnamestring类型名称

3. 获取视频详情

获取指定视频的详细信息,包括播放地址。

端点:

GET /api/video/{source}/{id}

路径参数:

参数类型必填说明
sourcestring资源源标识,如 "a", "m1" 等
idstring视频 ID,从搜索接口获取

请求示例:

GET /api/video/a/13032
GET /api/video/m1/2078

响应示例:

json
{
    "code": 0,
    "data": {
        "last": "2025-02-26 12:19:28",
        "id": 13032,
        "tid": 11,
        "name": "星际穿越",
        "type": "剧情片",
        "pic": "https://vip.dytt-img.com/upload/vod/20250226-1/684c683ce99a54b24a3dcdf57f03a590.jpg",
        "subname": "星际启示录(港) / 星际效应(台) / 星际空间 / 星际之间 / 星际远航 / 星际 / Flora's Letter",
        "lang": "英语",
        "area": "美国",
        "year": 2014,
        "state": "",
        "note": "HD中字|国语",
        "actor": "马修·麦康纳,安妮·海瑟薇,杰西卡·查斯坦,麦肯吉·弗依,卡西·阿弗莱克,迈克尔·凯恩,马特·达蒙,提莫西·查拉梅,艾伦·伯斯汀,约翰·利思戈,韦斯·本特利,大卫·吉亚西,比尔·欧文,托弗·格雷斯,科莱特·沃夫,弗朗西斯·X.麦卡蒂,安德鲁·博尔巴,乔什·斯图沃特,莱雅·卡里恩斯,利亚姆·迪金森,杰夫·赫普内尔,伊莱耶斯·加贝尔,布鲁克·史密斯,大卫·奥伊罗,威廉姆·德瓦内,拉什·费加,格里芬·弗雷泽,弗洛拉·诺兰",
        "director": "克里斯托弗·诺兰",
        "des": "<p>近未来的地球黄沙遍野...</p>",
        "dataList": [
            {
                "name": "dyttm3u8",
                "urls": [
                    {
                        "label": "HD中字",
                        "url": "https://vip.dytt-film.com/20250216/7088_504b7f66/index.m3u8"
                    }
                ]
            }
        ],
        "prefer": false,
        "proxy": false
    },
    "msg": "成功"
}

字段说明:

基础信息:

字段类型说明
idnumber视频 ID
namestring视频名称
typestring视频类型
picstring封面图片地址
subnamestring副标题/别名
langstring语言
areastring地区
yearnumber年份
actorstring演员列表
directorstring导演
desstring描述信息(HTML 格式)
notestring视频质量说明

播放源信息 (dataList):

字段类型说明
namestring播放源名称
urlsarray播放地址列表

播放地址 (urls):

字段类型说明
labelstring视频质量标签
urlstring播放地址

工具函数

图片代理

GET /api/proxy?url={图片URL}

示例:

https://deploy-3wi.pages.dev/api/proxy?url=https://vip.dytt-img.com/upload/vod/20250828-1/13bdd1b35e248048918fc5c15f9c10dd.jpg

HLS 流处理

  • pureHlsUrl(url): 获取纯净 HLS 流地址
  • proxyHlsUrl(url): 获取代理 HLS 流地址

Base64 编解码

  • Base64Params.create(text): 编码文本为 Base64
  • Base64Params.parse(text): 解码 Base64 文本

响应状态码

代码说明
0成功
其他错误

注意事项

  1. 所有搜索关键词需要进行 URL 编码
  2. 图片地址可能需要通过代理服务访问
  3. 视频播放地址可能需要进行 HLS 处理
  4. 不同资源源的可用性和内容可能有所不同
  5. 某些资源源可能禁用搜索功能(searchDisable: true

source

https://cik.netlify.app/api/video/source

{
    "code": 0,
    "data": [
        {
            "key": "a",
            "name": "电影天堂资源",
            "rating": 4.5,
            "api": "https://caiji.dyttzyapi.com/api.php/provide/vod/at/xml",
            "dataSource": "/data/video/dyttzyapi.json",
            "searchDisable": true,
            "group": "normal"
        },
        {
            "key": "h",
            "name": "华为吧",
            "rating": 4.2,
            "api": "https://huawei8.live/api.php/provide/vod/at/xml",
            "group": "normal"
        }
    ],
    "msg": "成功"
}

列表

https://cik.netlify.app/api/video/list?s={搜索内容}&api={key}

https://cik.netlify.app/api/video/list?s=逃学威龙&api=a

{
    "code": 0,
    "data": {
        "page": {
            "page": 1,
            "pagecount": 1,
            "pagesize": 20,
            "recordcount": 5
        },
        "video": [
            {
                "last": "2025-08-28 17:27:47",
                "id": 61772,
                "tid": 7,
                "name": "新逃学威龙:卧底高校",
                "type": "喜剧片",
                "dt": "dytt,dyttm3u8",
                "note": "HD国语"
            },
            {
                "last": "2025-03-19 10:19:33",
                "id": 22373,
                "tid": 7,
                "name": "逃学威龙3之龙过鸡年",
                "type": "喜剧片",
                "dt": "dytt,dyttm3u8",
                "note": "HD国语"
            },
            {
                "last": "2025-03-19 10:18:44",
                "id": 22371,
                "tid": 7,
                "name": "逃学威龙2",
                "type": "喜剧片",
                "dt": "dytt,dyttm3u8",
                "note": "HD国语|粤语"
            },
            {
                "last": "2025-03-19 10:16:31",
                "id": 22369,
                "tid": 7,
                "name": "逃学威龙",
                "type": "喜剧片",
                "dt": "dytt,dyttm3u8",
                "note": "HD国语|粤语"
            },
            {
                "last": "2025-01-26 12:32:15",
                "id": 1199,
                "tid": 7,
                "name": "新逃学威龙",
                "type": "喜剧片",
                "dt": "dytt,dyttm3u8",
                "note": "HD国语"
            }
        ],
        "types": [
            {
                "tid": 7,
                "tname": "喜剧片"
            }
        ],
        "name": "电影天堂资源",
        "s": "逃学威龙",
        "type": null,
        "prefer": false,
        "searchDisable": true
    },
    "msg": "成功"
}

详情

https://cik.netlify.app/api/video/a/13032https://cik.netlify.app/api/video/m1/2078

{
    "code": 0,
    "data": {
        "last": "2025-02-26 12:19:28",
        "id": 13032,
        "tid": 11,
        "name": "星际穿越",
        "type": "剧情片",
        "pic": "https://vip.dytt-img.com/upload/vod/20250226-1/684c683ce99a54b24a3dcdf57f03a590.jpg",
        "subname": "星际启示录(港) / 星际效应(台) / 星际空间 / 星际之间 / 星际远航 / 星际 / Flora&#039;s Letter",
        "lang": "英语",
        "area": "美国",
        "year": 2014,
        "state": "",
        "note": "HD中字|国语",
        "actor": "马修·麦康纳,安妮·海瑟薇,杰西卡·查斯坦,麦肯吉·弗依,卡西·阿弗莱克,迈克尔·凯恩,马特·达蒙,提莫西·查拉梅,艾伦·伯斯汀,约翰·利思戈,韦斯·本特利,大卫·吉亚西,比尔·欧文,托弗·格雷斯,科莱特·沃夫,弗朗西斯·X.麦卡蒂,安德鲁·博尔巴,乔什·斯图沃特,莱雅·卡里恩斯,利亚姆·迪金森,杰夫·赫普内尔,伊莱耶斯·加贝尔,布鲁克·史密斯,大卫·奥伊罗,威廉姆·德瓦内,拉什·费加,格里芬·弗雷泽,弗洛拉·诺兰",
        "director": "克里斯托弗·诺兰",
        "des": "<p>  近未来的地球黄沙遍野,小麦、秋葵等基础农作物相继因枯萎病灭绝,人类不再像从前那样仰望星空,放纵想象力和灵感的迸发,而是每日在沙尘暴的肆虐下倒数着所剩不多的光景。在家务农的前NASA宇航员库珀(马修·麦康纳 Matthew McConaughey 饰)接连在女儿墨菲(麦肯吉·弗依 Mackenzie Foy 饰)的书房发现奇怪的重力场现象,随即得知在某个未知区域内前NASA成员仍秘密进行一个拯救人类的计划。多年以前土星附近出现神秘虫洞,NASA借机将数名宇航员派遣到遥远的星系寻找适合居住的星球。在布兰德教授(迈克尔·凯恩 Michael Caine 饰)的劝说下,库珀忍痛告别了女儿,和其他三名专家教授女儿艾米莉亚·布兰德(安妮·海瑟薇 Anne Hathaway 饰)、罗米利(大卫·吉雅西 David Gyasi 饰)、多伊尔(韦斯·本特利 Wes Bentley 饰)搭乘宇宙飞船前往目前已知的最有希望的三颗星球考察。<br/>  他们穿越遥远的星系银河,感受了一小时七年光阴的沧海桑田,窥见了未知星球和黑洞的壮伟与神秘。在浩瀚宇宙的绝望而孤独角落,总有一份超越了时空的笃定情怀将他们紧紧相连……</p>",
        "dataList": [
            {
                "name": "dyttm3u8",
                "urls": [
                    {
                        "label": "HD中字",
                        "url": "https://vip.dytt-film.com/20250216/7088_504b7f66/index.m3u8"
                    },
                    {
                        "label": "HD国语",
                        "url": "https://vip.dytt-film.com/20250216/7087_5c2631d5/index.m3u8"
                    }
                ]
            },
            {
                "name": "dytt",
                "urls": [
                    {
                        "label": "HD中字",
                        "url": "https://vip.dytt-film.com/share/504b7f668328dab60570f03ecfe47918"
                    },
                    {
                        "label": "HD国语",
                        "url": "https://vip.dytt-film.com/share/5c2631d54272554b181cf21ad2171fa3"
                    }
                ]
            }
        ],
        "prefer": false,
        "proxy": false
    },
    "msg": "成功"
}

export abstract class Api {
public static site = 'http://cik.netlify.app'
public static assetSite = 'https://web-app-center.netlify.app'
public static proxyUrl = 'https://deploy-3wi.pages.dev'
public static posterServer = process.env.POSTER_SERVER || ''
}

export function encode(text: string) {
if (bufferSupported()) {
return Buffer.from(text).toString('base64')
}
try {
return btoa(text)
}
catch (err) {
const encoded = encodeURIComponent(text)
return btoa(encoded)
}
}

export function decode(text: string) {
if (bufferSupported()) {
return Buffer.from(text, 'base64').toString()
}
return atob(text)
}

export abstract class Base64Params {

    public static parse(text: string): string | null {
        try {
            return decode(text + '='.repeat(4 - text.length % 4))
        }
        catch (err) {
            return null
        }
    }

    public static create(text: string): string {
        return encode(text).replace(/\={1,2}$/, '')
    }

}

export function pureHlsUrl(url: string) {
const token = Base64Params.create(url)
return `${Api.assetSite}/api/video/hls/pure/${token}.m3u8`
}

export function proxyHlsUrl(url: string) {
return parseTokenUrl(
url,
clue => `${assetApiPrefix}/proxy/${clue}.m3u8`
)
}

https://deploy-3wi.pages.dev/api/proxy?url=https://vip.dytt-img.com/upload/vod/20250828-1/13bdd1b35e248048918fc5c15f9c10dd.jpg
https://web-app-center.netlify.app/api/proxy?url=https://vip.dytt-img.com/upload/vod/20250828-1/13bdd1b35e248048918fc5c15f9c10dd.jpg

世界很美 而你正好有空