From 767af7cf549e92d3a040d3d96247d03d68bca3b2 Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Thu, 14 Nov 2024 11:13:10 +0100 Subject: [PATCH] Fixed wrong determination of file extensions. Fixes tamland/python-tidal#304 --- tidalapi/media.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tidalapi/media.py b/tidalapi/media.py index 1aaadad..4b9ceda 100644 --- a/tidalapi/media.py +++ b/tidalapi/media.py @@ -618,21 +618,19 @@ def get_mimetype(stream_codec, stream_url: Optional[str] = None) -> str: @staticmethod def get_file_extension(stream_url: str, stream_codec: Optional[str] = None) -> str: if AudioExtensions.FLAC in stream_url: + # If the file extension within the URL is '*.flac', this is simply a FLAC file. result: str = AudioExtensions.FLAC elif AudioExtensions.MP4 in stream_url: - if stream_codec: - if Codec.AC4 is stream_codec: - result: str = AudioExtensions.MP4 - elif Codec.FLAC is stream_codec: - result: str = AudioExtensions.FLAC - else: - result: str = AudioExtensions.M4A - else: - result: str = AudioExtensions.MP4 + # MPEG-4 is simply a container format for different audio / video encoded lines, like FLAC, AAC, M4A etc. + # '*.m4a' is usually used as file extension, if the container contains only audio lines + # See https://en.wikipedia.org/wiki/MP4_file_format + result: str = AudioExtensions.M4A elif VideoExtensions.TS in stream_url: + # Video are streamed as '*.ts' files by TIDAL. result: str = VideoExtensions.TS else: - result: str = AudioExtensions.M4A + # If everything fails it might be an '*.mp4' file + result: str = AudioExtensions.MP4 return result