如何解决YouTube播放列表标题仅对应字幕单个字符的问题
解决YouTube播放列表标题与字幕配对异常问题
问题出在你用单个变量存储字幕,每次循环都会覆盖之前的内容,最终只剩最后一个视频的字幕字符串。当你用zip(titles, get_key_text)时,字符串会被当作字符序列迭代,所以每个标题会对应这个字符串里的单个字符。
修正思路
不要用单个变量存储字幕,改用列表来保存每个视频的完整字幕内容,确保标题列表和字幕列表的长度一一对应,这样zip就能正确配对每个标题和它的完整字幕。
修正后的代码示例
# 初始化两个列表分别存储标题和字幕 video_titles = [] video_subtitles = [] # 遍历播放列表中的每个视频ID for video_id in your_video_ids_list: # 替换成你获取的播放列表视频ID列表 # 1. 通过YouTube Data API获取视频标题 video_details = youtube.videos().list(part='snippet', id=video_id).execute() title = video_details['items'][0]['snippet']['title'] video_titles.append(title) # 2. 通过YouTube Transcript API获取并拼接完整字幕 try: transcript_segments = YouTubeTranscriptApi.get_transcript(video_id) # 将字幕片段拼接成完整文本 full_subtitle = " ".join([seg['text'] for seg in transcript_segments]) video_subtitles.append(full_subtitle) except Exception as e: # 处理无字幕、字幕不可用的情况 video_subtitles.append(f"该视频无可用字幕: {str(e)}") # 配对并输出标题与对应完整字幕 for title, subtitle in zip(video_titles, video_subtitles): print(f"【标题】: {title}") print(f"【字幕】: {subtitle}\n")
关键修改点
- 用
video_subtitles列表替代单个变量,每次循环把当前视频的完整字幕追加到列表,保留所有视频的字幕内容。 - 确保
video_titles和video_subtitles的元素数量一致(每个视频对应一个标题和一个字幕条目),zip时会按顺序一一配对。 - 增加异常捕获,处理没有字幕的视频,避免程序中断。
内容的提问来源于stack exchange,提问作者José Angel Bernal
相关产品推荐
相关产品推荐

