Migrate to new translatePath library

This commit is contained in:
Matt 2021-10-02 13:26:37 -04:00
parent a18ca8ab9e
commit 5e7901be27
12 changed files with 49 additions and 29 deletions

View File

@ -8,7 +8,7 @@ import os
from kodi_six import xbmc, xbmcaddon, xbmcvfs
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
##################################################################################################
@ -85,7 +85,7 @@ def get_device_id(reset=False):
if 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):
xbmcvfs.mkdir(directory)

View File

@ -14,6 +14,7 @@ from six import text_type
from database import jellyfin_db
from helper import translate, settings, window, dialog
from helper.utils import translate_path
from objects import obj
from helper import LazyLogger
@ -21,7 +22,7 @@ from helper import LazyLogger
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):
path = xbmc.translatePath(path)
path = translate_path(path)
if not silent:
@ -105,7 +106,7 @@ class Database(object):
xbmc.executebuiltin('UpdateLibrary(video)')
xbmc.sleep(200)
databases = xbmc.translatePath("special://database/")
databases = translate_path("special://database/")
types = {
'video': "MyVideos",
'music': "MyMusic",
@ -131,7 +132,7 @@ class Database(object):
LOG.debug("Discovered database: %s", target)
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):
@ -293,7 +294,7 @@ def reset_artwork():
''' Remove all existing texture.
'''
thumbnails = xbmc.translatePath('special://thumbnails/')
thumbnails = translate_path('special://thumbnails/')
if xbmcvfs.exists(thumbnails):
dirs, ignore = xbmcvfs.listdir(thumbnails)

View File

@ -12,6 +12,7 @@ import database
from dialogs import context
from helper import translate, settings, dialog
from helper import LazyLogger
from helper.utils import translate_path
from jellyfin import Jellyfin
#################################################################################################
@ -52,7 +53,7 @@ class Context(object):
self.media = xbmc.getInfoLabel('ListItem.DBTYPE')
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:
data = json.load(infile)

View File

@ -15,7 +15,7 @@ import client
from database import reset, get_sync, Database, jellyfin_db, get_credentials
from objects import Objects, Actions
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 jellyfin import Jellyfin
@ -57,7 +57,7 @@ class Events(object):
jellyfin_client = Jellyfin(server).get_client()
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:
with open(addon_data, 'rb') as 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)
objects = Objects()
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):
@ -792,7 +792,7 @@ def get_themes(api_client):
from helper.playutils import PlayUtils
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"
if not xbmcvfs.exists(library + '/'):
@ -886,7 +886,7 @@ def 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_databases = os.path.join(backup, "Database")
@ -901,18 +901,18 @@ def backup():
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]))
LOG.info("copied jellyfin.db")
db = xbmc.translatePath(databases['video'])
db = translate_path(databases['video'])
filename = db.rsplit('\\', 1)[1]
xbmcvfs.copy(db, os.path.join(destination_databases, filename))
LOG.info("copied %s", filename)
if settings('enableMusic.bool'):
db = xbmc.translatePath(databases['music'])
db = translate_path(databases['music'])
filename = db.rsplit('\\', 1)[1]
xbmcvfs.copy(db, os.path.join(destination_databases, filename))
LOG.info("copied %s", filename)

View File

@ -19,7 +19,7 @@ import library
import monitor
from views import Views
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 helper import LazyLogger
@ -44,7 +44,7 @@ class Service(xbmc.Monitor):
window('jellyfin_should_stop', clear=True)
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['log_level'] = settings('logLevel') or "1"
self.settings['auth_check'] = True

View File

@ -12,6 +12,7 @@ from kodi_six import xbmc, xbmcaddon
import database
from helper import get_filesystem_encoding
from helper.utils import translate_path
from . import settings
from . import kodi_version
@ -19,7 +20,7 @@ from . import kodi_version
##################################################################################################
__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 requests
from helper import LazyLogger
from helper.utils import translate_path
from . import translate, settings, window, dialog, api
@ -548,7 +549,7 @@ class PlayUtils(object):
''' Download external subtitles to temp folder
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):
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']))
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 helper import LazyLogger
from helper.utils import translate_path
from . import translate, dialog, settings
@ -47,7 +48,7 @@ def advanced_settings():
if settings('useDirectPaths') != "0":
return
path = xbmc.translatePath("special://profile/")
path = translate_path("special://profile/")
file = os.path.join(path, 'advancedsettings.xml')
try:

View File

@ -15,6 +15,7 @@ from helper import translate, playutils, api, window, settings, dialog
from dialogs import resume
from helper import LazyLogger
from jellyfin import Jellyfin
from helper.utils import translate_path
from .obj import Objects
@ -34,7 +35,7 @@ class Actions(object):
LOG.debug('No api client provided, attempting to use config file')
jellyfin_client = Jellyfin(server_id).get_client()
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:
with open(addon_data, 'rb') as 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 jellyfin import Jellyfin
from helper import LazyLogger
from helper.utils import translate_path
#################################################################################################
@ -420,7 +421,7 @@ class Player(xbmc.Player):
LOG.info("<[ transcode/%s ]", item['Id'])
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):
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 jellyfin import Jellyfin
from helper import LazyLogger
from helper.utils import translate_path
#################################################################################################
@ -186,8 +187,8 @@ class Views(object):
''' Set up playlists, video nodes, window prop.
'''
node_path = xbmc.translatePath("special://profile/library/video")
playlist_path = xbmc.translatePath("special://profile/playlists/video")
node_path = translate_path("special://profile/library/video")
playlist_path = translate_path("special://profile/playlists/video")
index = 0
# Kodi 19 doesn't seem to create this directory on it's own
@ -931,7 +932,7 @@ class Views(object):
''' Remove all jellyfin playlists.
'''
path = xbmc.translatePath("special://profile/playlists/video/")
path = translate_path("special://profile/playlists/video/")
_, files = xbmcvfs.listdir(path)
for file in files:
if file.startswith('jellyfin'):
@ -941,7 +942,7 @@ class Views(object):
''' 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)
for file in files:
file = file
@ -958,7 +959,7 @@ class Views(object):
''' Remove node and children files.
'''
path = xbmc.translatePath("special://profile/library/video/")
path = translate_path("special://profile/library/video/")
dirs, files = xbmcvfs.listdir(path)
for file in files:
@ -980,7 +981,7 @@ class Views(object):
''' 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)
for directory in dirs: