From f7ce255160895cca4ebba98c5d0f1da58d2e338f Mon Sep 17 00:00:00 2001 From: Stephan Sundermann Date: Sat, 14 Dec 2024 19:55:09 +0100 Subject: [PATCH] Use file browser dialog for local path --- jellyfin_kodi/helper/utils.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/jellyfin_kodi/helper/utils.py b/jellyfin_kodi/helper/utils.py index 4a7857b9..d3d780d8 100644 --- a/jellyfin_kodi/helper/utils.py +++ b/jellyfin_kodi/helper/utils.py @@ -10,7 +10,7 @@ import sys import re import unicodedata from uuid import uuid4 -from urllib.parse import quote_plus +from urllib.parse import quote_plus, urlparse, urlunparse from dateutil import tz, parser @@ -157,6 +157,7 @@ def dialog(dialog_type, *args, **kwargs): "select": d.select, "numeric": d.numeric, "multi": d.multiselect, + "browse": d.browse, } return types[dialog_type](*args, **kwargs) @@ -487,6 +488,13 @@ def set_addon_mode(): LOG.info("Add-on playback: %s", settings("useDirectPaths") == "0") +def strip_credentials(url): + parsed = urlparse(url) + netloc = parsed.netloc.split("@")[-1] # Remove credentials + stripped_url = urlunparse(parsed._replace(netloc=netloc)) + return stripped_url + + def path_replacements(): # UI to display and manage path replacements for native mode from ..database import get_credentials, save_credentials @@ -509,7 +517,9 @@ def path_replacements(): if selected_path == 1: # Add a new path replacement remote_path = dialog("input", translate(33206)) - local_path = dialog("input", translate(33207)) + local_path = strip_credentials( + dialog("browse", type=0, heading=translate(33207), shares="") + ) if remote_path and local_path: paths[remote_path] = local_path elif selected_path > 1: @@ -520,7 +530,15 @@ def path_replacements(): del paths[edit_remote_path] # Prepopulate the text box with the existing value remote_path = dialog("input", translate(33206), defaultt=edit_remote_path) - local_path = dialog("input", translate(33207), defaultt=edit_local_path) + local_path = strip_credentials( + dialog( + "browse", + type=0, + heading=translate(33207), + shares="", + defaultt=edit_local_path, + ) + ) if remote_path and local_path: paths[remote_path] = local_path