mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 02:06:09 +00:00
Merge pull request #684 from oddstr13/pr-fix-514-1
Add back verify_kodi_defaults from #426
This commit is contained in:
commit
4b948be28f
2 changed files with 62 additions and 1 deletions
|
@ -20,6 +20,7 @@ from .. import monitor
|
|||
from ..views import Views
|
||||
from ..helper import translate, window, settings, event, dialog, set_addon_mode, LazyLogger
|
||||
from ..helper.utils import JsonDebugPrinter, translate_path
|
||||
from ..helper.xmls import verify_kodi_defaults
|
||||
from ..jellyfin import Jellyfin
|
||||
|
||||
#################################################################################################
|
||||
|
@ -66,6 +67,8 @@ class Service(xbmc.Monitor):
|
|||
LOG.info("Using dynamic paths: %s", settings('useDirectPaths') == "0")
|
||||
LOG.info("Log Level: %s", self.settings['log_level'])
|
||||
|
||||
verify_kodi_defaults()
|
||||
|
||||
window('jellyfin.connected.bool', True)
|
||||
settings('groupedSets.bool', objects.utils.get_grouped_set())
|
||||
xbmc.Monitor.__init__(self)
|
||||
|
|
|
@ -6,7 +6,7 @@ from __future__ import division, absolute_import, print_function, unicode_litera
|
|||
import os
|
||||
import xml.etree.ElementTree as etree
|
||||
|
||||
from kodi_six import xbmc
|
||||
from kodi_six import xbmc, xbmcvfs
|
||||
|
||||
from .utils import translate_path
|
||||
from . import translate, dialog, settings, LazyLogger
|
||||
|
@ -71,3 +71,61 @@ def advanced_settings():
|
|||
xbmc.executebuiltin('RestartApp')
|
||||
|
||||
return True
|
||||
|
||||
def verify_kodi_defaults():
|
||||
''' Make sure we have the kodi default folder in place.
|
||||
'''
|
||||
|
||||
source_base_path = translate_path("special://xbmc/system/library/video")
|
||||
dest_base_path = translate_path("special://profile/library/video")
|
||||
|
||||
if not os.path.exists(source_base_path):
|
||||
LOG.error("XMLs source path `%s` not found.", source_base_path)
|
||||
return
|
||||
|
||||
# Make sure the files exist in the local profile.
|
||||
for source_path, dirs, files in os.walk(source_base_path):
|
||||
relative_path = os.path.relpath(source_path, source_base_path)
|
||||
dest_path = os.path.join(dest_base_path, relative_path)
|
||||
|
||||
if not os.path.exists(dest_path):
|
||||
os.mkdir(os.path.normpath(dest_path))
|
||||
|
||||
for file_name in files:
|
||||
dest_file = os.path.join(dest_path, file_name)
|
||||
copy = False
|
||||
|
||||
if not os.path.exists(dest_file):
|
||||
copy = True
|
||||
elif os.path.splitext(file_name)[1].lower() == '.xml':
|
||||
try:
|
||||
etree.parse(dest_file)
|
||||
except etree.ParseError:
|
||||
LOG.warning("Unable to parse `{}`, recovering from default.".format(dest_file))
|
||||
copy = True
|
||||
|
||||
if copy:
|
||||
source_file = os.path.join(source_path, file_name)
|
||||
LOG.debug("Copying `{}` -> `{}`".format(source_file, dest_file))
|
||||
xbmcvfs.copy(source_file, dest_file)
|
||||
|
||||
# This code seems to enforce a fixed ordering.
|
||||
# Is it really desirable to force this on users?
|
||||
# The default (system wide) order is [10, 20, 30] in Kodi 19.
|
||||
for index, node in enumerate(['movies', 'tvshows', 'musicvideos']):
|
||||
file_name = os.path.join(dest_base_path, node, "index.xml")
|
||||
|
||||
if xbmcvfs.exists(file_name):
|
||||
try:
|
||||
tree = etree.parse(file_name)
|
||||
except etree.ParseError:
|
||||
LOG.error("Unable to parse `{}`".format(file_name))
|
||||
LOG.exception("We ensured the file was OK above, something is wrong!")
|
||||
|
||||
tree.getroot().set('order', str(17 + index))
|
||||
tree.write(file_name)
|
||||
|
||||
playlist_path = translate_path("special://profile/playlists/video")
|
||||
|
||||
if not xbmcvfs.exists(playlist_path):
|
||||
xbmcvfs.mkdirs(playlist_path)
|
||||
|
|
Loading…
Reference in a new issue