Without modifying:
- the
Media_player_audioandMedia_player_videointerfaces - nor the
Media_player_mp4class
add an adapter that allows the music player to play the sound of an mp4 file.
| import os | |
| class Music_player: | |
| def load_engines(self): | |
| self.engines = {'.mp3': Media_player_mp3(), '.wav': Media_player_wav()} | |
| def play(self, filename): | |
| _, extension = os.path.splitext(filename) | |
| self.engines[extension].play(filename) | |
| class Media_player_audio: | |
| def play(self, file_name, audio_format): | |
| print("music from {} as {}".format(file_name, audio_format)) | |
| class Media_player_mp3(Media_player_audio): | |
| def play(self, file_name): | |
| super().play(file_name, "mp3") | |
| class Media_player_wav(Media_player_audio): | |
| def play(self, file_name): | |
| super().play(file_name, "wav") | |
| class Media_player_video: | |
| def play(self, file_name, video_format): | |
| print("video from {} as {}".format(file_name, video_format)) | |
| def play_audio(self, file_name, audio_format): | |
| print("music from {} as {}".format(file_name, audio_format)) | |
| class Media_player_mp4(Media_player_video): | |
| def play_audio(self, file_name): | |
| super().play_audio(file_name, "mp4") | |
| def main(): | |
| mp = Music_player() | |
| mp.load_engines() | |
| mp.play('baubau.mp3') | |
| mp.play('baubau.wav') | |
| if __name__ == "__main__": | |
| main() |