🎬 影视资源管理系统









一套完整的影视资源管理解决方案,包含 Flask 后台管理系统 和 UniApp 多端前端APP。
📋 项目概述
🏗️ 项目结构
├── flask-admin/ # Flask 后台管理系统
│ ├── app/
│ │ ├── __init__.py # 应用工厂、数据库初始化
│ │ ├── models.py # 数据模型(ORM)
│ │ ├── routes/
│ │ │ ├── auth.py # 登录/登出
│ │ │ ├── dashboard.py # 控制台/首页
│ │ │ ├── movies.py # 影视资源管理
│ │ │ ├── categories.py # 分类管理
│ │ │ ├── actors.py # 演员管理
│ │ │ ├── banners.py # 轮播图管理
│ │ │ ├── episodes.py # 剧集/播放地址管理
│ │ │ ├── announcements.py # 公告管理
│ │ │ ├── users.py # 用户管理
│ │ │ ├── settings.py # 系统设置
│ │ │ ├── stats.py # 数据统计
│ │ │ └── api.py # 前端API接口
│ │ └── templates/ # Jinja2 模板
│ │ ├── base.html # 基础布局
│ │ ├── login.html # 登录页
│ │ ├── dashboard.html # 控制台
│ │ ├── movies/ # 影视管理页面
│ │ ├── categories/ # 分类管理页面
│ │ ├── actors/ # 演员管理页面
│ │ ├── banners/ # 轮播管理页面
│ │ ├── episodes/ # 剧集管理页面
│ │ ├── announcements/ # 公告管理页面
│ │ ├── users/ # 用户管理页面
│ │ ├── settings/ # 系统设置页面
│ │ └── stats/ # 数据统计页面
│ ├── sql/
│ │ ├── init.sql # 数据库建表脚本
│ │ └── test_data.sql # 测试数据脚本
│ ├── init_db.py # Python 数据库初始化脚本(推荐)
│ ├── run.py # 启动入口
│ └── requirements.txt # Python 依赖
│
├── uniapp-movie/ # UniApp 影视前端
│ ├── pages/
│ │ ├── home/index.vue # 首页
│ │ ├── category/index.vue # 分类页
│ │ ├── rank/index.vue # 榜单页
│ │ ├── favorite/index.vue # 收藏/历史页
│ │ ├── mine/index.vue # 我的页
│ │ ├── detail/index.vue # 影视详情页
│ │ ├── play/index.vue # 播放页
│ │ └── search/index.vue # 搜索页
│ ├── utils/
│ │ └── api.js # API 请求封装
│ ├── static/ # 静态资源
│ ├── App.vue # 根组件
│ ├── main.js # 入口文件
│ ├── pages.json # 页面路由配置
│ ├── manifest.json # 应用配置
│ └── package.json # Node 依赖
│
└── README.md # 本文档
🖥️ Flask 后台管理系统
功能模块
技术栈
Python 3.9+ Flask 3.0 Flask-SQLAlchemy(ORM) Flask-Login(登录管理) PyMySQL(MySQL 驱动) Element UI(前端 UI 组件库) Vue 2.x(前端框架) ECharts 5(数据可视化)
📱 UniApp 前端APP
功能模块
技术栈
UniApp + Vue 3 原生组件(无第三方UI库依赖) 本地 Storage 做收藏/历史管理 多端兼容(小程序/App/H5)
🚀 快速启动
环境要求
第一步:MySQL 数据库准备
方式A:使用 SQL 脚本(手动)
# 1. 登录 MySQL
mysql -u root -p
# 2. 执行建表脚本
source /path/to/flask-admin/sql/init.sql;
# 3. 执行测试数据脚本(可选,注意:admin密码hash需要通过Python生成)
source /path/to/flask-admin/sql/test_data.sql;
方式B:使用 Python 脚本(推荐)
cd flask-admin
# 安装依赖
pip install -r requirements.txt
# 先创建数据库(在MySQL中执行)
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS movie_admin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 运行初始化脚本(自动建表 + 插入测试数据 + 正确的密码哈希)
python init_db.py
⚠️ 推荐使用方式B,因为管理员密码需要 Python 的 werkzeug 库生成哈希值。
第二步:配置数据库连接
编辑 flask-admin/app/__init__.py 中的数据库连接字符串:
# 默认配置
'mysql+pymysql://root:root123@localhost:3306/movie_admin?charset=utf8mb4'
也可以通过环境变量覆盖:
# Linux/Mac
export DATABASE_URL="mysql+pymysql://用户名:密码@主机:端口/movie_admin?charset=utf8mb4"
# Windows PowerShell
$env:DATABASE_URL="mysql+pymysql://用户名:密码@主机:端口/movie_admin?charset=utf8mb4"
参数说明:
第三步:启动 Flask 后台
cd flask-admin
# 安装 Python 依赖
pip install -r requirements.txt
# 启动开发服务器
python run.py
启动成功后访问:http://localhost:5000
第四步:登录后台
第五步:启动 UniApp 前端(可选)
cd uniapp-movie
# 安装依赖
npm install
# H5 开发模式
npm run dev:h5
# 或使用 HBuilderX 打开项目进行开发
配置后端地址
编辑 uniapp-movie/utils/api.js:
const BASE_URL = 'http://localhost:5000/api/v1'// 修改为你的后端地址
多端发行
npm run build:h5 | |
🔌 API 接口文档
所有前端 API 接口前缀:/api/v1/
接口列表
/api/v1/banners | |||
/api/v1/categories | |||
/api/v1/movies | |||
/api/v1/movies/<id> | |||
/api/v1/movies/recommend | |||
/api/v1/movies/hot | |||
/api/v1/movies/top | |||
/api/v1/search | |||
/api/v1/announcements |
响应格式
{
"code": 0,
"data": [],
"total": 100,
"pages": 9
}
code: 0 表示成功data: 返回数据total: 总数(分页接口)pages: 总页数(分页接口)
影视列表参数说明
🗄️ 数据库设计
ER 关系
Admin (管理员)
Category (分类) ←── 自关联 parent_id
Movie (影视) ←── category_id → Category
Actor (演员)
movie_actors (关联表) ←── movie_id, actor_id
Episode (剧集) ←── movie_id → Movie
Banner (轮播) ←── movie_id → Movie
Announcement (公告)
User (前端用户)
Favorite (收藏) ←── user_id, movie_id
History (历史) ←── user_id, movie_id
SiteSetting (站点设置)
核心表结构
详细建表语句见 flask-admin/sql/init.sql
⚙️ 生产环境部署
使用 Gunicorn(Linux)
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 run:app
使用 Nginx 反向代理
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static {
alias /path/to/flask-admin/static;
}
}
Docker 部署(可选)
FROM python:3.11-slim
WORKDIR /app
COPY flask-admin/ .
RUN pip install -r requirements.txt gunicorn
EXPOSE5000
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "run:app"]
📝 注意事项
首次启动必须确保 MySQL 服务已运行,且已创建 movie_admin数据库测试数据中的图片/视频链接为示例地址(example.com),实际使用请替换为真实资源 生产环境请修改 SECRET_KEY和关闭debug模式UniApp 的 tabBar 图标需替换 static/tab/下的 png 文件(建议 81×81px)前端 API 地址在 utils/api.js中配置,确保跨域设置正确
📄 License
MIT License
通过网盘分享的文件:video-app.rar
链接: https://pan.baidu.com/s/1kzaT7ifmrMUY69tHjmdqYA 复制这段内容后打开百度网盘手机App,操作更方便哦
【请关注本公众号】
夜雨聆风