From b7ab4b83e9ab6b27688ec12a687b13c1b2445af6 Mon Sep 17 00:00:00 2001
From: stabbedbybrick <125766685+stabbedbybrick@users.noreply.github.com>
Date: Sun, 8 Dec 2024 22:27:58 +0100
Subject: [PATCH] fix(ALL4): Fix missing subtitles

---
 services/ALL4/__init__.py | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/services/ALL4/__init__.py b/services/ALL4/__init__.py
index 4483db4..6baeb8e 100644
--- a/services/ALL4/__init__.py
+++ b/services/ALL4/__init__.py
@@ -243,9 +243,23 @@ class ALL4(Service):
         tracks = DASH.from_url(self.manifest, self.session).to_tracks(title.language)
         tracks.videos[0].data = data
 
-        if subtitle is None:
+        # manifest subtitles are sometimes empty even if they exist
+        # so we clear them and add the subtitles manually
+        tracks.subtitles.clear()
+        if subtitle is not None:
+            tracks.add(
+                Subtitle(
+                    id_=hashlib.md5(subtitle.encode()).hexdigest()[0:6],
+                    url=subtitle,
+                    codec=Subtitle.Codec.from_mime(subtitle[-3:]),
+                    language=title.language,
+                    is_original_lang=True,
+                    forced=False,
+                    sdh=False,
+                )
+            )
+        else:
             self.log.warning("- Subtitles are either missing or empty")
-            tracks.subtitles = [track for track in tracks.subtitles if subtitle is not None]
 
         return tracks