worker を追加(ステップ6a) #9

Merged
kazu634 merged 1 commits from worker-download into main 2026-10-03 23:27:49 +09:00
Owner

概要

ステップ6a: worker(ダウンロード本体)を追加する。登録番組の定期確認(6b)は範囲外。

  • cmd/worker・internal/worker: 起動時に DATABASE_URL 必須・Migrate・RequeueStale。ClaimNext → yt-dlp → 段階別進捗(段階変更は即時、同一段階は 1 秒に間引き)→ after_move の実パス → ffprobe(MP4・H.264・AAC)→ ファイル名規則の場所へ rename → Complete
  • 番組名等を yt-dlp の出力テンプレートに入れず、VIDEO_DIR/.incoming/<job id>/ に ID 名で取得して Go 側で移動。すべての終了経路で作業ディレクトリを片付ける。after_move は通常ファイルかつ実体が作業ディレクトリ内のものだけ受理
  • 進捗が無い間も 5 秒ごとに heartbeat。実行中の取り消し(web にボタン、worker がプロセスグループごと停止)。SIGTERM で running を queued に戻して終了
  • 失敗分類(取り消し→DRM→地域制限→network→unavailable→extract→unknown、ffprobe 不合格は invalid_output)、自動再試行なし、トークン等の伏字化
  • 同時ダウンロード数は既定 1(WORKER_CONCURRENCY で 2 まで)。移動先の同名ファイルは上書き(冪等)
  • Dockerfile.worker(yt-dlp[default] 2026.08.19 を ARG 固定、ffmpeg/ffprobe、非 root)、compose.yaml に worker、PROJECT.md を更新

確認

  • go test -count=1 ./... → 161件成功・0失敗、go test -race ./internal/worker 競合なし、go vet 指摘0件
  • QA が % を含む番組名、同名上書き、シンボリックリンクの外出し(差し戻し1件、修正済み)、2並行、ffprobe 各不合格などを追加
  • dockage VM で Dockerfile.worker をビルドし、非 root・yt-dlp 2026.08.19・pycryptodomex 3.23.0・ffmpeg/ffprobe 7.1.5 を確認
  • 手元で実 TVer の 7 分本編(epxua4h7xg)を web から登録 → worker が取得 → 1080p H.264/AAC MP4(143.4MiB)で保存 → ライブラリ表示・Range 配信まで通しで確認

🤖 Generated with Claude Code

https://claude.ai/code/session_01BcuBr9DyfcqZY8xFQsY5Di

## 概要 ステップ6a: worker(ダウンロード本体)を追加する。登録番組の定期確認(6b)は範囲外。 - `cmd/worker`・`internal/worker`: 起動時に `DATABASE_URL` 必須・Migrate・RequeueStale。ClaimNext → yt-dlp → 段階別進捗(段階変更は即時、同一段階は 1 秒に間引き)→ after_move の実パス → ffprobe(MP4・H.264・AAC)→ ファイル名規則の場所へ rename → Complete - 番組名等を yt-dlp の出力テンプレートに入れず、`VIDEO_DIR/.incoming/<job id>/` に ID 名で取得して Go 側で移動。すべての終了経路で作業ディレクトリを片付ける。after_move は通常ファイルかつ実体が作業ディレクトリ内のものだけ受理 - 進捗が無い間も 5 秒ごとに heartbeat。実行中の取り消し(web にボタン、worker がプロセスグループごと停止)。SIGTERM で running を queued に戻して終了 - 失敗分類(取り消し→DRM→地域制限→network→unavailable→extract→unknown、ffprobe 不合格は invalid_output)、自動再試行なし、トークン等の伏字化 - 同時ダウンロード数は既定 1(`WORKER_CONCURRENCY` で 2 まで)。移動先の同名ファイルは上書き(冪等) - `Dockerfile.worker`(yt-dlp[default] 2026.08.19 を ARG 固定、ffmpeg/ffprobe、非 root)、`compose.yaml` に worker、`PROJECT.md` を更新 ## 確認 - `go test -count=1 ./...` → 161件成功・0失敗、`go test -race ./internal/worker` 競合なし、`go vet` 指摘0件 - QA が % を含む番組名、同名上書き、シンボリックリンクの外出し(差し戻し1件、修正済み)、2並行、ffprobe 各不合格などを追加 - dockage VM で `Dockerfile.worker` をビルドし、非 root・yt-dlp 2026.08.19・pycryptodomex 3.23.0・ffmpeg/ffprobe 7.1.5 を確認 - 手元で実 TVer の 7 分本編(epxua4h7xg)を web から登録 → worker が取得 → 1080p H.264/AAC MP4(143.4MiB)で保存 → ライブラリ表示・Range 配信まで通しで確認 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01BcuBr9DyfcqZY8xFQsY5Di
kazu634 added 1 commit 2026-10-03 22:56:40 +09:00
kazu634 merged commit 82536c6398 into main 2026-10-03 23:27:49 +09:00
kazu634 deleted branch worker-download 2026-10-03 23:27:50 +09:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kazu634/tver#9