Files
scripts/podcast/scripts/batch-produce.sh
T
ealmeida 6035542b67 feat: scripts de projectos vindos do Hub (podcast, alojadamaria, clip, ocr, etc.)
Movidos do vault Hub para centralizar scripts. Hub mantem symlinks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 20:53:29 +01:00

69 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/lib.sh"
# Episodios a produzir (ordem do calendario)
EPISODES=(136 37 38 39 40 41 42 44 135 46 47 48 49 50 51)
TOTAL=${#EPISODES[@]}
DONE=0
FAILED=0
log_info "=== BATCH PRODUCE: ${TOTAL} episodios ==="
for EP in "${EPISODES[@]}"; do
EP_PAD="$(pad_number "$EP")"
DONE=$((DONE + 1))
log_info "--- [${DONE}/${TOTAL}] EP${EP_PAD} ---"
# Step 1: Generate audio (split + TTS)
log_info "EP${EP_PAD}: Generating audio..."
if bash "${SCRIPT_DIR}/generate-audio.sh" "$EP" 2>&1; then
log_info "EP${EP_PAD}: Audio generation OK"
else
log_error "EP${EP_PAD}: Audio generation FAILED, skipping"
FAILED=$((FAILED + 1))
continue
fi
# Step 2: Collect raw audio parts
RAW_DIR="${PROJECT_ROOT}/Episodios/Audios/raw"
RAW_FILES=()
for p in "${RAW_DIR}/ep_${EP_PAD}_p"*.wav; do
[[ -f "$p" ]] && RAW_FILES+=("$p")
done
if [[ ${#RAW_FILES[@]} -eq 0 ]]; then
# Try alternate path with accent
RAW_DIR="${PROJECT_ROOT}/Episodios/Audios/raw"
for p in "${RAW_DIR}/ep_${EP_PAD}_p"*.wav; do
[[ -f "$p" ]] && RAW_FILES+=("$p")
done
fi
if [[ ${#RAW_FILES[@]} -eq 0 ]]; then
log_error "EP${EP_PAD}: No raw audio files found, skipping post-production"
FAILED=$((FAILED + 1))
continue
fi
# Sort parts numerically
IFS=$'\n' RAW_FILES_SORTED=($(printf '%s\n' "${RAW_FILES[@]}" | sort)); unset IFS
# Step 3: Post-produce
log_info "EP${EP_PAD}: Post-producing ${#RAW_FILES_SORTED[@]} parts..."
if bash "${SCRIPT_DIR}/post-produce.sh" "$EP" "${RAW_FILES_SORTED[@]}" 2>&1; then
log_info "EP${EP_PAD}: Post-production OK"
else
log_error "EP${EP_PAD}: Post-production FAILED"
FAILED=$((FAILED + 1))
continue
fi
log_info "EP${EP_PAD}: DONE"
done
log_info "=== BATCH COMPLETE: ${DONE} processed, $((DONE - FAILED)) OK, ${FAILED} failed ==="