Pytube 15.0.0无法获取YouTube字幕问题求助
解决Pytube 15.0.0获取YouTube字幕为空的问题
问题原因
Pytube 15.0.0版本对字幕相关API做了调整,原有的yt.captions字典不再被填充,改用caption_tracks属性存储字幕轨道列表,直接访问yt.captions['a.en']会触发KeyError。
解决方案
改用caption_tracks属性获取字幕轨道,通过语言代码匹配目标字幕(自动生成字幕的代码为a.en),再调用对应的方法生成SRT格式内容。
修正后的示例代码
import pytube yt = pytube.YouTube('https://www.youtube.com/watch?v=pvDOnqGbghU') # 获取所有可用字幕轨道 caption_tracks = yt.caption_tracks # 查找目标语言的字幕(自动生成英文用'a.en',手动字幕用'en') target_caption = None for track in caption_tracks: if track.code == 'a.en': target_caption = track break if target_caption: # 生成SRT格式字幕 srt_captions = target_caption.generate_srt_captions() print(srt_captions) else: print("未找到目标语言的字幕轨道,请确认视频是否提供该语言字幕或自动生成字幕")
补充说明
- 自动生成的字幕语言代码格式为
a.xx(如a.en对应英文自动字幕),手动上传的字幕代码为xx(如en对应英文手动字幕) - 若
caption_tracks为空,说明该视频没有任何可用字幕,无法提取
内容的提问来源于stack exchange,提问作者Alexander Bormotov
相关产品推荐
相关产品推荐

