Skip to content

Commit 6e3a4e6

Browse files
authored
Merge pull request #305 from exislow/304-file-extension
Fixed wrong determination of file extensions. Fixes tamland/python-ti…
2 parents 1720a0b + 2a8fc9d commit 6e3a4e6

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

tests/test_media.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ def validate_stream_manifest(manifest, is_hi_res_lossless: bool = False):
539539
assert manifest.dash_info is not None
540540
assert manifest.encryption_key is None
541541
assert manifest.encryption_type == "NONE"
542-
assert manifest.file_extension == AudioExtensions.FLAC
542+
assert manifest.file_extension == AudioExtensions.M4A
543543
assert manifest.is_encrypted == False
544544
assert manifest.manifest_mime_type == ManifestMimeType.MPD
545545
assert manifest.mime_type == MimeType.audio_mp4

tidalapi/media.py

+8-10
Original file line numberDiff line numberDiff line change
@@ -618,21 +618,19 @@ def get_mimetype(stream_codec, stream_url: Optional[str] = None) -> str:
618618
@staticmethod
619619
def get_file_extension(stream_url: str, stream_codec: Optional[str] = None) -> str:
620620
if AudioExtensions.FLAC in stream_url:
621+
# If the file extension within the URL is '*.flac', this is simply a FLAC file.
621622
result: str = AudioExtensions.FLAC
622623
elif AudioExtensions.MP4 in stream_url:
623-
if stream_codec:
624-
if Codec.AC4 is stream_codec:
625-
result: str = AudioExtensions.MP4
626-
elif Codec.FLAC is stream_codec:
627-
result: str = AudioExtensions.FLAC
628-
else:
629-
result: str = AudioExtensions.M4A
630-
else:
631-
result: str = AudioExtensions.MP4
624+
# MPEG-4 is simply a container format for different audio / video encoded lines, like FLAC, AAC, M4A etc.
625+
# '*.m4a' is usually used as file extension, if the container contains only audio lines
626+
# See https://en.wikipedia.org/wiki/MP4_file_format
627+
result: str = AudioExtensions.M4A
632628
elif VideoExtensions.TS in stream_url:
629+
# Video are streamed as '*.ts' files by TIDAL.
633630
result: str = VideoExtensions.TS
634631
else:
635-
result: str = AudioExtensions.M4A
632+
# If everything fails it might be an '*.mp4' file
633+
result: str = AudioExtensions.MP4
636634

637635
return result
638636

0 commit comments

Comments
 (0)