Files
ai-app-database/README.md
T
huty f103148ebf feat: 初始化个人资料库 Web 应用
基于 Flask + MySQL + Bootstrap 5 的全栈个人资料库管理系统。

主要功能:
- 管理员/普通用户双角色权限体系,全站登录保护
- 资源管理:文本、图片、音频、视频四类资源
- 三种添加方式:本地上传(拖拽)、URL 后台下载、磁力下载(aria2c)
- 在线预览:文本、图片、HTML5 音视频播放器
- 安全:bcrypt 加盐密码哈希、CSRF 防护、SQLAlchemy ORM 防注入

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:16:59 +09:00

3.0 KiB
Raw Blame History

个人资料库 (Personal Resource Library)

基于 Flask + MySQL 的个人多媒体资料管理系统。支持文本、图片、音频、视频的上传、URL 下载、磁力下载及在线预览。

功能特性

功能 说明
权限管理 管理员 / 普通用户两级权限,登录保护所有页面
资源管理 文本、图片、音频、视频四类资源
本地上传 拖拽或点击上传,带实时进度条
URL 下载 后台异步下载远程文件,实时轮询进度
磁力下载 调用 aria2c 在后台下载磁力链接资源
在线预览 文本高亮/图片查看/HTML5 音视频播放器
安全 bcrypt 加盐哈希密码、CSRF 防护、SQL 注入防护、XSS 防护

快速开始

1. 环境准备

  • Python 3.10+
  • MySQL 8.0+
  • (可选)aria2c — 用于磁力下载

2. 安装依赖

pip install -r requirements.txt

3. 配置数据库

创建 MySQL 数据库:

CREATE DATABASE resource_library CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

复制并修改环境配置:

cp .env.example .env

编辑 .env

SECRET_KEY=your-random-secret-key
DATABASE_URL=mysql+pymysql://root:yourpassword@localhost:3306/resource_library

4. 初始化数据库

python init_db.py
# 自定义管理员账号:
# python init_db.py --admin-user admin --admin-pass YourPass123 --admin-email admin@example.com

5. 启动服务

python run.py

访问 http://localhost:5000,使用默认管理员账号登录:

  • 用户名:admin
  • 密码:Admin@123456

项目结构

.
├── app/
│   ├── models/          # 数据库模型 (User, Resource, SystemSetting)
│   ├── routes/          # 路由蓝图 (auth, admin, resources, main)
│   ├── utils/           # 工具模块 (decorators, file_handler, downloader)
│   ├── static/          # 静态文件 (CSS, JS, 上传文件)
│   │   └── uploads/     # 用户上传文件目录(自动创建)
│   └── templates/       # Jinja2 模板
├── config.py            # 配置类
├── init_db.py           # 数据库初始化脚本
├── run.py               # 启动入口
└── requirements.txt

安全设计

安全措施 实现方式
密码存储 Flask-Bcryptbcrypt 自动加盐哈希)
CSRF 防护 Flask-WTF CSRFProtect,所有 POST 请求验证 token
权限控制 Flask-Login @login_required + 自定义 @admin_required
SQL 注入 SQLAlchemy ORM 参数化查询
XSS 防护 Jinja2 自动转义 HTML 输出
文件安全 werkzeug.secure_filename + 扩展名白名单验证
Session HTTPOnly Cookie + SameSite=Lax

磁力下载说明

磁力下载需要在服务器上安装 aria2c

  • Linux/macOSapt install aria2 / brew install aria2
  • Windows:从 aria2 Releases 下载并加入 PATH