From 18c4124afa7e7c09715ac4c0719423470f7f9df7 Mon Sep 17 00:00:00 2001
From: "mate.kavalecz" <mate.kavalecz@midori-global.com>
Date: Sun, 4 May 2025 02:15:27 +0200
Subject: [PATCH 1/3] Add maximum days in next episodes configuration

---
 jellyfin_kodi/entrypoint/default.py           | 20 ++++++++++++++++---
 .../resource.language.en_gb/strings.po        |  4 ++++
 .../resource.language.en_us/strings.po        |  4 ++++
 .../resource.language.hu_hu/strings.po        |  4 ++++
 resources/settings.xml                        |  1 +
 5 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/jellyfin_kodi/entrypoint/default.py b/jellyfin_kodi/entrypoint/default.py
index 91a354e1..aa897bf4 100644
--- a/jellyfin_kodi/entrypoint/default.py
+++ b/jellyfin_kodi/entrypoint/default.py
@@ -920,8 +920,21 @@ def get_next_episodes(item_id, limit):
         if not library:
             return
 
-    result = JSONRPC("VideoLibrary.GetTVShows").execute(
-        {
+    maxDaysInNextEpisodes = settings('maxDaysInNextEpisodes')
+    if maxDaysInNextEpisodes != 0:
+        params = {
+            "sort": {"order": "descending", "method": "lastplayed"},
+            "filter": {
+                "and": [
+                    {"operator": "true", "field": "inprogress", "value": ""},
+                    {"operator": "is", "field": "tag", "value": "%s" % library},
+                    {"operator": "inthelast", "field": "lastplayed", "value": "%s days" % maxDaysInNextEpisodes},
+                ]
+            },
+            "properties": ["title", "studio", "mpaa", "file", "art"],
+        }
+    else:
+        params = {
             "sort": {"order": "descending", "method": "lastplayed"},
             "filter": {
                 "and": [
@@ -931,7 +944,8 @@ def get_next_episodes(item_id, limit):
             },
             "properties": ["title", "studio", "mpaa", "file", "art"],
         }
-    )
+
+    result = JSONRPC("VideoLibrary.GetTVShows").execute(params)
 
     try:
         items = result["result"]["tvshows"]
diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po
index 57e92fd9..67314e07 100644
--- a/resources/language/resource.language.en_gb/strings.po
+++ b/resources/language/resource.language.en_gb/strings.po
@@ -357,6 +357,10 @@ msgctxt "#30537"
 msgid "Transcode Hi10P"
 msgstr "Transcode Hi10P"
 
+msgctxt "#30538"
+msgid "Max days in next episodes"
+msgstr "Max days in next episodes
+
 msgctxt "#30539"
 msgid "Login"
 msgstr "Login"
diff --git a/resources/language/resource.language.en_us/strings.po b/resources/language/resource.language.en_us/strings.po
index fe981254..92dd3cb9 100644
--- a/resources/language/resource.language.en_us/strings.po
+++ b/resources/language/resource.language.en_us/strings.po
@@ -321,6 +321,10 @@ msgctxt "#30537"
 msgid "Transcode Hi10P"
 msgstr "Transcode Hi10P"
 
+msgctxt "#30538"
+msgid "Max days in next episodes"
+msgstr "Max days in next episodes"
+
 msgctxt "#30539"
 msgid "Login"
 msgstr "Login"
diff --git a/resources/language/resource.language.hu_hu/strings.po b/resources/language/resource.language.hu_hu/strings.po
index f95c4483..86b3bf78 100644
--- a/resources/language/resource.language.hu_hu/strings.po
+++ b/resources/language/resource.language.hu_hu/strings.po
@@ -429,6 +429,10 @@ msgctxt "#30537"
 msgid "Transcode Hi10P"
 msgstr "Hi10P átkódolása"
 
+msgctxt "#30538"
+msgid "Max days in next episodes"
+msgstr "Maximális napok száma a következő epizódoknál"
+
 msgctxt "#30536"
 msgid "Allow the screensaver during syncs"
 msgstr "Képernyőkímélő engedélyezése szinkronizálás közben"
diff --git a/resources/settings.xml b/resources/settings.xml
index 91bc5f83..09cbad12 100644
--- a/resources/settings.xml
+++ b/resources/settings.xml
@@ -96,6 +96,7 @@
 
 	<category label="33109">
 		<!-- Plugin -->
+		<setting id="maxDaysInNextEpisodes" label="30538" type="slider" default="365" range="0, 1, 1000" option="int" />
 		<setting id="ignoreSpecialsNextEpisodes" type="bool" label="30527" default="false" />
 		<setting id="getCast" type="bool" label="33124" default="false" />
 		<setting id="remoteControl" type="bool" label="33125" default="true" />

From 937aff24f3e8a5c32997216a7b7d4ba01786e5cd Mon Sep 17 00:00:00 2001
From: "mate.kavalecz" <mate.kavalecz@midori-global.com>
Date: Sun, 4 May 2025 02:28:58 +0200
Subject: [PATCH 2/3] Refactor to meet code style

---
 jellyfin_kodi/entrypoint/default.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/jellyfin_kodi/entrypoint/default.py b/jellyfin_kodi/entrypoint/default.py
index aa897bf4..e6dedf42 100644
--- a/jellyfin_kodi/entrypoint/default.py
+++ b/jellyfin_kodi/entrypoint/default.py
@@ -920,15 +920,15 @@ def get_next_episodes(item_id, limit):
         if not library:
             return
 
-    maxDaysInNextEpisodes = settings('maxDaysInNextEpisodes')
-    if maxDaysInNextEpisodes != 0:
+    max_days = settings('maxDaysInNextEpisodes')
+    if max_days != 0:
         params = {
             "sort": {"order": "descending", "method": "lastplayed"},
             "filter": {
                 "and": [
                     {"operator": "true", "field": "inprogress", "value": ""},
                     {"operator": "is", "field": "tag", "value": "%s" % library},
-                    {"operator": "inthelast", "field": "lastplayed", "value": "%s days" % maxDaysInNextEpisodes},
+                    {"operator": "inthelast", "field": "lastplayed", "value": "%s days" % max_days},
                 ]
             },
             "properties": ["title", "studio", "mpaa", "file", "art"],

From a32aff25e2145e07b10561e1c5637532020cbdaa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= <oddstr13@openshell.no>
Date: Mon, 5 May 2025 22:07:46 +0000
Subject: [PATCH 3/3] Reduce duplication Adjust settings defaults Remove
 translations (use weblate, en_gb is source) Format with black

---
 jellyfin_kodi/entrypoint/default.py           | 41 ++++++++-----------
 .../resource.language.en_us/strings.po        |  4 --
 .../resource.language.hu_hu/strings.po        |  4 --
 resources/settings.xml                        |  2 +-
 4 files changed, 19 insertions(+), 32 deletions(-)

diff --git a/jellyfin_kodi/entrypoint/default.py b/jellyfin_kodi/entrypoint/default.py
index e6dedf42..bf041dfc 100644
--- a/jellyfin_kodi/entrypoint/default.py
+++ b/jellyfin_kodi/entrypoint/default.py
@@ -920,30 +920,25 @@ def get_next_episodes(item_id, limit):
         if not library:
             return
 
-    max_days = settings('maxDaysInNextEpisodes')
+    max_days = settings("maxDaysInNextEpisodes")
+    params = {
+        "sort": {"order": "descending", "method": "lastplayed"},
+        "filter": {
+            "and": [
+                {"operator": "true", "field": "inprogress", "value": ""},
+                {"operator": "is", "field": "tag", "value": "%s" % library},
+            ]
+        },
+        "properties": ["title", "studio", "mpaa", "file", "art"],
+    }
     if max_days != 0:
-        params = {
-            "sort": {"order": "descending", "method": "lastplayed"},
-            "filter": {
-                "and": [
-                    {"operator": "true", "field": "inprogress", "value": ""},
-                    {"operator": "is", "field": "tag", "value": "%s" % library},
-                    {"operator": "inthelast", "field": "lastplayed", "value": "%s days" % max_days},
-                ]
-            },
-            "properties": ["title", "studio", "mpaa", "file", "art"],
-        }
-    else:
-        params = {
-            "sort": {"order": "descending", "method": "lastplayed"},
-            "filter": {
-                "and": [
-                    {"operator": "true", "field": "inprogress", "value": ""},
-                    {"operator": "is", "field": "tag", "value": "%s" % library},
-                ]
-            },
-            "properties": ["title", "studio", "mpaa", "file", "art"],
-        }
+        params["filter"]["and"].append(
+            {
+                "operator": "inthelast",
+                "field": "lastplayed",
+                "value": "%s days" % max_days,
+            }
+        )
 
     result = JSONRPC("VideoLibrary.GetTVShows").execute(params)
 
diff --git a/resources/language/resource.language.en_us/strings.po b/resources/language/resource.language.en_us/strings.po
index 92dd3cb9..fe981254 100644
--- a/resources/language/resource.language.en_us/strings.po
+++ b/resources/language/resource.language.en_us/strings.po
@@ -321,10 +321,6 @@ msgctxt "#30537"
 msgid "Transcode Hi10P"
 msgstr "Transcode Hi10P"
 
-msgctxt "#30538"
-msgid "Max days in next episodes"
-msgstr "Max days in next episodes"
-
 msgctxt "#30539"
 msgid "Login"
 msgstr "Login"
diff --git a/resources/language/resource.language.hu_hu/strings.po b/resources/language/resource.language.hu_hu/strings.po
index 86b3bf78..f95c4483 100644
--- a/resources/language/resource.language.hu_hu/strings.po
+++ b/resources/language/resource.language.hu_hu/strings.po
@@ -429,10 +429,6 @@ msgctxt "#30537"
 msgid "Transcode Hi10P"
 msgstr "Hi10P átkódolása"
 
-msgctxt "#30538"
-msgid "Max days in next episodes"
-msgstr "Maximális napok száma a következő epizódoknál"
-
 msgctxt "#30536"
 msgid "Allow the screensaver during syncs"
 msgstr "Képernyőkímélő engedélyezése szinkronizálás közben"
diff --git a/resources/settings.xml b/resources/settings.xml
index 09cbad12..5996de35 100644
--- a/resources/settings.xml
+++ b/resources/settings.xml
@@ -96,7 +96,7 @@
 
 	<category label="33109">
 		<!-- Plugin -->
-		<setting id="maxDaysInNextEpisodes" label="30538" type="slider" default="365" range="0, 1, 1000" option="int" />
+		<setting id="maxDaysInNextEpisodes" label="30538" type="slider" default="366" range="0, 1, 732" option="int" />
 		<setting id="ignoreSpecialsNextEpisodes" type="bool" label="30527" default="false" />
 		<setting id="getCast" type="bool" label="33124" default="false" />
 		<setting id="remoteControl" type="bool" label="33125" default="true" />