问题描述
我想在 Pandas 的专栏中存储 YouTube 视频的副标题。但是给定的代码没有在熊猫数据帧的单元格中存储任何数据。
df
video_link
https://www.youtube.com/watch?v=wKpcwdYVpKA
https://www.youtube.com/watch?v=lg0_oQYK5WY
https://www.youtube.com/watch?v=LA99TKMctJY
df['subtitle_english']=''
for i,row in df.iterrows():
try:
myVideo = YouTube(row['video_link'])
caption = myVideo.captions.get_by_language_code('en')
df.at[i,'subtitle_english']=caption.generate_srt_captions()
except:
pass
上面的代码没有存储任何字幕,即使它存在。有没有办法存储字幕?
解决方法
提供的视频没有英文字幕。您将通过使用语言代码 'a.pt'
看到您的代码有效(如果您缩进 try/except 块),这将加载第三个视频的葡萄牙语自动生成的字幕。在任何情况下,在 Pandas 中迭代每一行的效率都非常低,因此您可以将其包装在一个函数中并将 video_link
列应用于该函数。同样,只有当视频确实包含英文字幕时,您才会得到结果。
def get_subtitles(url):
myVideo = YouTube(url)
caption = myVideo.captions.get_by_language_code('en') # use 'a.en' for auto-generated subtitles
return caption.generate_srt_captions() if caption else None
df['subtitle_english'] = df['video_link'].apply(get_subtitles)