yt-dlp Subtitle vs API Transkrip: Yang Mana Satu untuk Digunakan

yt-dlp dapat mengunduh subtitle untuk dasarnya video YouTube apa pun, dan jika Anda telah menggunakannya untuk download media Anda mungkin sudah menemukan flag. Ini adalah alat yang benar-benar hebat — saya simpan terinstal di mana-mana. Tetapi "dapat mengunduh subtitle" dan "adalah cara yang tepat untuk mendapatkan transkrip dalam layanan" adalah klaim berbeda, dan saya telah terbakar dengan menggabungkannya. Berikut adalah bagaimana setiap pendekatan benar-benar terlihat, termasuk langkah pembersihan yang tidak ada yang memperingatkan Anda tentang.
Cara yt-dlp, end to end
Mengambil subtitle auto-generated Bahasa Inggris tanpa mengunduh video:
yt-dlp --write-auto-sub --sub-lang en --skip-download \
-o "%(id)s" "https://www.youtube.com/watch?v=VIDEO_ID"
(Gunakan --write-sub alih-alih untuk trek yang diunggah manusia, atau kedua flag bersama-sama.) Ini menjatuhkan file VIDEO_ID.en.vtt. Buka dan Anda akan melihat mengapa Anda tidak selesai:
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 adalah caption "rolling" — setiap cue mengulangi baris sebelumnya, jadi stripping naive memberikan Anda setiap kalimat dua kali. Semua orang yang turun jalan ini berakhir menulis beberapa versi pembersihan ini:
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)
Perintah, penanganan subprocess, I/O file, dedupe — panggil 40 baris lem sebelum Anda memiliki teks biasa.
Di mana yt-dlp adalah jawaban yang benar
- Bulk offline archival. Tunjukkan pada URL channel dan itu akan berjalan di setiap video, subtitle termasuk, dapat dilanjutkan dan gratis. Untuk membangun arsip pribadi di koneksi rumah Anda, tidak ada yang mengalahkannya.
- Anda menginginkan file subtitle itu sendiri. Jika srt/vtt dengan waktu adalah deliverable — memberi makan editor video, mempertahankan waktu cue yang tepat — yt-dlp memberi Anda artefak mentah.
- Anda mengunduh media bagaimanapun. Sudah menarik audio untuk transkripsi Whisper? Menambahkan
--write-auto-subadalah satu flag. - Nol budget, skala pribadi. Pada IP perumahan pada kecepatan manusia, itu berfungsi.
Di mana itu terluka di server
Tiga beban pemeliharaan terpisah muncul saat yt-dlp pindah ke backend:
- The binary treadmill. YouTube mengubah internal-nya secara konstan, dan yt-dlp mengirim perbaikan secara konstan — itu fitur, tetapi itu berarti dependensi produksi Anda membutuhkan update sering atau ekstraksi mulai gagal.
- IP blocking. Dari alamat AWS/GCP/Heroku, harapkan "Masuk untuk konfirmasi Anda bukan bot" kesalahan. Ini adalah dinding yang sama yang memblokir youtube-transcript-api di cloud — alat switching tidak mengalihkan reputasi IP Anda.
- The glue code. Penanganan subprocess, file temp, pembersihan vtt di atas, trek non-Inggris, deteksi caption yang hilang melalui kode keluar dan stderr parsing.
Cara API
Versi endpoint yang dihosting dari seluruh pipa di atas:
curl -s "https://youtube2text.org/api/transcribe?url=VIDEO_ID" \
-H "x-api-key: yt_YOUR_KEY"
Mengembalikan JSON — {"result": {"videoId", "title", "pubDate", "content", ...}} — sudah teks biasa yang dideduplikasi, dengan kesalahan terstruktur (TRANSCRIPT_UNAVAILABLE ketika tidak ada caption yang ada, alih-alih stderr archaeology). Kunci demo bersama adalah satu panggilan (curl -s https://youtube2text.org/api/demo-key`, 5 video/bulan per IP); quickstart lengkapnya ada dalam mengekstrak transkrip dengan curl.
Catatan kaki jujur
Kedua pendekatan mengambil caption yang sama dari tempat yang sama, dan keduanya harus menangani YouTube tidak menginginkan lalu lintas otomatis. yt-dlp membuat itu masalah Anda — baik di laptop, proyek proxy pada server. API yang dihosting membuatnya masalah penyedia: youtube2text.org mengarahkan fetch melalui proxy perumahan yang berputar di sisi server, yang tepat bagian yang tidak dapat Anda dengan mudah replikasi dari IP datacenter. Anda tidak membayar untuk transkrip; Anda membayar untuk tidak mengoperasikan itu.
Split saya: yt-dlp untuk arsip dan one-offs di mesin saya sendiri, API untuk apa pun yang berjalan tanpa diawasi. Jika itu cocok dengan situasi Anda, kunci ada di youtube2text.org/app/keys — Google sign-in, tier gratis 5/bulan, dibayar dari $5,99.