322 lines
6.2 KiB
Markdown
322 lines
6.2 KiB
Markdown
# 72QishierPlayer 技术栈说明
|
||
|
||
一个基于 **Vue3 + Vite + Node.js + Playwright + HLS.js + Artplayer**
|
||
的《七十二家房客》在线播放项目。
|
||
|
||
本项目通过 **浏览器自动采集官网数据 → 本地缓存 JSON → Node API 提供 →
|
||
Vue 前端播放** 的方式,解决官网接口 **签名、401、分页限制**
|
||
等问题,实现稳定播放。
|
||
|
||
------------------------------------------------------------------------
|
||
# 运行与安装指南
|
||
|
||
本文档说明 **72QishierPlayer** 项目的安装与运行步骤。\
|
||
项目由 **Node.js 后端 + Vue3 前端** 两部分组成,需要分别启动。
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 一、后端服务(Node.js)
|
||
|
||
后端主要负责:
|
||
|
||
- 提供节目 API
|
||
- 读取本地 JSON 数据
|
||
- 提供给前端播放列表
|
||
|
||
## 1. 安装依赖
|
||
|
||
进入后端目录:
|
||
|
||
``` bash
|
||
cd backServer
|
||
```
|
||
|
||
安装依赖:
|
||
|
||
``` bash
|
||
npm install
|
||
```
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 2. 启动后端服务
|
||
|
||
``` bash
|
||
node server.js
|
||
```
|
||
|
||
默认接口地址:
|
||
|
||
http://localhost:3000
|
||
|
||
例如:
|
||
|
||
http://localhost:3000/api/qishier/list
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 3. 更新节目数据(可选)
|
||
|
||
如果需要重新采集节目数据:
|
||
|
||
``` bash
|
||
node capture.js
|
||
```
|
||
|
||
该脚本会:
|
||
|
||
1. 启动浏览器自动采集
|
||
2. 打开节目页面
|
||
3. 自动加载更多节目
|
||
4. 捕获接口数据
|
||
5. 更新本地缓存
|
||
|
||
数据保存位置:
|
||
|
||
backServer/data/qishier-cache.json
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 二、前端服务(Vue3)
|
||
|
||
前端负责:
|
||
|
||
- 视频播放器
|
||
- 节目列表展示
|
||
- 自动下一集
|
||
- 播放进度记录
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 1. 安装前端依赖
|
||
|
||
进入前端目录:
|
||
|
||
``` bash
|
||
cd 72QishierPlayer
|
||
```
|
||
|
||
安装依赖:
|
||
|
||
``` bash
|
||
npm install
|
||
```
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 2. 启动前端开发服务器
|
||
|
||
``` bash
|
||
npm run dev
|
||
```
|
||
|
||
默认访问地址:
|
||
|
||
http://localhost:5173
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 三、开发模式运行流程
|
||
|
||
建议的启动顺序:
|
||
|
||
``` text
|
||
1. 启动 Node 后端
|
||
node server.js
|
||
|
||
2. 启动 Vue 前端
|
||
npm run dev
|
||
|
||
3. 浏览器访问
|
||
http://localhost:5173
|
||
```
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 四、生产环境部署
|
||
|
||
构建前端:
|
||
|
||
``` bash
|
||
npm run build
|
||
```
|
||
|
||
构建完成后生成:
|
||
|
||
dist/
|
||
|
||
将 `dist` 部署到 Nginx 或静态服务器即可。
|
||
|
||
后端服务建议使用 **PM2** 运行:
|
||
|
||
``` bash
|
||
pm2 start server.js --name qishier-api
|
||
pm2 save
|
||
```
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 五、常见问题
|
||
|
||
## 1. 播放器无法播放
|
||
|
||
确认:
|
||
|
||
- 后端服务已启动
|
||
- API 地址正常
|
||
- m3u8 视频链接有效
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 2. 没有节目数据
|
||
|
||
执行:
|
||
|
||
``` bash
|
||
node capture.js
|
||
```
|
||
|
||
重新采集节目列表。
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 六、默认端口
|
||
|
||
服务 端口
|
||
---------- ------
|
||
Vue 前端 5173
|
||
Node API 3000
|
||
|
||
|
||
|
||
# 技术栈(Tech Stack)
|
||
|
||
## 前端
|
||
|
||
技术 说明
|
||
------------- -----------------------
|
||
Vue3 前端框架
|
||
Vite 前端构建工具
|
||
TypeScript 类型安全开发
|
||
Axios HTTP 请求库
|
||
Artplayer 视频播放器 UI
|
||
hls.js m3u8 / HLS 视频流播放
|
||
HTML5 Video 浏览器视频播放能力
|
||
CSS3 页面样式
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 后端
|
||
|
||
技术 说明
|
||
------------ ------------------
|
||
Node.js 后端运行环境
|
||
Express API 服务
|
||
Playwright 浏览器自动化采集
|
||
JSON 数据缓存存储
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 数据采集
|
||
|
||
技术 说明
|
||
---------------- ------------------
|
||
Playwright 自动打开官网页面
|
||
浏览器接口拦截 捕获节目 API
|
||
自动滚动 加载更多节目
|
||
JSON缓存 本地节目数据存储
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
## 视频播放技术
|
||
|
||
技术 说明
|
||
--------------------------- --------------------
|
||
HLS (HTTP Live Streaming) 视频流协议
|
||
hls.js 浏览器 HLS 解码
|
||
Artplayer 视频播放器 UI 控件
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 项目架构
|
||
|
||
``` text
|
||
官网接口
|
||
gdtv-api.gdtv.cn
|
||
│
|
||
▼
|
||
Playwright 浏览器采集
|
||
│
|
||
▼
|
||
本地 JSON 缓存
|
||
backServer/data/qishier-cache.json
|
||
│
|
||
▼
|
||
Node API
|
||
/api/qishier/*
|
||
│
|
||
▼
|
||
Vue3 前端
|
||
Artplayer + HLS
|
||
```
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 核心功能
|
||
|
||
功能 技术实现
|
||
----------------- --------------------
|
||
自动采集节目 Playwright
|
||
数据缓存 JSON
|
||
API 服务 Express
|
||
视频播放 Artplayer + hls.js
|
||
自动下一集 Vue 状态管理
|
||
顺序 / 倒序播放 列表排序
|
||
播放进度记录 Cookie
|
||
懒加载节目列表 前端分页
|
||
组件化架构 Vue Components
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 运行环境
|
||
|
||
环境 版本
|
||
---------- -------------------------
|
||
Node.js ≥ 18
|
||
npm ≥ 9
|
||
浏览器 Chrome / Edge / Safari
|
||
操作系统 macOS / Linux / Windows
|
||
|
||
------------------------------------------------------------------------
|
||
|
||
# 项目目录结构
|
||
|
||
``` text
|
||
72QishierPlayer
|
||
│
|
||
├─ src
|
||
│ ├─ api
|
||
│ │ └─ qishier.ts
|
||
│ │
|
||
│ ├─ components
|
||
│ │ └─ qishier
|
||
│ │ ├─ QishierVideoPlayer.vue
|
||
│ │ └─ QishierEpisodeList.vue
|
||
│ │
|
||
│ ├─ views
|
||
│ │ └─ QishierPlayer.vue
|
||
│ │
|
||
│ └─ utils
|
||
│ └─ playHistory.ts
|
||
│
|
||
├─ backServer
|
||
│ ├─ data
|
||
│ │ └─ qishier-cache.json
|
||
│ │
|
||
│ ├─ capture.js
|
||
│ └─ server.js
|
||
│
|
||
├─ vite.config.ts
|
||
└─ package.json
|
||
```
|