diff --git a/jellyfin_kodi/helper/api.py b/jellyfin_kodi/helper/api.py index 5ec3736c..eba1f130 100644 --- a/jellyfin_kodi/helper/api.py +++ b/jellyfin_kodi/helper/api.py @@ -6,6 +6,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera from . import settings, LazyLogger from .utils import translate_path import json +import urllib.parse ################################################################################################## @@ -245,7 +246,23 @@ class API(object): for local_path in self.path_data.keys(): if local_path in path: path = path.replace(local_path, self.path_data[local_path]) - + # URL standardization + if ( + "davs://" in path.lower() + or "dav://" in path.lower() + or "http://" in path.lower() + or "https://" in path.lower() + ): + protocol, rest = path.split("://", 1) + ends_with_slash = rest.endswith("/") # 记录是否以/结尾 + if "/" in rest: + host, path_part = rest.split("/", 1) + path_part = "/".join( + urllib.parse.quote(segment) for segment in path_part.split("/") + ) + path = f"{protocol}://{host}/{path_part}" + if ends_with_slash and not path.endswith("/"): + path += "/" return path def get_user_artwork(self, user_id):