Install git in image and change start script to clone/pull target branch, reinstall dependencies, rebuild frontend, then launch backend and frontend services. Co-authored-by: Cursor <cursoragent@cursor.com>
2.5 KiB
2.5 KiB
media_crawler
资源爬取自动入库项目,采用前后端分层:
frontend/: Vue + JavaScript 页面backend/: Python Flask API(编排 TMDB -> HDHIVE -> Emby -> CMS)
本地启动
1) 启动后端(Flask)
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python app.py
默认端口:
- 后端:
14620 - 前端:
14621
后端 .env 中 HDHIVE 相关参数按 OpenAPI 文档配置:
HDHIVE_BASE_URL例如https://hdhive.comHDHIVE_API_KEY对应请求头X-API-Key(必填)HDHIVE_ACCESS_TOKEN对应Authorization: Bearer ...(按授权场景可选)
后端 CMS 入库参数支持两种模式:
- 直接给固定 token:
CMS_TOKEN - 自动登录获取 token:
CMS_LOGIN_URL+CMS_USERNAME+CMS_PASSWORD
入库接口地址使用 CMS_ADD_SHARE_URL(或 CMS_BASE_URL 自动拼接 /api/cloud/add_share_down)。
2) 启动前端(Vite)
cd frontend
cp .env.example .env
npm install
npm run dev
页面能力
- 主页面支持按关键词在 TMDB 搜索影视
- 点击影视封面进入详情页,展示 HDHive 资源列表
- 点击资源链接触发入库任务(按资源 slug 入库)
- 任务中心位于二级页面
/tasks - 前端调用 Flask API:
POST /api/tasks、GET /api/tasks、GET /api/tasks/{taskId}/logs - 前端新增接口:
GET /api/media/search、GET /api/media/{type}/{tmdbId} - 任务状态、结果、错误和步骤日志展示
- 后端使用 SQLite 保存任务、资源和日志,并按
tmdb_id做幂等控制 - 后端统一错误分类:
validation、authentication、authorization、rate_limit、not_found、business_rule、network、timeout、upstream、internal
Docker 单容器运行
项目提供了单容器运行前后端的 Dockerfile,容器启动时会先从 Git 拉取最新代码,然后再启动:
- Flask 后端:
14620 - 前端预览服务:
14621
构建镜像
docker build -t media-crawler:latest .
运行容器
docker run --rm -it \
-p 14620:14620 \
-p 14621:14621 \
--env-file backend/.env \
-e GIT_REPO_URL=https://git.rc707blog.top/rose_cat707/media_crawler.git \
-e GIT_BRANCH=main \
media-crawler:latest
可选环境变量:
GIT_REPO_URL:容器启动时拉取代码的仓库地址GIT_BRANCH:拉取分支(默认main)WORKTREE_DIR:容器内代码目录(默认/app/runtime)