Merge pull request #575 from mcarlton00/translate-paths

Migrate to new translatePath library
This commit is contained in:
Odd Stråbø 2021-10-06 15:26:12 +02:00 committed by GitHub
commit 323ec5f9d6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 73 additions and 37 deletions

View file

@ -6,12 +6,16 @@ from __future__ import division, absolute_import, print_function, unicode_litera
import os import os
import sys import sys
from kodi_six import xbmc, xbmcaddon from kodi_six import xbmc, xbmcaddon, xbmcvfs
################################################################################################# #################################################################################################
kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
__addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin') __addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin')
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi')) if kodi_version > 18:
__base__ = xbmcvfs.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
else:
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
sys.path.insert(0, __base__) sys.path.insert(0, __base__)

View file

@ -6,12 +6,16 @@ from __future__ import division, absolute_import, print_function, unicode_litera
import os import os
import sys import sys
from kodi_six import xbmc, xbmcaddon from kodi_six import xbmc, xbmcaddon, xbmcvfs
################################################################################################# #################################################################################################
kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
__addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin') __addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin')
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi')) if kodi_version > 18:
__base__ = xbmcvfs.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
else:
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
sys.path.insert(0, __base__) sys.path.insert(0, __base__)

View file

@ -6,12 +6,16 @@ from __future__ import division, absolute_import, print_function, unicode_litera
import os import os
import sys import sys
from kodi_six import xbmc, xbmcaddon from kodi_six import xbmc, xbmcaddon, xbmcvfs
################################################################################################# #################################################################################################
kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
__addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin') __addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin')
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi')) if kodi_version > 18:
__base__ = xbmcvfs.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
else:
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
sys.path.insert(0, __base__) sys.path.insert(0, __base__)

View file

@ -8,7 +8,7 @@ import os
from kodi_six import xbmc, xbmcaddon, xbmcvfs from kodi_six import xbmc, xbmcaddon, xbmcvfs
from helper import translate, window, settings, addon_id, dialog from helper import translate, window, settings, addon_id, dialog
from helper.utils import create_id from helper.utils import create_id, translate_path
from helper import LazyLogger # noqa: F402 from helper import LazyLogger # noqa: F402
################################################################################################## ##################################################################################################
@ -85,7 +85,7 @@ def get_device_id(reset=False):
if client_id: if client_id:
return client_id return client_id
directory = xbmc.translatePath('special://profile/addon_data/plugin.video.jellyfin/') directory = translate_path('special://profile/addon_data/plugin.video.jellyfin/')
if not xbmcvfs.exists(directory): if not xbmcvfs.exists(directory):
xbmcvfs.mkdir(directory) xbmcvfs.mkdir(directory)

View file

@ -14,6 +14,7 @@ from six import text_type
from database import jellyfin_db from database import jellyfin_db
from helper import translate, settings, window, dialog from helper import translate, settings, window, dialog
from helper.utils import translate_path
from objects import obj from objects import obj
from helper import LazyLogger from helper import LazyLogger
@ -21,7 +22,7 @@ from helper import LazyLogger
LOG = LazyLogger(__name__) LOG = LazyLogger(__name__)
ADDON_DATA = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/") ADDON_DATA = translate_path("special://profile/addon_data/plugin.video.jellyfin/")
################################################################################################# #################################################################################################
@ -77,7 +78,7 @@ class Database(object):
def _get_database(self, path, silent=False): def _get_database(self, path, silent=False):
path = xbmc.translatePath(path) path = translate_path(path)
if not silent: if not silent:
@ -105,7 +106,7 @@ class Database(object):
xbmc.executebuiltin('UpdateLibrary(video)') xbmc.executebuiltin('UpdateLibrary(video)')
xbmc.sleep(200) xbmc.sleep(200)
databases = xbmc.translatePath("special://database/") databases = translate_path("special://database/")
types = { types = {
'video': "MyVideos", 'video': "MyVideos",
'music': "MyMusic", 'music': "MyMusic",
@ -131,7 +132,7 @@ class Database(object):
LOG.debug("Discovered database: %s", target) LOG.debug("Discovered database: %s", target)
self.discovered_file = target['db_file'] self.discovered_file = target['db_file']
return xbmc.translatePath("special://database/%s" % target['db_file']) return translate_path("special://database/%s" % target['db_file'])
def _sql(self, db_file): def _sql(self, db_file):
@ -293,7 +294,7 @@ def reset_artwork():
''' Remove all existing texture. ''' Remove all existing texture.
''' '''
thumbnails = xbmc.translatePath('special://thumbnails/') thumbnails = translate_path('special://thumbnails/')
if xbmcvfs.exists(thumbnails): if xbmcvfs.exists(thumbnails):
dirs, ignore = xbmcvfs.listdir(thumbnails) dirs, ignore = xbmcvfs.listdir(thumbnails)

View file

@ -12,6 +12,7 @@ import database
from dialogs import context from dialogs import context
from helper import translate, settings, dialog from helper import translate, settings, dialog
from helper import LazyLogger from helper import LazyLogger
from helper.utils import translate_path
from jellyfin import Jellyfin from jellyfin import Jellyfin
################################################################################################# #################################################################################################
@ -52,7 +53,7 @@ class Context(object):
self.media = xbmc.getInfoLabel('ListItem.DBTYPE') self.media = xbmc.getInfoLabel('ListItem.DBTYPE')
item_id = None item_id = None
addon_data = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/data.json") addon_data = translate_path("special://profile/addon_data/plugin.video.jellyfin/data.json")
with open(addon_data, 'rb') as infile: with open(addon_data, 'rb') as infile:
data = json.load(infile) data = json.load(infile)

View file

@ -15,7 +15,7 @@ import client
from database import reset, get_sync, Database, jellyfin_db, get_credentials from database import reset, get_sync, Database, jellyfin_db, get_credentials
from objects import Objects, Actions from objects import Objects, Actions
from helper import translate, event, settings, window, dialog, api, JSONRPC from helper import translate, event, settings, window, dialog, api, JSONRPC
from helper.utils import JsonDebugPrinter from helper.utils import JsonDebugPrinter, translate_path
from helper import LazyLogger from helper import LazyLogger
from jellyfin import Jellyfin from jellyfin import Jellyfin
@ -57,7 +57,7 @@ class Events(object):
jellyfin_client = Jellyfin(server).get_client() jellyfin_client = Jellyfin(server).get_client()
api_client = jellyfin_client.jellyfin api_client = jellyfin_client.jellyfin
addon_data = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/data.json") addon_data = translate_path("special://profile/addon_data/plugin.video.jellyfin/data.json")
try: try:
with open(addon_data, 'rb') as infile: with open(addon_data, 'rb') as infile:
data = json.load(infile) data = json.load(infile)
@ -519,7 +519,7 @@ def get_fanart(item_id, path, server_id=None, api_client=None):
LOG.info("[ extra fanart ] %s", item_id) LOG.info("[ extra fanart ] %s", item_id)
objects = Objects() objects = Objects()
list_li = [] list_li = []
directory = xbmc.translatePath("special://thumbnails/jellyfin/%s/" % item_id) directory = translate_path("special://thumbnails/jellyfin/%s/" % item_id)
if not xbmcvfs.exists(directory): if not xbmcvfs.exists(directory):
@ -792,7 +792,7 @@ def get_themes(api_client):
from helper.playutils import PlayUtils from helper.playutils import PlayUtils
from helper.xmls import tvtunes_nfo from helper.xmls import tvtunes_nfo
library = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/library") library = translate_path("special://profile/addon_data/plugin.video.jellyfin/library")
play = settings('useDirectPaths') == "1" play = settings('useDirectPaths') == "1"
if not xbmcvfs.exists(library + '/'): if not xbmcvfs.exists(library + '/'):
@ -886,7 +886,7 @@ def backup():
delete_folder(backup) delete_folder(backup)
addon_data = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin") addon_data = translate_path("special://profile/addon_data/plugin.video.jellyfin")
destination_data = os.path.join(backup, "addon_data", "plugin.video.jellyfin") destination_data = os.path.join(backup, "addon_data", "plugin.video.jellyfin")
destination_databases = os.path.join(backup, "Database") destination_databases = os.path.join(backup, "Database")
@ -901,18 +901,18 @@ def backup():
databases = Objects().objects databases = Objects().objects
db = xbmc.translatePath(databases['jellyfin']) db = translate_path(databases['jellyfin'])
xbmcvfs.copy(db, os.path.join(destination_databases, db.rsplit('\\', 1)[1])) xbmcvfs.copy(db, os.path.join(destination_databases, db.rsplit('\\', 1)[1]))
LOG.info("copied jellyfin.db") LOG.info("copied jellyfin.db")
db = xbmc.translatePath(databases['video']) db = translate_path(databases['video'])
filename = db.rsplit('\\', 1)[1] filename = db.rsplit('\\', 1)[1]
xbmcvfs.copy(db, os.path.join(destination_databases, filename)) xbmcvfs.copy(db, os.path.join(destination_databases, filename))
LOG.info("copied %s", filename) LOG.info("copied %s", filename)
if settings('enableMusic.bool'): if settings('enableMusic.bool'):
db = xbmc.translatePath(databases['music']) db = translate_path(databases['music'])
filename = db.rsplit('\\', 1)[1] filename = db.rsplit('\\', 1)[1]
xbmcvfs.copy(db, os.path.join(destination_databases, filename)) xbmcvfs.copy(db, os.path.join(destination_databases, filename))
LOG.info("copied %s", filename) LOG.info("copied %s", filename)

View file

@ -19,7 +19,7 @@ import library
import monitor import monitor
from views import Views from views import Views
from helper import translate, window, settings, event, dialog, set_addon_mode from helper import translate, window, settings, event, dialog, set_addon_mode
from helper.utils import JsonDebugPrinter from helper.utils import JsonDebugPrinter, translate_path
from jellyfin import Jellyfin from jellyfin import Jellyfin
from helper import LazyLogger from helper import LazyLogger
@ -44,7 +44,7 @@ class Service(xbmc.Monitor):
window('jellyfin_should_stop', clear=True) window('jellyfin_should_stop', clear=True)
self.settings['addon_version'] = client.get_version() self.settings['addon_version'] = client.get_version()
self.settings['profile'] = xbmc.translatePath('special://profile') self.settings['profile'] = translate_path('special://profile')
self.settings['mode'] = settings('useDirectPaths') self.settings['mode'] = settings('useDirectPaths')
self.settings['log_level'] = settings('logLevel') or "1" self.settings['log_level'] = settings('logLevel') or "1"
self.settings['auth_check'] = True self.settings['auth_check'] = True

View file

@ -12,6 +12,7 @@ from kodi_six import xbmc, xbmcaddon
import database import database
from helper import get_filesystem_encoding from helper import get_filesystem_encoding
from helper.utils import translate_path
from . import settings from . import settings
from . import kodi_version from . import kodi_version
@ -19,7 +20,7 @@ from . import kodi_version
################################################################################################## ##################################################################################################
__addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin') __addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin')
__pluginpath__ = xbmc.translatePath(__addon__.getAddonInfo('path')) __pluginpath__ = translate_path(__addon__.getAddonInfo('path'))
################################################################################################## ##################################################################################################

View file

@ -12,6 +12,7 @@ from kodi_six import xbmc, xbmcvfs
import client import client
import requests import requests
from helper import LazyLogger from helper import LazyLogger
from helper.utils import translate_path
from . import translate, settings, window, dialog, api from . import translate, settings, window, dialog, api
@ -548,7 +549,7 @@ class PlayUtils(object):
''' Download external subtitles to temp folder ''' Download external subtitles to temp folder
to be able to have proper names to streams. to be able to have proper names to streams.
''' '''
temp = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/temp/") temp = translate_path("special://profile/addon_data/plugin.video.jellyfin/temp/")
if not xbmcvfs.exists(temp): if not xbmcvfs.exists(temp):
xbmcvfs.mkdir(temp) xbmcvfs.mkdir(temp)

View file

@ -551,3 +551,15 @@ def find_library(server, item):
LOG.error('No ancestor found, not syncing item with ID: {}'.format(item['Id'])) LOG.error('No ancestor found, not syncing item with ID: {}'.format(item['Id']))
return {} return {}
def translate_path(path):
'''
Use new library location for translate path starting in Kodi 19
'''
version = kodi_version()
if version > 18:
return xbmcvfs.translatePath(path)
else:
return xbmc.translatePath(path)

View file

@ -9,6 +9,7 @@ import xml.etree.ElementTree as etree
from kodi_six import xbmc from kodi_six import xbmc
from helper import LazyLogger from helper import LazyLogger
from helper.utils import translate_path
from . import translate, dialog, settings from . import translate, dialog, settings
@ -47,7 +48,7 @@ def advanced_settings():
if settings('useDirectPaths') != "0": if settings('useDirectPaths') != "0":
return return
path = xbmc.translatePath("special://profile/") path = translate_path("special://profile/")
file = os.path.join(path, 'advancedsettings.xml') file = os.path.join(path, 'advancedsettings.xml')
try: try:

View file

@ -15,6 +15,7 @@ from helper import translate, playutils, api, window, settings, dialog
from dialogs import resume from dialogs import resume
from helper import LazyLogger from helper import LazyLogger
from jellyfin import Jellyfin from jellyfin import Jellyfin
from helper.utils import translate_path
from .obj import Objects from .obj import Objects
@ -34,7 +35,7 @@ class Actions(object):
LOG.debug('No api client provided, attempting to use config file') LOG.debug('No api client provided, attempting to use config file')
jellyfin_client = Jellyfin(server_id).get_client() jellyfin_client = Jellyfin(server_id).get_client()
api_client = jellyfin_client.jellyfin api_client = jellyfin_client.jellyfin
addon_data = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/data.json") addon_data = translate_path("special://profile/addon_data/plugin.video.jellyfin/data.json")
try: try:
with open(addon_data, 'rb') as infile: with open(addon_data, 'rb') as infile:
data = json.load(infile) data = json.load(infile)

View file

@ -11,6 +11,7 @@ from objects.obj import Objects
from helper import translate, api, window, settings, dialog, event, JSONRPC from helper import translate, api, window, settings, dialog, event, JSONRPC
from jellyfin import Jellyfin from jellyfin import Jellyfin
from helper import LazyLogger from helper import LazyLogger
from helper.utils import translate_path
################################################################################################# #################################################################################################
@ -420,7 +421,7 @@ class Player(xbmc.Player):
LOG.info("<[ transcode/%s ]", item['Id']) LOG.info("<[ transcode/%s ]", item['Id'])
item['Server'].jellyfin.close_transcode(item['DeviceId'], item['PlaySessionId']) item['Server'].jellyfin.close_transcode(item['DeviceId'], item['PlaySessionId'])
path = xbmc.translatePath("special://profile/addon_data/plugin.video.jellyfin/temp/") path = translate_path("special://profile/addon_data/plugin.video.jellyfin/temp/")
if xbmcvfs.exists(path): if xbmcvfs.exists(path):
dirs, files = xbmcvfs.listdir(path) dirs, files = xbmcvfs.listdir(path)

View file

@ -13,6 +13,7 @@ from database import Database, jellyfin_db, get_sync, save_sync
from helper import translate, api, window, event from helper import translate, api, window, event
from jellyfin import Jellyfin from jellyfin import Jellyfin
from helper import LazyLogger from helper import LazyLogger
from helper.utils import translate_path
################################################################################################# #################################################################################################
@ -186,8 +187,8 @@ class Views(object):
''' Set up playlists, video nodes, window prop. ''' Set up playlists, video nodes, window prop.
''' '''
node_path = xbmc.translatePath("special://profile/library/video") node_path = translate_path("special://profile/library/video")
playlist_path = xbmc.translatePath("special://profile/playlists/video") playlist_path = translate_path("special://profile/playlists/video")
index = 0 index = 0
# Kodi 19 doesn't seem to create this directory on it's own # Kodi 19 doesn't seem to create this directory on it's own
@ -931,7 +932,7 @@ class Views(object):
''' Remove all jellyfin playlists. ''' Remove all jellyfin playlists.
''' '''
path = xbmc.translatePath("special://profile/playlists/video/") path = translate_path("special://profile/playlists/video/")
_, files = xbmcvfs.listdir(path) _, files = xbmcvfs.listdir(path)
for file in files: for file in files:
if file.startswith('jellyfin'): if file.startswith('jellyfin'):
@ -941,7 +942,7 @@ class Views(object):
''' Remove playlist based based on view_id. ''' Remove playlist based based on view_id.
''' '''
path = xbmc.translatePath("special://profile/playlists/video/") path = translate_path("special://profile/playlists/video/")
_, files = xbmcvfs.listdir(path) _, files = xbmcvfs.listdir(path)
for file in files: for file in files:
file = file file = file
@ -958,7 +959,7 @@ class Views(object):
''' Remove node and children files. ''' Remove node and children files.
''' '''
path = xbmc.translatePath("special://profile/library/video/") path = translate_path("special://profile/library/video/")
dirs, files = xbmcvfs.listdir(path) dirs, files = xbmcvfs.listdir(path)
for file in files: for file in files:
@ -980,7 +981,7 @@ class Views(object):
''' Remove node and children files based on view_id. ''' Remove node and children files based on view_id.
''' '''
path = xbmc.translatePath("special://profile/library/video/") path = translate_path("special://profile/library/video/")
dirs, files = xbmcvfs.listdir(path) dirs, files = xbmcvfs.listdir(path)
for directory in dirs: for directory in dirs:

View file

@ -7,12 +7,16 @@ import os
import threading import threading
import sys import sys
from kodi_six import xbmc, xbmcaddon from kodi_six import xbmc, xbmcaddon, xbmcvfs
################################################################################################# #################################################################################################
kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2])
__addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin') __addon__ = xbmcaddon.Addon(id='plugin.video.jellyfin')
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi')) if kodi_version > 18:
__base__ = xbmcvfs.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
else:
__base__ = xbmc.translatePath(os.path.join(__addon__.getAddonInfo('path'), 'jellyfin_kodi'))
sys.path.insert(0, __base__) sys.path.insert(0, __base__)