指令碼與進階開發
命令列模式 (CLI)
💡 自動化指南:若您希望系統定期自動執行郵件截取,建議直接使用 TUI 的 Schedule 分頁(內建
pycron,時間到自動背景執行,無需設定外部排程器)。 但如果您希望透過其他系統從外部觸發執行,或是需要做測試與單次資料拋轉,CLI 則是您的最佳選擇。
單次任務或外部整合可直接使用 CLI 執行:
uv tool安裝模式:直接使用mailslide ...- 原始碼模式:使用
uv run mailslide ...
# 使用預設設定檔(原始碼模式)
uv run mailslide
# 使用預設設定檔(uv tool 安裝模式)
mailslide
# 指定自訂設定檔
uv run mailslide --config path/to/config.yaml
# 測試模式(僅讀取,不移動郵件)
uv run mailslide --dry-run
# 輸出結果至 JSON 檔案
uv run mailslide --output result.json
# 不移動郵件,僅擷取資料
uv run mailslide --no-move
Python import 遷移
如果你在程式碼中引入此套件,新的 import path 建議使用 mailslide:
from mailslide import load_config, LLMClient
最小可執行範例:
from pathlib import Path
from mailslide import load_config
config = load_config(Path("config/config.yaml"))
print(f"jobs: {len(config.get('jobs', []))}")
相容期內舊路徑 outlook_mail_extractor 仍可使用,但後續 major 版本將移除。
多語言 (gettext + Babel) 結構
本專案採用 key-based i18n:程式使用翻譯 key(例如 app.title)而非直接寫死文案。
- 執行期:
gettext(若未編譯 catalog,會 fallback 到outlook_mail_extractor/locales/*.yaml) - 開發期:
Babel管理po/mo
CLI 可用 --lang 暫時覆蓋語言:
uv run mailslide --lang en-US
或在 config/config.yaml 靜態設定:
ui_language: zh-TW
常用 Babel 指令
在專案根目錄執行:
# 抽取可翻譯字串到 POT
pybabel extract -F babel.cfg -o outlook_mail_extractor/locales/gettext/messages.pot .
# 初始化語言(首次)
pybabel init -i outlook_mail_extractor/locales/gettext/messages.pot -d outlook_mail_extractor/locales/gettext -D messages -l zh_TW
# 更新既有語言
pybabel update -i outlook_mail_extractor/locales/gettext/messages.pot -d outlook_mail_extractor/locales/gettext -D messages
# 編譯成 .mo 格式供程式讀取
pybabel compile -d outlook_mail_extractor/locales/gettext -D messages
(Windows 用戶也可直接使用腳本 ./scripts/i18n.ps1 all)