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

1from pathlib import Path 

2from tempfile import NamedTemporaryFile, gettempdir 

3 

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 

8 

9 

10def read_from_clip( 

11 clip: AudioClip | VideoClip, 

12 suffix: str, 

13 *, 

14 delete_temp_clip_file: bool = False, 

15) -> bytes: 

16 data: bytes 

17 

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) 

25 

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) 

37 

38 f.close() 

39 

40 data = Path(f.name).read_bytes() 

41 

42 if ( 

43 delete_temp_clip_file 

44 and clip_file 

45 and clip_file.is_relative_to(gettempdir()) 

46 ): 

47 clip_file.unlink() 

48 

49 return data