Skip to content

Commit 270d8ae

Browse files
authored
Merge pull request #310 from exislow/309-file-extension
✨ Extended file extension detection to properly detect M4A files. Fixes #309
2 parents b17c8b2 + e848a5d commit 270d8ae

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

tests/test_media.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,3 +550,14 @@ def validate_stream_manifest(manifest, is_hi_res_lossless: bool = False):
550550
def test_reset_session_quality(session):
551551
# HACK: Make sure to reset audio quality to default value for remaining tests
552552
session.audio_quality = Quality.default
553+
554+
555+
def test_track_extension(session):
556+
track = session.track(65119559)
557+
# Set session as MPD/DASH type (i.e. HI_RES_LOSSLESS Quality).
558+
session.audio_quality = Quality.low_320k
559+
# Attempt to get stream and manifest
560+
stream = track.get_stream()
561+
manifest = stream.get_stream_manifest()
562+
# Assert extension
563+
assert manifest.file_extension == AudioExtensions.M4A

tidalapi/media.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,11 @@ def get_file_extension(stream_url: str, stream_codec: Optional[str] = None) -> s
620620
if AudioExtensions.FLAC in stream_url:
621621
# If the file extension within the URL is '*.flac', this is simply a FLAC file.
622622
result: str = AudioExtensions.FLAC
623-
elif AudioExtensions.MP4 in stream_url:
623+
elif (
624+
AudioExtensions.MP4 in stream_url
625+
or AudioExtensions.M4A in stream_url
626+
or stream_codec == Codec.MP4A
627+
):
624628
# MPEG-4 is simply a container format for different audio / video encoded lines, like FLAC, AAC, M4A etc.
625629
# '*.m4a' is usually used as file extension, if the container contains only audio lines
626630
# See https://en.wikipedia.org/wiki/MP4_file_format

0 commit comments

Comments
 (0)