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

1from __future__ import annotations 

2 

3from pathlib import Path 

4from typing import override 

5from uuid import uuid4 

6 

7from moviepy.editor import VideoClip, VideoFileClip 

8 

9from . import BytesBlob 

10 

11 

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() 

18 

19 blob = temp_file.read_bytes() 

20 temp_file.unlink() 

21 

22 super().__init__(blob) 

23 

24 def as_video(self, filename: str) -> VideoFileClip: 

25 Path(filename).write_bytes(self._blob_bytes) 

26 

27 return VideoFileClip(filename) 

28 

29 @override 

30 def __repr__(self) -> str: 

31 return f"{self.__class__.__name__}(...)"