Sottotitoli yt-dlp vs un'API di Trascrizione: Quale Usare

yt-dlp può scaricare sottotitoli per praticamente qualsiasi video YouTube, e se l'hai usato per download di media hai probabilmente già scoperto i flag. È uno strumento genuinamente fantastico — lo mantengo installato ovunque. Ma "può scaricare sottotitoli" e "è il modo giusto per ottenere trascrizioni in un servizio" sono affermazioni diverse, e sono stato bruciato da conflazione loro. Ecco cosa appare effettivamente ogni approccio, incluso lo step di cleanup che nessuno ti avvisa.
Il modo yt-dlp, end to end
Afferrare i sottotitoli inglesi auto-generati senza scaricare il video:
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "%(id)s" "https://www.youtube.com/watch?v=VIDEO_ID"
(Usa --write-sub invece per tracce caricate da umani, o entrambi i flag insieme.) Questo rilascia un file VIDEO_ID.en.vtt. Aprilo e vedrai perché non hai finito:
WEBVTT
Kind: captions
Language: en
00:00:00.320 --> 00:00:02.879
so today we're going to look at
00:00:01.760 --> 00:00:04.560
so today we're going to look at
how youtube handles
I sotto-auto sono didascalie "rolling" — ogni cue ripete la linea precedente, quindi lo stripping ingenuo ti dà ogni frase due volte. Chiunque scenda per questa strada finisce per scrivere una versione di questo cleanup:
import re, pathlib
lines = []
for line in pathlib.Path("VIDEO_ID.en.vtt").read_text().splitlines():
if "-->" in line or line.startswith(("WEBVTT", "Kind:", "Language:")) or not line.strip():
continue
line = re.sub(r"<[^>]+>", "", line).strip() # strip inline timing tags
if not lines or line != lines[-1]: # collapse rolling duplicates
lines.append(line)
text = " ".join(lines)
Comando, gestione dei sottoproessi, file I/O, dedupe — chiamalo 40 righe di colla prima di avere testo semplice.
Dove yt-dlp è la risposta giusta
- Archiviazione offline in blocco. Puntalo all'URL di un canale e camminerà su ogni video, sottotitoli inclusi, riprendibile e gratuito. Per costruire un archivio personale sulla tua connessione domestica, nulla lo batte.
- Vuoi i file di sottotitoli stessi. Se srt/vtt con timing è il deliverable — alimentazione a un editor video, preservazione di timing di cue esatto — yt-dlp ti dà l'artefatto grezzo.
- Stai scaricando i media comunque. Già tirando l'audio per trascrizione Whisper? Aggiungere
--write-auto-subè un flag. - Zero budget, scala personale. Su un IP residenziale a velocità umana, semplicemente funziona.
Dove fa male su un server
Tre oneri di manutenzione separati appaiono nel momento in cui yt-dlp si sposta in un backend:
- La corsa del binario. YouTube cambia i suoi interni costantemente, e yt-dlp spedisce correzioni costantemente — quello è una feature, ma significa che la tua dipendenza di produzione ha bisogno di aggiornamenti frequenti o l'estrazione inizia a fallire.
- Blocco IP. Da indirizzi AWS/GCP/Heroku, aspettati errori "Accedi per confermare che non sei un bot". Questo è lo stesso muro che blocca youtube-transcript-api nel cloud — cambiare strumenti non cambia la tua reputazione di IP.
- Il codice di colla. Gestione dei sottoproessi, file temporanei, il cleanup vtt sopra, tracce non-inglesi, rilevamento di didascalie mancanti via codici di uscita e analisi stderr.
Il modo API
La versione dell'endpoint ospitato dell'intera pipeline sopra:
curl -s "https://youtube2text.org/api/transcribe?url=VIDEO_ID" \
-H "x-api-key: yt_YOUR_KEY"
Restituisce JSON — {"result": {"videoId", "title", "pubDate", "content", ...}} — già il testo semplice deduplicato, con errori strutturati (TRANSCRIPT_UNAVAILABLE quando le didascalie non esistono, invece dell'archeologia stderr). Una chiave demo condivisa è una sola chiamata via (curl -s https://youtube2text.org/api/demo-key, 5 video/mese per IP); la guida di avvio completa è in estrazione di trascrizioni con curl.
La nota di piè di pagina onesta
Entrambi gli approcci recuperano le stesse didascalie dallo stesso posto, e entrambi devono affrontare il fatto che YouTube non vuole traffico automatizzato. yt-dlp lo rende tuo problema — ok su un laptop, un progetto di proxy su un server. Un'API ospitata lo rende il problema del provider: youtube2text.org instrada i recuperi attraverso proxy residenziali rotanti lato server, che è precisamente il pezzo che non puoi facilmente replicare da un IP di datacenter. Non stai pagando per la trascrizione; stai pagando per non gestirlo.
La mia divisione: yt-dlp per archivi e one-off sulla mia macchina, l'API per qualsiasi cosa che funziona incustodita. Se corrisponde alla tua situazione, le chiavi sono su youtube2text.org/app/keys — accesso Google, livello gratuito 5/mese, a pagamento da $ 5,99.