Files
media_crawler/README.md
renjue 21c5bd9edd Switch frontend package sources to npm official registry.
Replace artifactory URLs in lockfile and update runtime/default docs to use https://registry.npmjs.org for dependency installs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 17:23:27 +08:00

104 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# media_crawler
资源爬取自动入库项目,采用前后端分层:
- `frontend/`: Vue + JavaScript 页面
- `backend/`: Python Flask API编排 TMDB -> HDHIVE -> Emby -> CMS
## 本地启动
### 1) 启动后端Flask
```bash
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.com`
- `HDHIVE_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
```bash
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`
### 构建镜像
```bash
docker build -t media-crawler:latest .
```
构建较慢时可使用加速参数BuildKit + host 网络 + 可选 apt 镜像):
```bash
DOCKER_BUILDKIT=1 docker build --network=host \
--build-arg APT_MIRROR=mirrors.aliyun.com \
-t media-crawler:latest .
```
### 运行容器
```bash
docker run --rm -it \
-p 14620:14620 \
-p 14621:14621 \
-v media_crawler_runtime:/app/runtime \
--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`
- `NPM_REGISTRY`:前端依赖安装镜像源(默认 `https://registry.npmjs.org`
- `NPM_FALLBACK_REGISTRY``NPM_REGISTRY` 失败时回退源(默认 `https://registry.npmjs.org`
- `FORCE_FRONTEND_REBUILD`:强制每次重装前端依赖并重建(默认 `0`,仅 lockfile 变更时才安装构建)
- `NPM_INSTALL_TIMEOUT_SEC`:前端依赖安装超时秒数(默认 `900`
- `NPM_PROGRESS_INTERVAL_SEC`:安装过程心跳日志间隔秒数(默认 `15`