MCPcopy Create free account
hub / github.com/Cicada000/VV / process_frames

Method process_frames

CutSubtitle.py:63–112  ·  view source on GitHub ↗

处理文件夹中的所有帧并生成字幕

(self, input_folder, output_folder)

Source from the content-addressed store, hash-verified

61 return text.strip() if text else None
62
63 def process_frames(self, input_folder, output_folder):
64 """处理文件夹中的所有帧并生成字幕"""
65 if not os.path.exists(output_folder):
66 os.makedirs(output_folder)
67
68 for filename in sorted(os.listdir(input_folder)):
69 if not filename.endswith(('.jpg', '.png')):
70 continue
71
72 match = re.match(self.pattern, filename)
73 if not match:
74 continue
75
76 episode_num, title, timestamp, similarity = match.groups()
77 video_title = f"{episode_num}{title}"
78 print(f"处理文件: {filename}")
79
80 img_path = os.path.join(input_folder, filename)
81 text = self.process_image(img_path)
82
83 if not text:
84 continue
85
86 print(f"识别到文本: {text}")
87
88 # 检查重复
89 subtitles = self.subtitles_dict[video_title]
90 if subtitles and subtitles[-1]["text"] == text:
91 continue
92
93 # 添加字幕
94 self.subtitles_dict[video_title].append({
95 "timestamp": timestamp,
96 "similarity": float(similarity),
97 "text": text
98 })
99
100 # 保存字幕文件
101 for video_title, subtitles in self.subtitles_dict.items():
102 sorted_subtitles = sorted(subtitles, key=lambda x: self.parse_timestamp(x["timestamp"]))
103 output_json = os.path.join(output_folder, f"{video_title}.json")
104
105 try:
106 with open(output_json, 'w', encoding='utf-8') as f:
107 json.dump(sorted_subtitles, f, ensure_ascii=False, indent=4)
108 print(f"成功保存 {video_title} 的字幕")
109 except Exception as e:
110 print(f"保存文件时出错: {str(e)}")
111
112 print("\n处理完成")

Callers 1

process_videos_in_folderFunction · 0.95

Calls 2

process_imageMethod · 0.95
parse_timestampMethod · 0.95

Tested by

no test coverage detected