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 и сообщить нам.