
Yam TV
视频聚合搜索平台(仅供个人学习,不对外传播使用)
视频聚合搜索平台 — 多端、可自托管、支持插件式视频源与直播订阅。
架构概览

- Web 端:Vue 3 + hls.js + Tailwind CSS,支持搜索、播放、管理后台
- Flutter 端:Android / iOS / macOS / Windows,与 Web 共用同一套 API
- 服务端:NestJS,全局前缀
/api,Swagger 文档/api/docs - 存储:Redis(搜索缓存 + 用户同步数据)+ SQLite(管理员账户与权限)
- 部署:Docker compose,镜像推送 GHCR
功能
🔍 搜索与播放
- 多源聚合搜索 — 兼容苹果 CMS V10 JSON 接口,多源轮询合并去重,支持流式 NDJSON 实时推送
- 播放详情 — TMDB 海报与简介刮削,跨源换源保留播放进度
- 短视频模式 — 竖滑换片、全集连播、自动续播
- HLS 去广告 — 规则库(domain / path / regex / exact)+ 启发式算法双级过滤。规则服务端管理,客户端自动同步
🖥 管理功能
- 视频源管理 — 手动添加 / JSON 批量导入 / 远程 URL 订阅,自动 API 去重与 key 冲突分配
- IPTV 直播源 — m3u 订阅解析,频道分组与黑名单过滤
- 用户与权限 — 多用户组 RBAC,per-source 访问控制
- 内容过滤 — 关键词 / 分类 ID / 整源屏蔽,成人源标记
✨ 交互体验
- 暗黑模式 + 毛玻璃 UI
- 播放历史与进度云同步(登录跨设备)
- 收藏系统 + 目录更新角标
- 桌面端悬停预览 / 右键菜单 / 长按倍速
- PWA 支持
平台
平台 | 方式 |
|---|---|
Web | 浏览器直接访问(PWA 可安装) |
Android | Flutter APK / AAB |
iOS | Flutter IPA(需自签) |
macOS | Flutter macOS 构建 |
Windows | Flutter Windows 构建 |
技术栈
组件 | 技术 | 角色 |
|---|---|---|
前端 SPA | Vue 3 + Vue Router + Pinia + Tailwind | 搜索 / 播放 / 管理后台 UI |
移动/桌面客户端 | Flutter + Material 3 | 多端原生体验,与 Web 共用 API |
API 服务 | NestJS 11 + TypeScript | 聚合搜索、源管理、鉴权、同步、代理 |
搜索缓存 | Redis | 聚合缓存、收藏/进度/历史同步 |
用户存储 | SQLite(sql.js WASM) | 管理员账户与组权限 |
容器化 | Docker + docker compose | 单命令部署,含 Redis |
CI/CD | GitHub Actions → GHCR | 自动构建推送 Docker 镜像 |





