Aggiornato verifica percorsi videoteca KoD / libreria Kodi
This commit is contained in:
@@ -28,9 +28,9 @@ VIDEOLIBRARY_PATH = config.get_videolibrary_path()
|
|||||||
MOVIES_PATH = filetools.join(VIDEOLIBRARY_PATH, FOLDER_MOVIES)
|
MOVIES_PATH = filetools.join(VIDEOLIBRARY_PATH, FOLDER_MOVIES)
|
||||||
TVSHOWS_PATH = filetools.join(VIDEOLIBRARY_PATH, FOLDER_TVSHOWS)
|
TVSHOWS_PATH = filetools.join(VIDEOLIBRARY_PATH, FOLDER_TVSHOWS)
|
||||||
|
|
||||||
"""if not FOLDER_MOVIES or not FOLDER_TVSHOWS or not VIDEOLIBRARY_PATH \
|
if not FOLDER_MOVIES or not FOLDER_TVSHOWS or not VIDEOLIBRARY_PATH \
|
||||||
or not filetools.exists(MOVIES_PATH) or not filetools.exists(TVSHOWS_PATH):
|
or not filetools.exists(MOVIES_PATH) or not filetools.exists(TVSHOWS_PATH):
|
||||||
config.verify_directories_created()"""
|
config.verify_directories_created()
|
||||||
|
|
||||||
addon_name = "plugin://plugin.video.%s/" % config.PLUGIN_NAME
|
addon_name = "plugin://plugin.video.%s/" % config.PLUGIN_NAME
|
||||||
|
|
||||||
|
|||||||
@@ -1035,113 +1035,123 @@ def execute_sql_kodi(sql):
|
|||||||
|
|
||||||
|
|
||||||
def check_sources(new_movies_path='', new_tvshows_path=''):
|
def check_sources(new_movies_path='', new_tvshows_path=''):
|
||||||
|
def format_path(path):
|
||||||
|
if path.startswith("special://") or '://' in path: sep = '/'
|
||||||
|
else: sep = os.sep
|
||||||
|
if not path.endswith(sep): path += sep
|
||||||
|
return path
|
||||||
|
|
||||||
logger.info()
|
logger.info()
|
||||||
|
|
||||||
try:
|
new_movies_path = format_path(new_movies_path)
|
||||||
SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml")
|
new_tvshows_path = format_path(new_tvshows_path)
|
||||||
if filetools.isfile(SOURCES_PATH):
|
|
||||||
xmldoc = minidom.parse(SOURCES_PATH)
|
|
||||||
|
|
||||||
# collect nodes
|
SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml")
|
||||||
# nodes = xmldoc.getElementsByTagName("video")
|
if filetools.isfile(SOURCES_PATH):
|
||||||
video_node = xmldoc.childNodes[0].getElementsByTagName("video")[0]
|
xmldoc = minidom.parse(SOURCES_PATH)
|
||||||
paths_node = video_node.getElementsByTagName("path")
|
|
||||||
|
video_node = xmldoc.childNodes[0].getElementsByTagName("video")[0]
|
||||||
|
paths_node = video_node.getElementsByTagName("path")
|
||||||
|
list_path = [p.firstChild.data for p in paths_node]
|
||||||
|
|
||||||
|
return new_movies_path in list_path, new_tvshows_path in list_path
|
||||||
|
else:
|
||||||
|
xmldoc = minidom.Document()
|
||||||
|
source_nodes = xmldoc.createElement("sources")
|
||||||
|
|
||||||
|
for type in ['programs', 'video', 'music', 'picture', 'files']:
|
||||||
|
nodo_type = xmldoc.createElement(type)
|
||||||
|
element_default = xmldoc.createElement("default")
|
||||||
|
element_default.setAttribute("pathversion", "1")
|
||||||
|
nodo_type.appendChild(element_default)
|
||||||
|
source_nodes.appendChild(nodo_type)
|
||||||
|
xmldoc.appendChild(source_nodes)
|
||||||
|
|
||||||
|
return False, False
|
||||||
|
|
||||||
# check paths
|
|
||||||
list_path = [p.firstChild.data for p in paths_node]
|
|
||||||
if new_movies_path in list_path or new_tvshows_path in list_path:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
except:
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def update_sources(new='', old=''):
|
def update_sources(new='', old=''):
|
||||||
logger.info()
|
logger.info()
|
||||||
if new == old: return True
|
if new == old: return
|
||||||
|
|
||||||
try:
|
SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml")
|
||||||
SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml")
|
if filetools.isfile(SOURCES_PATH):
|
||||||
if filetools.isfile(SOURCES_PATH):
|
xmldoc = minidom.parse(SOURCES_PATH)
|
||||||
xmldoc = minidom.parse(SOURCES_PATH)
|
else:
|
||||||
|
xmldoc = minidom.Document()
|
||||||
|
source_nodes = xmldoc.createElement("sources")
|
||||||
|
|
||||||
|
for type in ['programs', 'video', 'music', 'picture', 'files']:
|
||||||
|
nodo_type = xmldoc.createElement(type)
|
||||||
|
element_default = xmldoc.createElement("default")
|
||||||
|
element_default.setAttribute("pathversion", "1")
|
||||||
|
nodo_type.appendChild(element_default)
|
||||||
|
source_nodes.appendChild(nodo_type)
|
||||||
|
xmldoc.appendChild(source_nodes)
|
||||||
|
|
||||||
|
# collect nodes
|
||||||
|
# nodes = xmldoc.getElementsByTagName("video")
|
||||||
|
video_node = xmldoc.childNodes[0].getElementsByTagName("video")[0]
|
||||||
|
paths_node = video_node.getElementsByTagName("path")
|
||||||
|
|
||||||
|
if old:
|
||||||
|
# delete old path
|
||||||
|
for node in paths_node:
|
||||||
|
if node.firstChild.data == old:
|
||||||
|
parent = node.parentNode
|
||||||
|
remove = parent.parentNode
|
||||||
|
remove.removeChild(parent)
|
||||||
|
|
||||||
|
# write changes
|
||||||
|
if sys.version_info[0] >= 3: #PY3
|
||||||
|
filetools.write(SOURCES_PATH, '\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]))
|
||||||
else:
|
else:
|
||||||
xmldoc = minidom.Document()
|
filetools.write(SOURCES_PATH, b'\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]), vfs=False)
|
||||||
source_nodes = xmldoc.createElement("sources")
|
logger.debug("The path %s has been removed from sources.xml" % old)
|
||||||
|
|
||||||
for type in ['programs', 'video', 'music', 'picture', 'files']:
|
if new:
|
||||||
nodo_type = xmldoc.createElement(type)
|
# create new path
|
||||||
element_default = xmldoc.createElement("default")
|
list_path = [p.firstChild.data for p in paths_node]
|
||||||
element_default.setAttribute("pathversion", "1")
|
if new in list_path:
|
||||||
nodo_type.appendChild(element_default)
|
logger.info("The path %s already exists in sources.xml" % new)
|
||||||
source_nodes.appendChild(nodo_type)
|
return
|
||||||
xmldoc.appendChild(source_nodes)
|
logger.info("The path %s does not exist in sources.xml" % new)
|
||||||
|
|
||||||
# collect nodes
|
# if the path does not exist we create one
|
||||||
# nodes = xmldoc.getElementsByTagName("video")
|
source_node = xmldoc.createElement("source")
|
||||||
video_node = xmldoc.childNodes[0].getElementsByTagName("video")[0]
|
|
||||||
paths_node = video_node.getElementsByTagName("path")
|
|
||||||
|
|
||||||
if old:
|
# <name> Node
|
||||||
# delete old path
|
name_node = xmldoc.createElement("name")
|
||||||
for node in paths_node:
|
sep = os.sep
|
||||||
if node.firstChild.data == old:
|
if new.startswith("special://") or scrapertools.find_single_match(new, r'(^\w+:\/\/)'):
|
||||||
parent = node.parentNode
|
sep = "/"
|
||||||
remove = parent.parentNode
|
name = new
|
||||||
remove.removeChild(parent)
|
if new.endswith(sep):
|
||||||
|
name = new[:-1]
|
||||||
|
name_node.appendChild(xmldoc.createTextNode(name.rsplit(sep)[-1]))
|
||||||
|
source_node.appendChild(name_node)
|
||||||
|
|
||||||
# write changes
|
# <path> Node
|
||||||
if sys.version_info[0] >= 3: #PY3
|
path_node = xmldoc.createElement("path")
|
||||||
filetools.write(SOURCES_PATH, '\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]))
|
path_node.setAttribute("pathversion", "1")
|
||||||
else:
|
path_node.appendChild(xmldoc.createTextNode(new))
|
||||||
filetools.write(SOURCES_PATH, b'\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]), vfs=False)
|
source_node.appendChild(path_node)
|
||||||
logger.debug("The path %s has been removed from sources.xml" % old)
|
|
||||||
|
|
||||||
if new:
|
# <allowsharing> Node
|
||||||
# create new path
|
allowsharing_node = xmldoc.createElement("allowsharing")
|
||||||
list_path = [p.firstChild.data for p in paths_node]
|
allowsharing_node.appendChild(xmldoc.createTextNode('true'))
|
||||||
if new in list_path:
|
source_node.appendChild(allowsharing_node)
|
||||||
logger.info("The path %s already exists in sources.xml" % new)
|
|
||||||
return True
|
|
||||||
logger.info("The path %s does not exist in sources.xml" % new)
|
|
||||||
|
|
||||||
# if the path does not exist we create one
|
# Añadimos <source> a <video>
|
||||||
source_node = xmldoc.createElement("source")
|
video_node.appendChild(source_node)
|
||||||
|
|
||||||
# <name> Node
|
# write changes
|
||||||
name_node = xmldoc.createElement("name")
|
if sys.version_info[0] >= 3: #PY3
|
||||||
sep = os.sep
|
filetools.write(SOURCES_PATH, '\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]))
|
||||||
if new.startswith("special://") or scrapertools.find_single_match(new, r'(^\w+:\/\/)'):
|
else:
|
||||||
sep = "/"
|
filetools.write(SOURCES_PATH, b'\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]), vfs=False)
|
||||||
name = new
|
logger.debug("The path %s has been added to sources.xml" % new)
|
||||||
if new.endswith(sep):
|
|
||||||
name = new[:-1]
|
|
||||||
name_node.appendChild(xmldoc.createTextNode(name.rsplit(sep)[-1]))
|
|
||||||
source_node.appendChild(name_node)
|
|
||||||
|
|
||||||
# <path> Node
|
|
||||||
path_node = xmldoc.createElement("path")
|
|
||||||
path_node.setAttribute("pathversion", "1")
|
|
||||||
path_node.appendChild(xmldoc.createTextNode(new))
|
|
||||||
source_node.appendChild(path_node)
|
|
||||||
|
|
||||||
# <allowsharing> Node
|
|
||||||
allowsharing_node = xmldoc.createElement("allowsharing")
|
|
||||||
allowsharing_node.appendChild(xmldoc.createTextNode('true'))
|
|
||||||
source_node.appendChild(allowsharing_node)
|
|
||||||
|
|
||||||
# Añadimos <source> a <video>
|
|
||||||
video_node.appendChild(source_node)
|
|
||||||
|
|
||||||
# write changes
|
|
||||||
if sys.version_info[0] >= 3: #PY3
|
|
||||||
filetools.write(SOURCES_PATH, '\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]))
|
|
||||||
else:
|
|
||||||
filetools.write(SOURCES_PATH, b'\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]), vfs=False)
|
|
||||||
logger.debug("The path %s has been added to sources.xml" % new)
|
|
||||||
return True
|
|
||||||
except:
|
|
||||||
logger.debug("An error occurred. The path %s has not been added/updated to sources.xml" % old)
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def ask_set_content(silent=False):
|
def ask_set_content(silent=False):
|
||||||
@@ -1149,9 +1159,7 @@ def ask_set_content(silent=False):
|
|||||||
logger.debug("videolibrary_kodi %s" % config.get_setting("videolibrary_kodi"))
|
logger.debug("videolibrary_kodi %s" % config.get_setting("videolibrary_kodi"))
|
||||||
|
|
||||||
def do_config(custom=False):
|
def do_config(custom=False):
|
||||||
if set_content("movie", True, custom) and set_content("tvshow", True, custom) and \
|
if set_content("movie", True, custom) and set_content("tvshow", True, custom):
|
||||||
update_sources(config.get_setting("videolibrarypath")) and \
|
|
||||||
update_sources(config.get_setting("downloadpath")):
|
|
||||||
platformtools.dialog_ok(config.get_localized_string(80026), config.get_localized_string(70104))
|
platformtools.dialog_ok(config.get_localized_string(80026), config.get_localized_string(70104))
|
||||||
config.set_setting("videolibrary_kodi", True)
|
config.set_setting("videolibrary_kodi", True)
|
||||||
update()
|
update()
|
||||||
@@ -1164,6 +1172,7 @@ def ask_set_content(silent=False):
|
|||||||
if not platformtools.dialog_yesno(config.get_localized_string(80026), config.get_localized_string(80016), "", "", config.get_localized_string(80017), config.get_localized_string(80018)):
|
if not platformtools.dialog_yesno(config.get_localized_string(80026), config.get_localized_string(80016), "", "", config.get_localized_string(80017), config.get_localized_string(80018)):
|
||||||
path = platformtools.dialog_browse(3, config.get_localized_string(80019), config.get_setting("videolibrarypath"))
|
path = platformtools.dialog_browse(3, config.get_localized_string(80019), config.get_setting("videolibrarypath"))
|
||||||
if path != "":
|
if path != "":
|
||||||
|
update_sources(path, config.get_setting("videolibrarypath"))
|
||||||
config.set_setting("videolibrarypath", path)
|
config.set_setting("videolibrarypath", path)
|
||||||
folder = platformtools.dialog_input(config.get_setting("folder_movies"), config.get_localized_string(80020))
|
folder = platformtools.dialog_input(config.get_setting("folder_movies"), config.get_localized_string(80020))
|
||||||
if folder != "":
|
if folder != "":
|
||||||
|
|||||||
@@ -5924,7 +5924,7 @@ msgid "Logging"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgctxt "#70789"
|
msgctxt "#70789"
|
||||||
msgid "* Change by opening the settings from the main menu of KoD"
|
msgid "* Change by opening the settings from the KoD main menu"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
||||||
@@ -6178,5 +6178,5 @@ msgid "You will be asked to configure The Movie Database for movies and The TVDB
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgctxt "#80028"
|
msgctxt "#80028"
|
||||||
msgid "The path and/or the folders you selected are already used by the Kodi library. Please select other ones"
|
msgid "The selected folders are already used by the Kodi library. Please change them"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5924,7 +5924,7 @@ msgid "Logging"
|
|||||||
msgstr "Logging"
|
msgstr "Logging"
|
||||||
|
|
||||||
msgctxt "#70789"
|
msgctxt "#70789"
|
||||||
msgid "* Change by opening the settings from the main menu of KoD"
|
msgid "* Change by opening the settings from the KoD main menu"
|
||||||
msgstr "* Cambia aprendo le impostazioni dal menu principale di KoD"
|
msgstr "* Cambia aprendo le impostazioni dal menu principale di KoD"
|
||||||
|
|
||||||
|
|
||||||
@@ -6178,5 +6178,5 @@ msgid "You will be asked to configure The Movie Database for movies and The TVDB
|
|||||||
msgstr "Ti verrà chiesto di configurare The Movie Database per i film e The TVDB per le serie TV"
|
msgstr "Ti verrà chiesto di configurare The Movie Database per i film e The TVDB per le serie TV"
|
||||||
|
|
||||||
msgctxt "#80028"
|
msgctxt "#80028"
|
||||||
msgid "The path and/or the folders you selected are already used by the Kodi library. Please select other ones"
|
msgid "The selected folders are already used by the Kodi library. Please change them"
|
||||||
msgstr "Il percorso e/o le cartelle selezionate sono già utilizzati dalla libreria di Kodi. Si prega di selezionarne altri"
|
msgstr "Le cartelle selezionate sono già utilizzate dalla libreria di Kodi. Si prega di cambiarle"
|
||||||
@@ -705,10 +705,16 @@ def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_
|
|||||||
new_tvshows_path = os.path.join(new_path, new_tvshows_folder)
|
new_tvshows_path = os.path.join(new_path, new_tvshows_folder)
|
||||||
|
|
||||||
from platformcode import xbmc_videolibrary
|
from platformcode import xbmc_videolibrary
|
||||||
if xbmc_videolibrary.check_sources(new_movies_path+'\\', new_tvshows_path+'\\'):
|
movies_path, tvshows_path = xbmc_videolibrary.check_sources(new_movies_path, new_tvshows_path)
|
||||||
|
if movies_path or tvshows_path:
|
||||||
|
if not movies_path:
|
||||||
|
filetools.rmdir(new_movies_path)
|
||||||
|
if not tvshows_path:
|
||||||
|
filetools.rmdir(new_tvshows_path)
|
||||||
config.set_setting("videolibrarypath", current_path)
|
config.set_setting("videolibrarypath", current_path)
|
||||||
config.set_setting("folder_movies", current_movies_folder)
|
config.set_setting("folder_movies", current_movies_folder)
|
||||||
config.set_setting("folder_tvshows", current_tvshows_folder)
|
config.set_setting("folder_tvshows", current_tvshows_folder)
|
||||||
|
xbmc_videolibrary.update_sources(current_path, new_path)
|
||||||
progress.update(100)
|
progress.update(100)
|
||||||
xbmc.sleep(1000)
|
xbmc.sleep(1000)
|
||||||
progress.close()
|
progress.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user