乐于分享
好东西不私藏

Flask实现影视资源管理系统 和APP

Flask实现影视资源管理系统 和APP

🎬 影视资源管理系统

一套完整的影视资源管理解决方案,包含 Flask 后台管理系统 和 UniApp 多端前端APP


📋 项目概述

项目
说明
后台管理
基于 Flask 的轻量化浅色风格后台管理系统
前端APP
基于 UniApp 的多端影视播放应用
数据库
MySQL 8.0+(utf8mb4)
适配
后台适配 PC 端,APP 适配微信小程序/App/H5

🏗️ 项目结构

├── 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 后台管理系统

功能模块

模块
功能
控制台
数据概览、近7日上传趋势图、分类占比饼图、快捷操作
影视管理
列表/搜索/筛选/分页/新增/编辑/删除/批量/上下架/推荐/热门/置顶
分类管理
多级分类(一级/二级)、排序、图标、关联统计
演员管理
演员CRUD、关联影视资源
轮播管理
轮播图增删改、排序、关联影视、开关控制
剧集管理
多线路播放地址、分集管理、批量添加剧集
公告管理
系统公告发布、置顶、显示/隐藏
用户管理
前端用户列表、禁用/解禁
数据统计
播放量TOP10、地区分布、近30日上传趋势
系统设置
站点名称/Logo/版权/解析接口、管理员管理

技术栈

  • Python 3.9+
  • Flask 3.0
  • Flask-SQLAlchemy(ORM)
  • Flask-Login(登录管理)
  • PyMySQL(MySQL 驱动)
  • Element UI(前端 UI 组件库)
  • Vue 2.x(前端框架)
  • ECharts 5(数据可视化)

📱 UniApp 前端APP

功能模块

页面
功能
首页
搜索栏、轮播图、分类入口、推荐列表、热门列表
分类
分类TAB切换、地区/年份筛选、瀑布流列表、上拉加载
榜单
热播榜/好评榜/最新榜、排名列表
收藏/历史
本地收藏列表、观看历史、清空/删除
我的
用户信息、功能入口、清除缓存
搜索
实时搜索、搜索历史、结果列表
详情
封面/信息/演员/选集、收藏、播放
播放
视频播放器、选集切换、倍速、自动下一集

技术栈

  • UniApp + Vue 3
  • 原生组件(无第三方UI库依赖)
  • 本地 Storage 做收藏/历史管理
  • 多端兼容(小程序/App/H5)

🚀 快速启动

环境要求

软件
版本要求
Python
3.9+
MySQL
8.0+
Node.js
16+(UniApp开发时需要)
HBuilderX
最新版(UniApp开发/打包)

第一步: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"

参数说明:

参数
默认值
说明
用户名
root
MySQL 用户名
密码
root123
MySQL 密码
主机
localhost
MySQL 主机地址
端口
3306
MySQL 端口
数据库
movie_admin
数据库名

第三步:启动 Flask 后台

cd flask-admin

# 安装 Python 依赖
pip install -r requirements.txt

# 启动开发服务器
python run.py

启动成功后访问:http://localhost:5000


第四步:登录后台

角色
用户名
密码
超级管理员
admin
admin123
编辑
editor01
editor123
管理员
admin02
admin123

第五步:启动 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'// 修改为你的后端地址

多端发行

平台
方式
H5
npm run build:h5
微信小程序
HBuilderX → 发行 → 微信小程序
Android/iOS
HBuilderX → 发行 → 原生App云打包

🔌 API 接口文档

所有前端 API 接口前缀:/api/v1/

接口列表

方法
路径
说明
参数
GET
/api/v1/banners
获取轮播图
-
GET
/api/v1/categories
获取分类列表
-
GET
/api/v1/movies
获取影视列表
page, per_page, category_id, area, year, sort, keyword
GET
/api/v1/movies/<id>
获取影视详情
-
GET
/api/v1/movies/recommend
获取推荐列表
-
GET
/api/v1/movies/hot
获取热门列表
-
GET
/api/v1/movies/top
获取排行榜
-
GET
/api/v1/search
搜索影视
keyword
GET
/api/v1/announcements
获取公告列表
-

响应格式

{
"code"0,
"data": [],
"total"100,
"pages"9
}
  • code: 0 表示成功
  • data: 返回数据
  • total: 总数(分页接口)
  • pages: 总页数(分页接口)

影视列表参数说明

参数
类型
说明
可选值
page
int
页码
默认 1
per_page
int
每页数量
默认 12
category_id
int
分类ID筛选
-
area
string
地区筛选
大陆/香港/美国/韩国/日本...
year
string
年份筛选
2024/2023/2022...
sort
string
排序方式
newest/hot/rating
keyword
string
搜索关键词
-

🗄️ 数据库设计

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"]

📝 注意事项

  1. 首次启动必须确保 MySQL 服务已运行,且已创建 movie_admin 数据库
  2. 测试数据中的图片/视频链接为示例地址(example.com),实际使用请替换为真实资源
  3. 生产环境请修改 SECRET_KEY 和关闭 debug 模式
  4. UniApp 的 tabBar 图标需替换 static/tab/ 下的 png 文件(建议 81×81px)
  5. 前端 API 地址在 utils/api.js 中配置,确保跨域设置正确

📄 License

MIT License

通过网盘分享的文件:video-app.rar

链接: https://pan.baidu.com/s/1kzaT7ifmrMUY69tHjmdqYA 复制这段内容后打开百度网盘手机App,操作更方便哦

【请关注本公众号】