Skip to content

feat(clip,dub,caption): add --from-stdin batch mode#213

Merged
alexkroman merged 1 commit into
mainfrom
claude/command-option-composability-lwyx0n
Jun 17, 2026
Merged

feat(clip,dub,caption): add --from-stdin batch mode#213
alexkroman merged 1 commit into
mainfrom
claude/command-option-composability-lwyx0n

Conversation

@alexkroman

Copy link
Copy Markdown
Collaborator

Abstract transcribe's batch primitive (--from-stdin/--concurrency/--force)
into a shared app/batch.py runner and wire it into clip, dub, and caption, so
each processes a piped list of sources concurrently — making the media commands
as pipeline-composable as transcribe already was (find … | assembly caption
--from-stdin).

  • app/batch.py: a generic concurrent runner parameterized by a per-source
    worker — stdin source expansion, a live status table, one NDJSON record per
    source under --json, and a fail-summary that exits non-zero. Lighter than
    transcribe's sidecar/--llm/--llm-reduce path on purpose.
  • clip/dub/caption: --from-stdin reads one path/URL per line and runs each
    source's existing single-source pipeline concurrently. A re-run skips sources
    whose output already exists (--force redoes them); --out and -t/--transcript-id
    are rejected in batch mode (they can't span many sources).
  • options.py: the batch option factories now take per-command help text so the
    flags read naturally on each command (video vs audio, caption vs dub vs clip).

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_015PJdgpwb2zQAJSyyMQvijh

Abstract transcribe's batch primitive (--from-stdin/--concurrency/--force)
into a shared app/batch.py runner and wire it into clip, dub, and caption, so
each processes a piped list of sources concurrently — making the media commands
as pipeline-composable as transcribe already was (find … | assembly caption
--from-stdin).

- app/batch.py: a generic concurrent runner parameterized by a per-source
  worker — stdin source expansion, a live status table, one NDJSON record per
  source under --json, and a fail-summary that exits non-zero. Lighter than
  transcribe's sidecar/--llm/--llm-reduce path on purpose.
- clip/dub/caption: --from-stdin reads one path/URL per line and runs each
  source's existing single-source pipeline concurrently. A re-run skips sources
  whose output already exists (--force redoes them); --out and -t/--transcript-id
  are rejected in batch mode (they can't span many sources).
- options.py: the batch option factories now take per-command help text so the
  flags read naturally on each command (video vs audio, caption vs dub vs clip).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015PJdgpwb2zQAJSyyMQvijh
@alexkroman alexkroman enabled auto-merge June 17, 2026 04:23
@alexkroman alexkroman added this pull request to the merge queue Jun 17, 2026
Merged via the queue into main with commit a8d2ffd Jun 17, 2026
19 checks passed
@alexkroman alexkroman deleted the claude/command-option-composability-lwyx0n branch June 17, 2026 04:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants