diff --git a/core/videolibrarytools.py b/core/videolibrarytools.py index f2671ee2..40292408 100644 --- a/core/videolibrarytools.py +++ b/core/videolibrarytools.py @@ -28,9 +28,9 @@ VIDEOLIBRARY_PATH = config.get_videolibrary_path() MOVIES_PATH = filetools.join(VIDEOLIBRARY_PATH, FOLDER_MOVIES) 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): - config.verify_directories_created()""" + config.verify_directories_created() addon_name = "plugin://plugin.video.%s/" % config.PLUGIN_NAME diff --git a/platformcode/xbmc_videolibrary.py b/platformcode/xbmc_videolibrary.py index 8e5219d8..461242c7 100644 --- a/platformcode/xbmc_videolibrary.py +++ b/platformcode/xbmc_videolibrary.py @@ -1035,113 +1035,123 @@ def execute_sql_kodi(sql): 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() - try: - SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml") - if filetools.isfile(SOURCES_PATH): - xmldoc = minidom.parse(SOURCES_PATH) + new_movies_path = format_path(new_movies_path) + new_tvshows_path = format_path(new_tvshows_path) - # collect nodes - # nodes = xmldoc.getElementsByTagName("video") - video_node = xmldoc.childNodes[0].getElementsByTagName("video")[0] - paths_node = video_node.getElementsByTagName("path") + SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml") + if filetools.isfile(SOURCES_PATH): + xmldoc = minidom.parse(SOURCES_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=''): logger.info() - if new == old: return True + if new == old: return - try: - SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml") - if filetools.isfile(SOURCES_PATH): - xmldoc = minidom.parse(SOURCES_PATH) + SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml") + if filetools.isfile(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: - xmldoc = minidom.Document() - source_nodes = xmldoc.createElement("sources") + 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 removed from sources.xml" % old) - 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) + if new: + # create new path + list_path = [p.firstChild.data for p in paths_node] + if new in list_path: + logger.info("The path %s already exists in sources.xml" % new) + return + logger.info("The path %s does not exist in sources.xml" % new) - # collect nodes - # nodes = xmldoc.getElementsByTagName("video") - video_node = xmldoc.childNodes[0].getElementsByTagName("video")[0] - paths_node = video_node.getElementsByTagName("path") + # if the path does not exist we create one + source_node = xmldoc.createElement("source") - if old: - # delete old path - for node in paths_node: - if node.firstChild.data == old: - parent = node.parentNode - remove = parent.parentNode - remove.removeChild(parent) + # Node + name_node = xmldoc.createElement("name") + sep = os.sep + if new.startswith("special://") or scrapertools.find_single_match(new, r'(^\w+:\/\/)'): + sep = "/" + name = new + if new.endswith(sep): + name = new[:-1] + name_node.appendChild(xmldoc.createTextNode(name.rsplit(sep)[-1])) + source_node.appendChild(name_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 removed from sources.xml" % old) + # Node + path_node = xmldoc.createElement("path") + path_node.setAttribute("pathversion", "1") + path_node.appendChild(xmldoc.createTextNode(new)) + source_node.appendChild(path_node) - if new: - # create new path - list_path = [p.firstChild.data for p in paths_node] - if new in list_path: - 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) + # Node + allowsharing_node = xmldoc.createElement("allowsharing") + allowsharing_node.appendChild(xmldoc.createTextNode('true')) + source_node.appendChild(allowsharing_node) - # if the path does not exist we create one - source_node = xmldoc.createElement("source") + # Añadimos a