我有一个 Django Web 应用程序。 该代码在本地主机上运行得很好,但当我在云(DigitalOcean)应用程序平台上运行它时停止工作。
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
异常,表示
该视频禁用文字记录。
但我确实知道视频有文字记录,并且如上所述,代码在本地主机上运行得很好。
花了两天时间并尝试了几乎所有我能想到的方法后,我仍然没有解决这个神秘的问题。有谁经历过同样的事情并设法以某种方式解决它吗?
此错误是因为您没有使用代理来处理您的请求,当您从服务器发出请求时,您的 IP 地址可能会被 YouTube 阻止。 您可以尝试在 youtube-transcript-api 配置中添加代理并告知我们。