From b67f7a8c5126064c4aa5cfbf2921a45f00fa45c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Tue, 21 Apr 2020 12:48:30 +0200 Subject: [PATCH] Handle sys.getfilesystemencoding() returning None --- jellyfin_kodi/helper/__init__.py | 1 + jellyfin_kodi/helper/loghandler.py | 8 ++++---- jellyfin_kodi/helper/utils.py | 13 +++++++++++++ jellyfin_kodi/objects/obj.py | 5 ++--- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/jellyfin_kodi/helper/__init__.py b/jellyfin_kodi/helper/__init__.py index d958bec8..1033787c 100644 --- a/jellyfin_kodi/helper/__init__.py +++ b/jellyfin_kodi/helper/__init__.py @@ -21,6 +21,7 @@ from .utils import create_id from .utils import convert_to_local as Local from .utils import has_attribute from .utils import set_addon_mode +from .utils import get_filesystem_encoding from .wrapper import progress from .wrapper import catch diff --git a/jellyfin_kodi/helper/loghandler.py b/jellyfin_kodi/helper/loghandler.py index d6b5b4c9..a0f6003e 100644 --- a/jellyfin_kodi/helper/loghandler.py +++ b/jellyfin_kodi/helper/loghandler.py @@ -4,14 +4,14 @@ from __future__ import division, absolute_import, print_function, unicode_litera ################################################################################################## import os -import sys import logging import traceback from six import ensure_text - from kodi_six import xbmc, xbmcaddon + import database +from helper import get_filesystem_encoding from . import settings @@ -90,7 +90,7 @@ class MyFormatter(logging.Formatter): def format(self, record): if record.pathname: - record.pathname = ensure_text(record.pathname, sys.getfilesystemencoding()) + record.pathname = ensure_text(record.pathname, get_filesystem_encoding()) self._gen_rel_path(record) @@ -104,7 +104,7 @@ class MyFormatter(logging.Formatter): res = [] for o in traceback.format_exception(*exc_info): - o = ensure_text(o, sys.getfilesystemencoding()) + o = ensure_text(o, get_filesystem_encoding()) if o.startswith(' File "'): # If this split can't handle your file names, you should seriously consider renaming your files. diff --git a/jellyfin_kodi/helper/utils.py b/jellyfin_kodi/helper/utils.py index c7e92a1b..92a6fe8b 100644 --- a/jellyfin_kodi/helper/utils.py +++ b/jellyfin_kodi/helper/utils.py @@ -6,6 +6,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera import binascii import json import os +import sys import re import unicodedata from uuid import uuid4 @@ -488,3 +489,15 @@ class JsonDebugPrinter(object): def __str__(self): return json.dumps(self.data, indent=4) + + +def get_filesystem_encoding(): + enc = sys.getfilesystemencoding() + + if not enc: + enc = sys.getdefaultencoding() + + if not enc or enc == 'ascii': + enc = 'utf-8' + + return enc diff --git a/jellyfin_kodi/objects/obj.py b/jellyfin_kodi/objects/obj.py index d04aa982..63c9dbc2 100644 --- a/jellyfin_kodi/objects/obj.py +++ b/jellyfin_kodi/objects/obj.py @@ -5,11 +5,10 @@ from __future__ import division, absolute_import, print_function, unicode_litera import json import os -import sys from six import iteritems, ensure_text -from helper import LazyLogger +from helper import LazyLogger, get_filesystem_encoding ################################################################################################## @@ -34,7 +33,7 @@ class Objects(object): ''' Load objects mapping. ''' - file_dir = os.path.dirname(ensure_text(__file__, sys.getfilesystemencoding())) + file_dir = os.path.dirname(ensure_text(__file__, get_filesystem_encoding())) with open(os.path.join(file_dir, 'obj_map.json')) as infile: self.objects = json.load(infile)