mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 02:06:09 +00:00
Migrate to new translatePath library
This commit is contained in:
parent
a18ca8ab9e
commit
5e7901be27
12 changed files with 49 additions and 29 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'))
|
||||||
|
|
||||||
##################################################################################################
|
##################################################################################################
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue