Add CLI command for video registration with UUID generation
This commit is contained in:
117
README.md
117
README.md
@@ -1,3 +1,118 @@
|
||||
# video_register
|
||||
|
||||
影片註冊服務
|
||||
影片元數據註冊服務
|
||||
|
||||
## 功能
|
||||
|
||||
- 讀取 `.probe.json` 文件(由 video_probe 生成)
|
||||
- 根據檔案路徑自動生成 UUID 作為檔案 ID
|
||||
- 將影片元數據註冊到 PostgreSQL 資料庫
|
||||
- 支援 SQL 查詢搜尋影片元數據
|
||||
- 註冊後將檔案複製為 UUID 命名(測試期間保留原始檔)
|
||||
|
||||
## 安裝
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## 配置
|
||||
|
||||
在專案根目錄創建 `.env` 文件:
|
||||
|
||||
```env
|
||||
DATABASE_URL=postgresql://accusys@localhost:5432/video_register
|
||||
```
|
||||
|
||||
## 使用方式
|
||||
|
||||
### CLI 命令
|
||||
|
||||
#### 註冊影片
|
||||
|
||||
```bash
|
||||
python cli.py register <probe.json 路徑>
|
||||
```
|
||||
|
||||
選項:
|
||||
- `--dry-run`: 測試模式,不實際複製檔案
|
||||
|
||||
範例:
|
||||
```bash
|
||||
python cli.py register ../test_video/Old_Time_Movie_Show_-_Charade_1963.HD.probe.json
|
||||
python cli.py register ../test_video/Old_Time_Movie_Show_-_Charade_1963.HD.probe.json --dry-run
|
||||
```
|
||||
|
||||
#### 驗證已註冊的影片
|
||||
|
||||
```bash
|
||||
python cli.py verify <UUID>
|
||||
```
|
||||
|
||||
範例:
|
||||
```bash
|
||||
python cli.py verify 1636719d-c31f-78ac-f1dd-8ab0b0b36c66
|
||||
```
|
||||
|
||||
### API 服務
|
||||
|
||||
啟動 FastAPI 服務:
|
||||
|
||||
```bash
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
API 文件:http://localhost:8000/docs
|
||||
|
||||
## probe.json 格式
|
||||
|
||||
輸入的 `probe.json` 必須包含 `video_path` 欄位:
|
||||
|
||||
```json
|
||||
{
|
||||
"video_path": "/absolute/path/to/video.mov",
|
||||
"probed_at": "2026-03-10T23:26:04",
|
||||
"format": { ... },
|
||||
"video_stream": { ... },
|
||||
"audio_streams": [...],
|
||||
"subtitle_streams": [...]
|
||||
}
|
||||
```
|
||||
|
||||
## UUID 生成規則
|
||||
|
||||
UUID 透過 SHA-256 雜湊檔案路徑生成,確保:
|
||||
- 相同路徑產生相同的 UUID
|
||||
- 可從 UUID 反向計算驗證
|
||||
|
||||
## 資料庫結構
|
||||
|
||||
### videos 表
|
||||
- `id`: UUID (主鍵)
|
||||
- `file_path`: 原始檔案路徑
|
||||
- `file_name`: 檔案名稱(不含副檔名)
|
||||
- `file_extension`: 副檔名
|
||||
- `file_size`: 檔案大小
|
||||
- `format_name`: 格式名稱
|
||||
- `duration`: 時長
|
||||
- `title`: 標題
|
||||
- `artist`: 藝術家
|
||||
|
||||
### video_streams 表
|
||||
- `video_id`: 關聯的 videos ID
|
||||
- `codec_name`: 編碼名稱
|
||||
- `width`, `height`: 解析度
|
||||
- `color_space`: 色彩空間
|
||||
- `color_range`: 色彩範圍
|
||||
|
||||
### audio_streams 表
|
||||
- `video_id`: 關聯的 videos ID
|
||||
- `codec_name`: 編碼名稱
|
||||
- `channels`: 聲道數
|
||||
- `sample_rate`: 取樣率
|
||||
- `language`: 語言
|
||||
|
||||
### subtitle_streams 表
|
||||
- `video_id`: 關聯的 videos ID
|
||||
- `codec_name`: 編碼名稱
|
||||
- `language`: 語言
|
||||
|
||||
Reference in New Issue
Block a user