fix(review): round-2 findings — dead proxy key, unbounded transcribe, doc pins
- configure proxy: the bilibili_proxy key lost its only reader when yt-dlp exited the bilibili channel (PR5), leaving docs promising an unlock that did nothing. Now saves a generic `proxy` key (legacy key kept in sync), and every wording — CLI output, server tip, install.md quick reference — says what it really is: a saved address agents read to export HTTP(S)_PROXY, not an unlock switch - transcribe: subprocess calls get timeouts (yt-dlp download 1800s, ffmpeg 600s) so a stalled network read can't hang the CLI forever - docs/update.md: rdt-cli install uses the same pinned git SHA as the code's _RDT_GIT_SOURCE instead of floating HEAD - probe.py: documented as side-effect-free-probes-only (retries re-run verbatim with no backoff) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -58,9 +58,16 @@ def _require(binary: str) -> None:
|
||||
raise MissingDependency(f"{binary} not found in PATH")
|
||||
|
||||
|
||||
def _run(cmd: List[str]) -> None:
|
||||
"""Run a subprocess, raising TranscribeError on nonzero exit."""
|
||||
proc = subprocess.run(cmd, capture_output=True, text=True)
|
||||
def _run(cmd: List[str], timeout: int = 600) -> None:
|
||||
"""Run a subprocess, raising TranscribeError on nonzero exit or timeout.
|
||||
|
||||
cmd carries user-supplied URLs/paths into yt-dlp/ffmpeg — a stalled
|
||||
network read or a hung probe must not block the CLI forever.
|
||||
"""
|
||||
try:
|
||||
proc = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)
|
||||
except subprocess.TimeoutExpired:
|
||||
raise TranscribeError(f"{cmd[0]} timed out after {timeout}s")
|
||||
if proc.returncode != 0:
|
||||
raise TranscribeError(
|
||||
f"{cmd[0]} failed (exit {proc.returncode}): {proc.stderr.strip()[:300]}"
|
||||
@@ -82,7 +89,8 @@ def download_audio(url: str, out_dir: Path) -> Path:
|
||||
"-o",
|
||||
str(template),
|
||||
url,
|
||||
]
|
||||
],
|
||||
timeout=1800, # long podcasts over slow networks — generous but bounded
|
||||
)
|
||||
files = sorted(out_dir.glob("source.*"))
|
||||
if not files:
|
||||
|
||||
Reference in New Issue
Block a user