Coverage for src/blob_dict/blob/audio_video.py: 0%
22 statements
« prev ^ index » next coverage.py v7.8.1, created at 2025-06-04 23:47 -0700
« prev ^ index » next coverage.py v7.8.1, created at 2025-06-04 23:47 -0700
1from pathlib import Path
2from tempfile import NamedTemporaryFile, gettempdir
4from moviepy.audio.AudioClip import AudioClip
5from moviepy.audio.io.AudioFileClip import AudioFileClip
6from moviepy.video.io.VideoFileClip import VideoFileClip
7from moviepy.video.VideoClip import VideoClip
10def read_from_clip(
11 clip: AudioClip | VideoClip,
12 suffix: str,
13 *,
14 delete_temp_clip_file: bool = False,
15) -> bytes:
16 data: bytes
18 clip_file: Path | None = None
19 if (
20 isinstance(clip, (AudioFileClip, VideoFileClip))
21 # Need to check whether `filename` is `str` as it can also be sound array for Audio clip
22 and isinstance(clip.filename, str)
23 ):
24 clip_file = Path(clip.filename)
26 if (
27 clip_file
28 and clip_file.suffix.lower() == suffix
29 ):
30 data = clip_file.read_bytes()
31 else:
32 with NamedTemporaryFile(suffix=suffix, delete_on_close=False) as f:
33 if isinstance(clip, AudioClip):
34 clip.write_audiofile(f.name)
35 elif isinstance(clip, VideoClip):
36 clip.write_videofile(f.name)
38 f.close()
40 data = Path(f.name).read_bytes()
42 if (
43 delete_temp_clip_file
44 and clip_file
45 and clip_file.is_relative_to(gettempdir())
46 ):
47 clip_file.unlink()
49 return data