yt-dlp undertekster vs en transkripsjon API: Hvilken skal brukes

yt-dlp kan laste ned undertekster for nesten alle YouTube-videoer, og hvis du har brukt det til media-nedlastinger du har sannsynlig allerede oppdaget flaggene. Det er et genuint flott verktøy — jeg holder det installert overalt. Men "kan laste ned undertekster" og "er den rette måten å få transkripsjoner i en tjeneste" er ulike påstander, og jeg har blitt brent av å blande dem. Her er hva hver tilnærming faktisk ser ut som, inkludert rens-trinnet ingen advarer deg om.
yt-dlp måten, end til end
Grabbing auto-generert engelsk undertekster uten å laste ned videoen:
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "%(id)s" "https://www.youtube.com/watch?v=VIDEO_ID"
(Bruk --write-sub i stedet for menneske-lastet spor, eller begge flagg sammen.) Dette dropper en VIDEO_ID.en.vtt fil. Åpne det og du vil se hvorfor du ikke er ferdig:
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
Auto-undertekster er "rullende" undertekster — hvert signal gjentar forrige linje, så naiv stripping gir deg hver setning dobbelt. Alle som går ned denne veien ender opp med å skrive noen versjon av denne rens:
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)
Kommando, subprocess-håndtering, fil I/O, dedupe — kall det 40 linjer med lim før du har vanlig tekst.
Der yt-dlp er det rette svaret
- Bulk offline arkivering. Pek det på en kanal-URL og det vil gå gjennom hver video, undertekster inkludert, gjenopptakbar og gratis. For å bygge et personlig arkiv på din hjemme-forbindelse, ingenting slår det.
- Du vil ha undertekst-filene selv. Hvis srt/vtt med timing er leverings-materialet — mating en video-redigerer, bevare eksakt signal-timing — yt-dlp gir deg artifact-en.
- Du laster ned media likevel. Allerede trekker lyd for Whisper transkripsjon? Legge til
--write-auto-suber ett flagg. - Null budsjett, personlig-skala. På en bolig-IP på menneske-hastigheter, fungerer det bare.
Der det gjør vondt på en server
Tre separate vedlikeholds-byr viser opp fra øyeblikket yt-dlp beveger seg inn i en backend:
- Den binær tredmølle. YouTube endrer interne konstant, og yt-dlp sendes oppdateringer konstant — det er en funksjon, men det betyr produksjon-avhengigheten din trenger hyppige oppdateringer eller utdrag starter fejlfølelse.
- IP-blokkering. Fra AWS/GCP/Heroku-adresser, forvent "Logg inn for å bekrefte du er ikke en robot" feil. Det er samme vegg som blokkerer youtube-transcript-api i skyen — bytte verktøy bytter ikke IP-ryktet ditt.
- Lim-koden. Subprocess-håndtering, temp-filer, vtt-rens ovenfor, ikke-engelsk spor, manglende-undertekst-deteksjon via exit-koder og stderr-tolking.
API-måten
Den vertskap-endepunkt versjon av hele rørledningen ovenfor:
curl -s "https://youtube2text.org/api/transcribe?url=VIDEO_ID" \
-H "x-api-key: yt_YOUR_KEY"
Returnerer JSON — {"result": {"videoId", "title", "pubDate", "content", ...}} — allerede deduplisert vanlig tekst, med strukturert feil (TRANSCRIPT_UNAVAILABLE når ingen undertekster finnes, i stedet for stderr arkeologi). En delt demo-nøkkel er ett kall unna (curl -s https://youtube2text.org/api/demo-key, 5 videoer/måned per IP); den fulle quickstart er i utdraging transkripsjoner med curl.
Den ærlige fotnote
Begge tilnærminger henter samme undertekster fra samme sted, og begge må håndtere YouTube ikke ønsker automatisert trafikk. yt-dlp gjør det problemet ditt — OK på bærbar, proxy-prosjekt på server. En vertskap API gjør det leverandør sin problem: youtube2text.org ruter hentinger gjennom roterende bolig-proxyer server-side, som er nøyaktig stykket du ikke lett kan kopiere fra en datasenter-IP. Du betaler ikke for transkripsjonen; du betaler å ikke operere det.
Min split: yt-dlp for arkiver og en-av på min egen maskin, APIen for noe som kjører uovervåket. Hvis det samsvarer situasjonen: nøkkler er på youtube2text.org/app/keys — Google-innlogging, gratis 5/måned nivå, betalt fra $5.99.