本機手動測試工具
gh-pages 分支提供了一套小型 Python 工具,讓工程師可以在本機手動操作 Vylux,而不需要把這些 helper 放進主應用分支。
工具放在:
tools/manual/
這套工具的定位是本機與可信任工程環境用的輔助工具,不是 production SDK。
先決條件
- Python 3.11+
- 工具會自動安裝
cryptography,用於 AES-GCM source token - 若要操作 RustFS object,需安裝
boto3 - 準備好可用的
.env,必要時再加.env.local
先從 repo root 以 editable mode 安裝這個工具:
pip install -e tools/manual
安裝 RustFS 相關依賴:
pip install -e 'tools/manual[rustfs]'
pip 和 python 沒有指向同一個環境在大多數 conda 和 virtualenv 工作流裡,pip 和 python 會屬於同一個目前啟用的環境。若你的環境不是這樣,請把 pip ... 改成 python -m pip ...。
環境變數載入順序
工具會依序載入:
.env.env.local(覆蓋.env)- 同名 process environment variables(優先級最高)
這和 Vylux 本機開發時的常見習慣一致:
.env通常放 container-to-container 位址,例如postgres、redis、otel-collector.env.local通常放 host-to-container 覆蓋值,例如localhost:5434、localhost:6381、localhost:9002
快速開始
在 gh-pages 分支根目錄執行:
pip install -e tools/manual
vylux-manual --help
如果你偏好 module 形式,也可以使用:
python -m vylux_manual --help
建議使用方式如下:
- 先在 repo root 準備好 Vylux 所需的
.env或.env.local。 - 用 editable mode 安裝一次工具。
- 執行
vylux-manual --help查看所有可用指令。 - 依你想驗證的流程,逐一執行單一指令,例如上傳檔案、送出工作、查詢狀態,或產生簽名 URL。
本頁以 vylux-manual 這個安裝後產生的命令作為主要入口。
安裝完成後,只要 shell 使用的是同一個 Python 環境,就可以直接執行 vylux-manual。repo root 主要影響的是安裝命令,以及工具會讀取的 .env 檔案位置。
支援的指令
目前支援:
- 上傳檔案到
source或mediabucket - 列出
source或mediabucket 中的 object - 用
head查物件 metadata - 從
source或mediabucket 刪除 object - 建立 audio job
- 建立 video transcode job
- 建立 video full job
- 查詢 job status
- retry failed job
- 依 content hash 刪除衍生媒體
- 產生已簽名的
/img、/original、/thumbURL - 設定
IMAGE_SOURCE_KEY時產生可重用的 AES-GCM source token - 產生
/api/key/{id}的 URL 與 Bearer token
常見流程
上傳來源檔案
vylux-manual upload source uploads/demo.flac /path/to/demo.flac
vylux-manual upload source uploads/demo.mp4 /path/to/demo.mp4
建立加密 audio HLS 工作
vylux-manual create-audio a0b1c2d3 uploads/demo.flac --encrypt --waveform
建立加密 video transcode 工作
vylux-manual create-video-transcode deadbeef uploads/demo.mp4 --encrypt
查詢 job 狀態
vylux-manual job-status <job-id>
依 hash 刪除衍生媒體
vylux-manual delete-media deadbeef
建議流程
多數手動測試可以依照這個順序進行:
- 把來源檔案上傳到
sourcebucket。 - 送出你要觀察的媒體處理工作。
- 用
job-status持續查詢直到處理完成。 - 處理完成後,再產生播放或交付所需的簽名 URL。
這樣能讓這套工具維持在一次性驗證與理解流程的用途,而不是演變成自動化系統。
修改工具程式後
如果你修改了 tools/manual/src/vylux_manual 底下的 Python 程式,通常不需要重新編譯或重新安裝。因為套件是以 editable mode 安裝,vylux-manual 本來就直接指向你的工作樹。
多數情況下,流程就是:
vylux-manual --help
儲存修改後,直接重新執行你要測試的命令即可。
只有在你修改了 pyproject.toml 的 packaging metadata、加入新依賴,或更動 console script 定義時,才需要重新執行安裝命令。
卸載工具
要從目前的 Python 環境移除這個工具,可以執行:
pip uninstall vylux-manual
如果你的 pip 和 python 在 shell 中不是同一套環境,則改用 interpreter-specific 的寫法:
python -m pip uninstall vylux-manual
卸載後,vylux-manual 會從該環境中消失。若命令仍然存在,通常表示你的 PATH 上還有另一個 Python 環境也安裝了它。
簽名與播放輔助
這套工具也能產生你的應用平常會對外提供的那些 route。
已簽名圖片 URL
vylux-manual image-url uploads/sample.png webp --options w320_h180
.env 或 .env.local 有 IMAGE_SOURCE_KEY 時,此命令會自動加密 source key;未設定時維持明文 URL。
分開生成並保存 token:
vylux-manual source-token uploads/sample.png
vylux-manual image-url uploads/sample.png webp --options w320_h180 --token '<saved-token>'
重現固定測試向量:
vylux-manual source-token static/forum/recommend-cover.png \
--nonce 000102030405060708090a0b
--nonce 只供測試向量使用;一般操作請省略,讓工具生成安全的隨機 nonce。
已簽名原檔 URL
vylux-manual original-url uploads/sample.png --token '<saved-token>'
已簽名縮圖 URL
vylux-manual thumb-url videos/mo/movie-2026-04-01/cover.jpg
Key endpoint URL 與 Bearer token
vylux-manual key-url <key-id> <content-hash> --ttl 3600
安全提醒
- 不要把
API_KEY、HMAC_SECRET、IMAGE_SOURCE_KEY、KEY_TOKEN_SECRET暴露到瀏覽器 - 請把這套工具視為可信任的本機 helper,而不是公開 client
- 若你會分享 shell history 或截圖,記得其中可能會帶到敏感值