Skip to content

Commit 0d3b4b7

Browse files
authored
Add files via upload
1 parent a8bd1b2 commit 0d3b4b7

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

structural_patterns/facade.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from dataclasses import dataclass
2+
3+
4+
@dataclass
5+
class VideoFile:
6+
filename: str
7+
8+
9+
class OggCompressionCode:
10+
pass
11+
12+
13+
class MPEG4CompressionCode:
14+
pass
15+
16+
17+
class CodecFactory:
18+
def extract(self, video_file):
19+
print(f'Extracted codec to {video_file}')
20+
21+
return 'codec'
22+
23+
24+
class BitrateReader:
25+
def read(self, filename, source_codec):
26+
print(f'Reading bitrate {filename}')
27+
28+
return 'Read buffer'
29+
30+
def convert(self, buffer, destination_codec):
31+
print(f'Converting bitrate')
32+
33+
return 'converted buffer'
34+
35+
class AudioMixer:
36+
def fix(self, pre_result):
37+
print('Mix the audio with the video - Final result')
38+
39+
40+
# Facade class
41+
class VideoConverter:
42+
def convert(self, filename, format):
43+
video_file = VideoFile(filename)
44+
source_codec = CodecFactory().extract(video_file)
45+
46+
if format == 'mp4':
47+
destination_codec = MPEG4CompressionCode()
48+
else:
49+
destination_codec = OggCompressionCode()
50+
51+
bitrate_reader = BitrateReader()
52+
buffer = bitrate_reader.read(filename, source_codec)
53+
pre_result = bitrate_reader.convert(buffer, destination_codec)
54+
result = AudioMixer().fix(pre_result)
55+
56+
return result
57+
58+
59+
if __name__ == '__main__':
60+
convertor = VideoConverter()
61+
mp4_file = convertor.convert('seiya.ogg', 'mp4')

0 commit comments

Comments
 (0)