# 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()
Was stimmt mit meinem Skript nicht? Ich habe Folgendes auf meinem Windows 10-System in Powershell installiert... [list] [*]eine virtuelle Python-Umgebung (venv)
[*]dann Python aktualisiert
[*]und dann youtube-transcript-api installiert
[*]eine urls.txt-Datei mit den YT-URLs erstellt
[*]das Skript „download_transcripts.py“ erstellt
[/list] In venv ausführen. Es scheint, dass nichts geladen wird. [code]# download_transcripts.py
from youtube_transcript_api import YouTubeTranscriptApi from youtube_transcript_api.transcript import TranscriptList import re import os
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...")
Ich muss eine Möglichkeit implementieren, Videos von unserer Website auf YouTube hochzuladen. Ich habe die App bereits in Google Cloud registriert und alle erforderlichen Client -ID, Client...
Wenn ich eine YouTube -Video -URL habe, gibt es eine Möglichkeit, PHP und Curl zu verwenden, um die zugehörige Miniaturansicht aus der YouTube -API zu erhalten?
Beschreibung Zusammenfassung:
Die eingebetteten YouTube-Playlist-Player (mit IFrame HTML oder Iframe-API) oder den mobilen Browsern (Android) Crash oder Beenden während der Wiedergabe von...
Beim Einbetten von YouTube-Videos über die IFrame-API oder direkte Einbettungs-URLs zeigt der Player gelegentlich die Meldung „Fehler 153: Video-Player-Konfiguration“ an Fehler“, anstatt das Video zu...