From 4bbeeba20e9e62bda782f89d3b6f7bdb85353d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Wachtendorf?= Date: Fri, 3 Mar 2023 16:41:51 +0100 Subject: [PATCH] Add rewatch feature to episode NextUp widget --- .../resource.language.en_gb/strings.po | 12 ++++++++++++ resources/lib/widgets.py | 18 ++++++++++++++++++ resources/settings.xml | 5 +++++ 3 files changed, 35 insertions(+) diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 13522d9..e06e0be 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -1132,3 +1132,15 @@ msgstr "Shuffle" msgctxt "#30449" msgid "Instant Mix" msgstr "Instant Mix" + +msgctxt "#30450" +msgid "Next Up Rewatching" +msgstr "Next Up Rewatching" + +msgctxt "#30451" +msgid "Rewatch Days (0 = Disabled)" +msgstr "Rewatch Days (0 = Disabled)" + +msgctxt "#30452" +msgid "Combine instead of replace (might cause slow-down)" +msgstr "Combine instead of replace (might cause slow-down)" \ No newline at end of file diff --git a/resources/lib/widgets.py b/resources/lib/widgets.py index 608289f..45d32a4 100644 --- a/resources/lib/widgets.py +++ b/resources/lib/widgets.py @@ -5,6 +5,7 @@ from __future__ import ( import hashlib import random import time +import datetime import xbmcaddon import xbmcplugin @@ -378,6 +379,12 @@ def get_widget_content(handle, params): url_params["userid"] = user_id url_params["Recursive"] = True url_params["ImageTypeLimit"] = 1 + # check if rewatching is enabled and combine is disabled + rewatch_days = int(settings.getSetting("rewatch_days")) + if rewatch_days > 0 and settings.getSetting("rewatch_combine") != "true": + rewatch_since = datetime.datetime.today() - datetime.timedelta(days=rewatch_days) + url_params["nextUpDateCutoff"] = rewatch_since.strftime("%Y-%m-%d") + url_params["enableRewatching"] = True # Collect InProgress items to be combined with NextUp inprogress_url_verb = "/Users/{}/Items".format(user_id) inprogress_url_params = url_params.copy() @@ -448,6 +455,17 @@ def get_widget_content(handle, params): list_items = inprogress + list_items + # add rewatch combine is enabled + if rewatch_days > 0 and settings.getSetting("rewatch_combine") == "true": + rewatch_since = datetime.datetime.today() - datetime.timedelta(days=rewatch_days) + url_params["nextUpDateCutoff"] = rewatch_since.strftime("%Y-%m-%d") + url_params["enableRewatching"] = True + rewatch_items_url = get_jellyfin_url(url_verb, url_params) + rewatch_items, detected_type, total_records = process_directory(rewatch_items_url, None, params, use_cached_widget_data) + for ri in rewatch_items: + if not any(i[1].getProperty("id") == ri[1].getProperty("id") for i in list_items): + list_items.append(ri) + if detected_type is not None: # if the media type is not set then try to use the detected type log.debug("Detected content type: {0}".format(detected_type)) diff --git a/resources/settings.xml b/resources/settings.xml index 57705db..8750430 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -95,6 +95,11 @@ + + + + +