feat: minor chanes to highlight

This commit is contained in:
Alexander 2025-05-22 13:15:18 +02:00
parent f6f8e3ca8f
commit 83041a44d1
3 changed files with 774 additions and 677 deletions

Binary file not shown.

1436
result.csv

File diff suppressed because it is too large Load Diff

View File

@ -78,10 +78,20 @@ class VideoHighlighter:
df["start"] = df["start"].apply(self._to_seconds) df["start"] = df["start"].apply(self._to_seconds)
df["end"] = df["end"].apply(self._to_seconds) df["end"] = df["end"].apply(self._to_seconds)
# Добавить проверку валидности
invalid = df[df["start"] >= df["end"]]
if not invalid.empty:
raise ValueError("Найдены некорректные интервалы: start >= end")
raw = list(df.sort_values("start")[ raw = list(df.sort_values("start")[
["start", "end"]].itertuples(index=False, name=None)) ["start", "end"]].itertuples(index=False, name=None))
merged = self._merge_intervals(raw) merged = self._merge_intervals(raw)
return self._add_padding(merged, total_dur=self._get_duration())
# Получить длительность один раз
with VideoFileClip(str(self.video)) as v:
total_dur = v.duration
return self._add_padding(merged, total_dur=total_dur)
def _merge_intervals(self, intervals: List[Tuple[float, float]]) -> List[Tuple[float, float]]: def _merge_intervals(self, intervals: List[Tuple[float, float]]) -> List[Tuple[float, float]]:
if not intervals: if not intervals:
@ -111,7 +121,8 @@ class VideoHighlighter:
fname = self.out_dir / f"clip_{idx:02d}.mp4" fname = self.out_dir / f"clip_{idx:02d}.mp4"
self._save_clip(clip, fname) self._save_clip(clip, fname)
clip.close() clip.close()
clips.append(clip) else:
clips.append(clip) # Добавляем только если concat=True
return clips return clips
def _save_clip(self, clip: VideoFileClip, fname: Path) -> None: def _save_clip(self, clip: VideoFileClip, fname: Path) -> None: