无法存储 YouTube 视频的字幕

问题描述

我想在 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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...