yt-dlp Napisy vs Transkrypcja API: Którego Użyć

yt-dlp może pobierać napisy dla prawie każdego wideo YouTube, a jeśli używałeś go do pobierania mediów prawdopodobnie już odkryłeś flagi. To naprawdę świetne narzędzie — trzymam go zainstalowanego wszędzie. Ale "możesz pobierać napisy" i "to prawy sposób, aby uzyskać transkrypcje w usłudze" są różnymi twierdzeniami, i byłem spalony przez mylenie ich. Tutaj jest co każdy dostęp wygląda, w tym krok czyszczenia nikt cię nie ostrzega.
Sposób yt-dlp, end do końca
Pobieranie autogenerowanych angielskich napisów bez pobierania wideo:
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "%(id)s" "https://www.youtube.com/watch?v=VIDEO_ID"
(Użyj --write-sub zamiast dla ścieżek przesłanych przez człowieka, lub obie flagi razem.) To upuszcza plik VIDEO_ID.en.vtt. Otwórz to i zobaczysz dlaczego skończyłeś:
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
Napisy auto to "toczące się" napisy — każda wskazówka powtarza poprzednią linię, więc naiwne rozbieranie daje Ci każde zdanie dwa razy. Wszyscy, którzy idą drogą kończy się pisaniem niektórych wersji tego czyszczenia:
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)
Polecenie, obsługa podprocesu, plik I/O, dedupe — zadzwoń na to 40 linii kleju, zanim będziesz mieć zwykły tekst.
Gdzie yt-dlp jest prawą odpowiedzią
- Zbiorcze archiwizowanie offline. Wskaż go na adres URL kanału i będzie chodzić każde wideo, napisy w zestawie, wznawialny i bezpłatny. Do budowy osobistej archiwum na Twoim połączeniu domowym, nic nie bije go.
- Chcesz samych plików napisów. Jeśli srt/vtt z czasem to dostarczalny — zasilanie edytora wideo, zachowanie dokładnego czasu wskazówki — yt-dlp daje Ci surowy artefakt.
- Pobierasz media już. Już ciągniesz audio dla Whisper transcription? Dodanie
--write-auto-subto jedna flaga. - Zero budżetu, osobista skala. Na domowym IP przy ludzkiej prędkości, to po prostu działa.
Gdzie boli na serwerze
Trzy oddzielne obciążenia konserwacji pojawiają się w momencie yt-dlp przenosi do backendu:
- Bieżnik binarny. YouTube zmienia się wewnętrznie stale, a yt-dlp wysyła poprawki stale — to feature, ale oznacza to Twoja produkcyjna zależność potrzebuje częstych aktualizacji lub ekstrakcja zaczyna nie pracować.
- Blokada IP. Z AWS/GCP/Heroku adresów, spodziewaj się "Zaloguj się, aby potwierdzić, że nie jesteś botem" błędów. To jest ta sama ściana, która blokuje youtube-transcript-api w chmurze — przełączanie narzędzi nie przełącza Twojej reputacji IP.
- Kod kleju. Zarządzanie subprocess, pliki temp, czyszczenie vtt powyżej, ścieżki non-angielskie, brakująca detencja napisów przez kody wyjścia i stderr parsowanie.
Sposób API
Wersja hostowanego punktu końcowego całego rurociągu powyżej:
curl -s "https://youtube2text.org/api/transcribe?url=VIDEO_ID" \
-H "x-api-key: yt_YOUR_KEY"
Zwraca JSON — {"result": {"videoId", "title", "pubDate", "content", ...}} — już deduplicated zwykły tekst, z ustrukturyzowanymi błędami (TRANSCRIPT_UNAVAILABLE, gdy napisy nie istnieją, zamiast archeologii stderr). Wspólny klucz demo to jeden rozmowa (curl -s https://youtube2text.org/api/demo-key, 5 filmów/miesiąc na IP); pełny quickstart jest w ekstrakcja transkrypcji za pomocą curl.
Szczera przypiska
Oba dostępy pobierają te same napisy z tego samego miejsca, a obaj muszą radzić sobie z YouTube nie chcą zautomatyzowanego ruchu. yt-dlp robi to Twojego problemu — w porządku na laptopie, projekt proxy na serwerze. Hostowany API czyni to problemem dostawcy: youtube2text.org trasuje pobiera przez obracające się proxy mieszkalne po stronie serwera, które to dokładnie kawałek, którego nie możesz łatwo replikować z adresu centrum danych. Nie płacisz za transkrypcję; płacisz, aby nie obsługiwać to.
Mój podział: yt-dlp dla archiwów i jedno-offsów na mojej własnej maszynie, API na cokolwiek, co uruchamia bezobsługowo. Jeśli to pasuje do Twojej sytuacji, klucze są na youtube2text.org/app/keys — logowanie Google, bezpłatny 5/miesiąc poziom, płatny od 5,99 USD.