Я установил следующее в своей системе Windows 10 в Powershell...
- виртуальную среду Python (venv)
- затем обновил Python
- затем установил youtube-transcript-api
- создал файл urls.txt с URL-адресами YT
- создал скрипт «download_transcripts.py»
Кажется, ничего не загружается.
# download_transcripts.py
from youtube_transcript_api import YouTubeTranscriptApi
from youtube_transcript_api.transcript import TranscriptList
import re
import os
# --- Konfiguration ---
URLS_FILE = "urls.txt"
OUTPUT_DIR = "transcripts"
# ---------------------
def extract_video_id(url):
"""Extrahiert Video-ID aus YouTube-URL"""
# Muster für verschiedene URL-Formate (watch?v=, youtu.be/, embed/, etc.)
pattern = r"(?:v=|\/)([0-9A-Za-z_-]{11}).*"
match = re.search(pattern, url)
return match.group(1) if match else None
def get_transcript_text(transcript_segments):
"""Segmente zu einem Text"""
return ' '.join([segment['text'] for segment in transcript_segments])
def download_transcripts():
"""Liest URLs, extrahiert IDs, Transkripte download"""
if not os.path.exists(URLS_FILE):
print(f"Fehler: Die Datei '{URLS_FILE}' wurde nicht gefunden.")
return
os.makedirs(OUTPUT_DIR, exist_ok=True)
video_ids = []
# URLs aus der Datei lesen und IDs extrahieren
with open(URLS_FILE, 'r') as f:
for line in f:
url = line.strip()
if url:
video_id = extract_video_id(url)
if video_id:
video_ids.append(video_id)
else:
print(f"Warnung: Konnte die Video-ID aus der URL '{url}' nicht extrahieren.")
if not video_ids:
print("Keine gültigen Video-IDs zum Herunterladen gefunden.")
return
print(f"Starte Download für {len(video_ids)} Videos...")
try:
transcript_list = YouTubeTranscriptApi.get_transcripts(
video_ids,
continue_after_error=True,
language=['de']
)
for video_id, transcript_or_error in zip(video_ids, transcript_list):
if isinstance(transcript_or_error, Exception):
print(f"Fehler beim Abrufen des Transkripts für ID {video_id}: {transcript_or_error}")
continue
try:
transcript = transcript_or_error[0]
full_text = get_transcript_text(transcript)
output_filename = os.path.join(OUTPUT_DIR, f"{video_id}.txt")
with open(output_filename, 'w', encoding='utf-8') as outfile:
outfile.write(full_text)
print(f"Erfolgreich gespeichert: {output_filename}")
except Exception as e:
print(f"Warnung: Konnte kein Transkript für ID {video_id} speichern/finden. Detail: {e}")
except Exception as e:
print(f"\n Kritischer Fehler während des API-Aufrufs: {e}")
if __name__ == "__main__":
download_transcripts()
Подробнее здесь: https://stackoverflow.com/questions/798 ... script-api
Мобильная версия