Source code for lingua_loop.integrations.youtube.wrapper

"""Wrapper around YouTube Transcript API."""

from youtube_transcript_api import FetchedTranscript
from youtube_transcript_api import NoTranscriptFound
from youtube_transcript_api import TranscriptList
from youtube_transcript_api import YouTubeTranscriptApi

from lingua_loop.integrations.youtube.types import SupportedLanguageCodes

ytt_api = YouTubeTranscriptApi()


[docs] def fetch_transcript( video_id: str, language_code: SupportedLanguageCodes ) -> FetchedTranscript: """Fetch a transcript for a video in a specific language.""" return ytt_api.fetch(video_id=video_id, languages=[language_code])
[docs] def list_transcripts(video_id: str) -> TranscriptList: """List all available transcripts for a video.""" return ytt_api.list(video_id)
[docs] def video_has_transcript_in_language( transcript_list: TranscriptList, language_code: SupportedLanguageCodes ) -> bool: """Check if a video has a transcript in the specified language.""" transcript_found = True try: transcript = transcript_list.find_transcript( language_codes=[language_code] ) except NoTranscriptFound: transcript_found = False return transcript_found