一个功能完整的Web应用,用于从OpenList自动下载文件、进行视频转码处理,并上传到指定位置。
本地部署:
Docker部署(推荐):
使用预构建的 Docker 镜像,无需安装 Python 和 Node.js:
# 使用 Docker Compose(推荐)
docker-compose up -d
# 或直接使用 Docker
docker run -d \
--name openlist-sync \
-p 8000:8000 \
-v $(pwd)/data:/app/backend/data \
-e ENVIRONMENT=production \
-e TZ=Asia/Shanghai \
--restart unless-stopped \
kokojacket/openlist-sync:latest
详细说明请查看 📘 Docker 完全指南
Windows:
scripts\start.bat
Linux/Mac:
./scripts/start.sh
快速启动(推荐):
# 在项目根目录
python run.py
详细步骤:
# 进入后端目录
cd backend
# 创建虚拟环境(首次运行)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖(首次运行)
pip install -r requirements.txt
# 初始化数据库(首次运行)
python -m app.utils.init_db
# 返回项目根目录
cd ..
# 启动后端服务
python run.py
后端将运行在: http://localhost:8000 API文档: http://localhost:8000/docs
# 进入前端目录
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev
前端将运行在: http://localhost:5173
# 构建并启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
backend/.env)# 应用配置
APP_NAME=PanBox Sync
APP_VERSION=1.0.0
DEBUG=true
# 数据库
DATABASE_URL=sqlite:///./data/database.db
# JWT认证
SECRET_KEY=your-secret-key-change-this-in-production
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=43200
# OpenList配置
OPENLIST_BASE_URL=https://your-openlist-server.com
OPENLIST_USERNAME=admin
OPENLIST_PASSWORD=your-password
# 并发控制
MAX_CONCURRENT_DOWNLOADS=3
MAX_CONCURRENT_UPLOADS=2
MAX_CONCURRENT_TRANSCODES=2
# FFmpeg配置
FFMPEG_PATH=ffmpeg
FFMPEG_THREADS=4
# 文件存储
DOWNLOAD_DIR=./data/downloads
UPLOAD_DIR=./data/uploads
LOG_DIR=./data/logs
frontend/.env)VITE_API_BASE_URL=http://localhost:8000
VITE_APP_TITLE=PanBox Sync
- ✅ **处理速度极快** - 秒级完成
- ✅ **文件大小几乎不变** - 只增加8-16字节
- ✅ **不影响播放** - 视频/文件完全可用
- ✅ **资源占用低** - 不消耗大量CPU
### 实现原理
参考项目: [kokojacket/md5-modifier](https://github.com/kokojacket/md5-modifier)
在文件末尾追加8-16个随机字节,这样:
- MD5值完全改变
- 文件功能不受影响
- 可以绕过OpenList的重复检测
## 故障排除
### ~~FFmpeg未找到~~
**不需要FFmpeg!** 本系统使用纯Python的MD5修改方式,无需安装任何外部工具。
### 数据库错误
```bash
# 重新初始化数据库
cd backend
python -m app.database reset
修改配置文件中的端口号或终止占用进程:
# 查找占用8000端口的进程
lsof -i :8000 # Linux/macOS
netstat -ano | findstr :8000 # Windows
# 安装开发依赖
pip install -r requirements-dev.txt
# 运行测试
pytest
# 代码格式化
black app/
isort app/
# 类型检查
mypy app/
# 代码格式化
npm run format
# 代码检查
npm run lint
# 类型检查
npm run type-check
# 构建生产版本
npm run build
欢迎提交Issue和Pull Request!
本项目基于AGPLv3许可证(与OpenList保持一致)
Content type
Image
Digest
sha256:666321d5c…
Size
139.7 MB
Last updated
9 months ago
docker pull kokojacket/openlist-sync