Skip to content

MakeForce/random-short-video

Repository files navigation

随机短视频播放系统

短视频 API 管理与播放系统,支持 API 导入、测试、管理,以及跨域代理和短视频轮播播放。

鸣谢

本项目全程依靠 AI 工具完成需求梳理、架构设计、代码开发、文档编写,特此诚挚致谢:

  1. 豆包
    负责全套开发规范文档生成、分阶段流程设计、API 文档与 README 排版、开源文件模板提供。
    官网:https://www.doubao.com

  2. Trae AI
    负责播放器核心代码实现、交互逻辑、UI 渲染与工程化构建。
    官网:https://trae.ai

功能特性

API 管理模块

  • CSV 导入 API 数据
  • API 测试与跨域检测
  • 批量操作(测试、删除)
  • 稳定性评分管理
  • 数据持久化(SQLite)

Proxy 代理模块

  • 白名单安全机制
  • 支持 Cloudflare Worker 部署
  • 跨域请求转发
  • 重定向处理

Web 播放模块

  • 短视频轮播播放
  • 滑动/滚轮切换视频
  • 视频源手动切换
  • 自动播放下一个
  • 失败自动重试(最多 3 次)

技术栈

  • 运行环境: Node.js 20+
  • 语言: TypeScript (strict mode)
  • 包管理: pnpm
  • 后端框架: Express 5.x
  • 数据库: SQLite (sql.js)
  • 网络请求: axios
  • 日志: winston + morgan
  • 前端播放器: xgplayer

目录结构

项目根目录
├── AGENTS.md              # Trae 通用强制规则
├── CLAUDE.md              # 核心业务架构与执行细则
├── PLANNING.md            # 三期需求规划
├── SPEC.md                # JSON 数据结构规范
├── README.md              # 项目说明文档
├── package.json           # 项目配置
├── tsconfig.json          # TypeScript 配置
├── api.csv                # API 数据源文件
├── data/                  # 数据库文件目录
│   └── api_data.db        # SQLite 数据库
├── logs/                  # 日志文件目录
│   ├── combined.log       # 全级别日志
│   └── error.log          # 错误日志
├── output/                # 导出文件目录
│   ├── all_api.json       # 全量 API 数据
│   └── proxy_whitelist.json # 代理白名单
├── public/                # 前端静态资源
│   ├── index.html         # 播放器页面
│   ├── index.js           # 播放器逻辑
│   ├── api.js             # 视频地址获取
│   ├── style.css          # 样式文件
│   ├── player/            # 播放器组件
│   ├── all_api.json       # API 数据配置
│   └── proxy.json         # 代理配置
├── src/
│   ├── api-manager/       # API 管理模块
│   │   ├── server.ts      # 服务端入口
│   │   ├── db.ts          # 数据库操作
│   │   ├── request.ts     # 请求处理
│   │   ├── classifier.ts  # 视频源分类
│   │   ├── types.ts       # 类型定义
│   │   ├── constants.ts   # 常量配置
│   │   └── admin/         # Web 管理页面
│   │       ├── index.html # 列表页
│   │       └── tester.html # 测试/编辑页
│   └── proxy/             # 代理模块
│       ├── local-server.ts # 本地代理服务
│       ├── cf-worker.ts   # Cloudflare Worker
│       ├── whitelist.ts   # 白名单验证
│       └── logger.ts      # 日志配置
├── .rules/                # 代码规范
│   ├── code-style.md
│   ├── frontend-rules.md
│   └── node-rules.md
└── memory/                # 项目决策记录
    └── MEMORY.md

快速开始

安装依赖

pnpm install

启动服务

# 启动 API 管理服务 (http://localhost:3001)
pnpm dev:api

# 启动代理服务 (http://localhost:3000)
pnpm dev:proxy

# 启动前端播放页面 (http://localhost:8080)
pnpm dev:web

可用命令

命令 说明
pnpm install 安装依赖
pnpm typecheck TypeScript 类型检查
pnpm dev:api 启动 API 管理服务
pnpm dev:proxy 启动代理服务
pnpm dev:web 启动前端服务
pnpm clean 清理构建输出

模块说明

API 管理模块

访问地址:http://localhost:3001

功能

  • 导入 CSV 格式的 API 数据
  • 测试 API 可用性与跨域支持
  • 编辑、删除 API 记录
  • 批量测试与删除
  • 导出全量数据或白名单

Proxy 代理模块

代理地址:http://localhost:3000/proxy

功能

  • 验证请求是否在白名单内
  • 转发跨域请求
  • 返回原始响应头和内容

Web 播放模块

访问地址:http://localhost:8080

功能

  • 自动加载 API 数据
  • 智能选择视频源(跨域优先)
  • 上下滑动切换视频
  • 手动切换视频源
  • 失败自动重试

数据流

CSV 导入 → API 测试 → 生成 JSON → 代理白名单 → 前端播放

开发规范

  • 严格遵循 AGENTS.mdCLAUDE.md
  • TypeScript 严格模式,禁止 any 类型
  • 使用 pnpm 管理依赖
  • 日志输出到 logs/ 目录
  • 导出文件存放到 output/ 目录

Agent 使用范例

项目根目录
├── AGENTS.md        # Trae通用强制规则(Codex兼容)
├── CLAUDE.md        # Trae深度业务架构、流程、数据结构说明
├── PLANNING.md      # 三期完整需求规划、迭代顺序、技术方案
├── SPEC.md          # JSON结果文件数据规范、接口分类定义
├── .rules/
│   ├── code-style.md    # TS/JS/前端代码规范
│   ├── node-rules.md    # Node脚本、网络请求规范
│   ├── frontend-rules.md# 视频播放页面规范
│   └── file-output.md   # 本地文件输出、缓存、下载目录规则
└── memory/MEMORY.md # 项目关键决策、踩坑记录、接口特征总结

许可证 License

MIT License

Releases

Packages

Contributors

Languages