Coverage for src/blob_dict/blob/video.py: 0%
21 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-29 08:37 -0700
« prev ^ index » next coverage.py v7.7.1, created at 2025-03-29 08:37 -0700
1from __future__ import annotations
3from pathlib import Path
4from typing import override
5from uuid import uuid4
7from moviepy.editor import VideoClip, VideoFileClip
9from . import BytesBlob
12class VideoBlob(BytesBlob):
13 def __init__(self, blob: bytes | VideoClip) -> None:
14 if isinstance(blob, VideoClip):
15 temp_file: Path = Path(f"{uuid4()}.mp4")
16 blob.write_videofile(temp_file)
17 blob.close()
19 blob = temp_file.read_bytes()
20 temp_file.unlink()
22 super().__init__(blob)
24 def as_video(self, filename: str) -> VideoFileClip:
25 Path(filename).write_bytes(self._blob_bytes)
27 return VideoFileClip(filename)
29 @override
30 def __repr__(self) -> str:
31 return f"{self.__class__.__name__}(...)"