From ec2ecfe7b4f954229a813e27c2a1b913c77743c0 Mon Sep 17 00:00:00 2001 From: Andy Date: Sat, 7 Mar 2026 13:01:36 -0700 Subject: [PATCH] fix(ism): prevent duplicate track IDs for audio tracks with same lang/codec/bitrate Include StreamIndex Name and Url attributes in the track ID hash to disambiguate tracks that share the same codec, language, bitrate, and QualityLevel index. --- unshackle/core/manifests/ism.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/unshackle/core/manifests/ism.py b/unshackle/core/manifests/ism.py index b047f5e..816e2bd 100644 --- a/unshackle/core/manifests/ism.py +++ b/unshackle/core/manifests/ism.py @@ -145,7 +145,14 @@ class ISM: fragment_time += duration_frag track_id = hashlib.md5( - f"{codec}-{track_lang}-{ql.get('Bitrate') or 0}-{ql.get('Index') or 0}".encode() + "{codec}-{lang}-{bitrate}-{index}-{name}-{url}".format( + codec=codec, + lang=track_lang, + bitrate=ql.get("Bitrate") or 0, + index=ql.get("Index") or 0, + name=stream_index.get("Name") or "", + url=stream_index.get("Url") or "", + ).encode() ).hexdigest() data = {