yt-dlp Undertexter vs ett transkriptions-API: Vilket ska du använda

yt-dlp kan ladda ner bildtexter för basically någon YouTube-video, och om du har använt det för mediahämtningar har du förmodligen redan upptäckt flaggorna. Det är ett verkligt bra verktyg — jag behåller det installerat överallt. Men "kan ladda ner bildtexter" och "är rätt väg att få transkriptioner i en tjänst" är olika anspråk, och jag har brunnit av att blanda dem. Här är vad varje tillvägagångssätt faktiskt ser ut som, inklusive rengöringsteget ingen varnar dig om.
yt-dlp-vägen, ända igenom
Att fånga automatiskt genererad engelska undertexter utan att ladda ner videon:
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "%(id)s" "https://www.youtube.com/watch?v=VIDEO_ID"
(Använd --write-sub i stället för människouppladdade spår, eller båda flaggor tillsammans.) Detta släpper en VIDEO_ID.en.vtt fil. Öppna det och du kommer att se varför du inte är klar:
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-subs är "rullande" bildtexter — varje cue upprepar den tidigare raden, så naiv borttagning ger dig varje mening två gånger. Alla som går denna väg slutar upp med att skriva någon version av denna rengöring:
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, undeerprocesshantering, fil-I/O, dedupe — kalla det 40 rader lim innan du har vanlig text.
Där yt-dlp är rätt svar
- Massbulk offline-arkivering. Peka på en kanal-URL och den går genom varje video, bildtexter inkluderad, resumbar och gratis. För att bygga ett personligt arkiv på din hemförbindelse slår ingenting det.
- Du vill själva undertextfilerna. Om srt/vtt med tidning är leveransen — mata en videoredaktör, bevara exakt cue-tidning — ger yt-dlp dig råartefakten.
- Du laddar redan ner mediet. Redan dra ljud för Whisper transkription? Lägg till
--write-auto-subär en flagga. - Noll budget, personskala. På en bostad IP vid människohastigheter fungerar det bara.
Där det gör ont på en server
Tre separata underhållsbördor dyker upp det ögonblick yt-dlp flyttar till en backend:
- Binärbandet treadmill. YouTube ändrar sina interna konstant, och yt-dlp skips fixes ständigt — det är en egenskap, men det betyder din produktionsberoende behöver ofta uppdateringar eller extraktion börjar misslyckas.
- IP-blockering. Från AWS/GCP/Heroku-adresser, förvänta dig "Logga in för att bekräfta du inte är en bot"-fel. Det här är samma vägg som blockerar youtube-transcript-api i molnet — att växla verktyg växlar inte din IP-rykte.
- Lim koden. Undeerprocesshantering, temp-filer, vtt-rengöring ovan, icke-engelska spår, saknat-bildtext-detektering via utgångskoder och stderr-parsning.
API-vägen
Den hosted-endpoint-versionen av hela pipelinen ovan:
curl -s "https://youtube2text.org/api/transcribe?url=VIDEO_ID" \
-H "x-api-key: yt_YOUR_KEY"
Returnerar JSON — {"result": {"videoId", "title", "pubDate", "content", ...}} — redan deduplicerad vanlig text, med strukturerade fel (TRANSCRIPT_UNAVAILABLE när inga bildtexter existerar, i stället för stderr-arkeologi). En delad demo-nyckel är ett anrop bort (curl -s https://youtube2text.org/api/demo-key, 5 videor/månad per IP); den fullständiga snabbstarten ligger i extrahera transkriptioner med curl.
Den ärliga fotnotsionen
Båda tillvägagångssätten hämtar samma bildtexter från samma plats, och båda måste hantera YouTube som inte vill ha automatiserad trafik. yt-dlp gör det ditt problem — bra på en bärbara dator, ett proxy-projekt på en server. Ett hosted API gör det leverantörens problem: youtube2text.org dirigerar hämtningar genom roterande residentiell proxies på serversidan, vilket är precis den bit du inte lätt kan replikera från en datacenter-IP. Du betalar inte för transkriptionen; du betalar för att inte driva det.
Min delning: yt-dlp för arkiv och one-offs på min egen maskin, API:t för allt som kör obevakad. Om det matchar din situation, nycklar ligger på youtube2text.org/app/keys — Google-inloggning, gratis 5/månad-nivå, betald från $5,99.