API транскриптов Youtube не работает на сервере

У меня есть веб-приложение Django. Этот код прекрасно работает на localhost, но перестает работать, когда я запускаю его на облачной (DigitalOcean) платформе App Platform.

from youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, NoTranscriptFound, VideoUnavailable

def transcribe(video_url):
    video_id = video_url.split("v=")[-1]
    logger.debug("Extracted video ID: %s", video_id)

    try:
        transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
        transcript = None
        for transcript_info in transcript_list:
            try:
                transcript = transcript_info.fetch()
                break
            except Exception as e:
                logger.warning("Error fetching transcript: %s", e, exc_info=True)
                continue
        if transcript is None:
            logger.error("No transcripts available for this video.")
            return "No transcripts available for this video."
    except TranscriptsDisabled as e:
        logger.error("Transcripts are disabled for this video. %s", e, exc_info=True)
        return "Transcripts are disabled for this video."
    except NoTranscriptFound:
        logger.error("No transcript found for this video.")
        return "No transcript found for this video."
    except VideoUnavailable:
        logger.error("Video is unavailable.")
        return "Video is unavailable."
    except Exception as e:
        logger.error("Error in fetching transcript: %s", e, exc_info=True)
        return "Error in fetching transcript."
    
    # Concatenate all text from the transcript into a single string
    transcription_text = ' '.join([item['text'] for item in transcript])
    logger.debug("Transcription text (first 50 characters): %s", transcription_text[:50])

    return transcription_text

Часть, которая выбрасывает исключение, - это строка transcript_list = YouTubeTranscriptApi.list_transcripts(video_id).

И он выбрасывает TranscriptsDisabled исключение, говоря, что

Для этого видео транскрипты отключены.

Но я знаю, что в видео есть транскрипты, и код прекрасно работает на localhost, как уже говорилось.

После того, как я потратил 2 дня и попробовал буквально все, что мог придумать, у меня до сих пор нет решения этой загадочной проблемы. Кто-нибудь сталкивался с подобным и смог решить ее каким-то образом?

Эта ошибка связана с тем, что вы не используете прокси для своих запросов, ваш ip-адрес может быть заблокирован youtube, когда вы делаете запросы с сервера. Вы можете попробовать добавить прокси в конфигурацию youtube-transcript-api и сообщить нам.

Вернуться на верх