huty fd47740f13
CI — Docker Build & Push / Build & Push Image (push) Waiting to run
ci: 添加 Gitea Actions 自动构建工作流
新增两个工作流,push 和 tag 均触发镜像构建并推送至 Gitea 内置镜像仓库:

ci.yml(push 触发):
  - 监听 main / master / develop 分支
  - 镜像标签::latest(main/master)、:develop、:sha-<短提交号>
  - 利用 buildcache tag 缓存镜像层加速后续构建

release.yml(tag 触发):
  - 监听 v* 格式的 tag(如 v1.0.0)
  - semver 自动展开:v1.2.3 → :1.2.3 + :1.2 + :1 + :latest
  - 预发布 tag(含 -)不覆盖 :latest
  - 自动生成两次 tag 之间的变更日志并写入 Step Summary

共同特性:
  - 通过 tr 将仓库路径转小写,规避 HTY1024 大写问题
  - 最终镜像名:git.hty1024.com/hty1024/ai-app-database

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:44:19 +09:00
2026-04-23 00:21:15 +09:00

个人资料库 (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
S
Description
No description provided
Readme 282 KiB
0.1.0 Latest
2026-04-24 13:44:57 +08:00
Languages
HTML 41.5%
Python 32.7%
Shell 18.4%
CSS 3.8%
JavaScript 2.5%
Other 1.1%