From 4ce14db6452e0942fe6b9ad5b7590457bf980872 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Wed, 25 Mar 2020 15:46:36 +0100 Subject: [PATCH] =?UTF-8?q?move=5Fvideolibrary:=20possibilit=C3=A0=20di=20?= =?UTF-8?q?disattivare=20l'integrazione=20con=20libreria=20di=20Kodi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platformcode/config.py | 19 ++- resources/settings.xml | 3 +- specials/move_videolibrary.py | 242 +++++++++++++--------------------- 3 files changed, 104 insertions(+), 160 deletions(-) diff --git a/platformcode/config.py b/platformcode/config.py index a9ab5555..e35273cc 100644 --- a/platformcode/config.py +++ b/platformcode/config.py @@ -219,23 +219,28 @@ def open_settings(): set_setting('adult_aux_new_password1', '') set_setting('adult_aux_new_password2', '') + from specials import move_videolibrary + # si se ha puesto que se quiere autoconfigurar y se había creado el directorio de la videoteca + if not settings_pre.get("videolibrary_kodi", None) and settings_post.get("videolibrary_kodi", None) \ + and settings_post.get("videolibrary_kodi_flag", None) == 1: + from platformcode import xbmc_videolibrary + xbmc_videolibrary.ask_set_content(2, silent=True) + xbmc.sleep(2000) + xbmc_videolibrary.update(settings_post.get("folder_movies", None)) + xbmc_videolibrary.update(settings_post.get("folder_tvshows", None)) + else: + move_videolibrary.clear_videolibrary_db() + # si se ha cambiado la ruta de la videoteca llamamos a comprobar directorios para que lo cree y pregunte # automaticamente si configurar la videoteca """if settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \ settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \ settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None): verify_directories_created()""" - from specials import move_videolibrary move_videolibrary.move_videolibrary(settings_pre.get("videolibrarypath", None), settings_post.get("videolibrarypath", None), settings_pre.get("folder_movies", None), settings_post.get("folder_movies", None), settings_pre.get("folder_tvshows", None), settings_post.get("folder_tvshows", None)) - # si se ha puesto que se quiere autoconfigurar y se había creado el directorio de la videoteca - if not settings_pre.get("videolibrary_kodi", None) and settings_post.get("videolibrary_kodi", None) \ - and settings_post.get("videolibrary_kodi_flag", None) == 1: - from platformcode import xbmc_videolibrary - xbmc_videolibrary.ask_set_content(2, silent=True) - def get_setting(name, channel="", server="", default=None): """ diff --git a/resources/settings.xml b/resources/settings.xml index 6c39d1d7..9d323006 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -35,7 +35,8 @@ - + + diff --git a/specials/move_videolibrary.py b/specials/move_videolibrary.py index 93684d48..94a517ce 100644 --- a/specials/move_videolibrary.py +++ b/specials/move_videolibrary.py @@ -7,45 +7,6 @@ from core.support import log, dbg from distutils import dir_util, file_util from xml.dom import minidom -"""global p -p = 0 -progress = platformtools.dialog_progress('Spostamento Videoteca','Spostamento File')""" - - - - -"""def set_videolibrary_path(item): - log() - global p - previous_path = config.get_setting('videolibrarypath') - path = xbmcgui.Dialog().browse(3, 'Seleziona la cartella', 'files', '', False, False, config.get_setting('videolibrarypath')) - log('New Videolibrary path:', path) - log('Previous Videolibrary path:', previous_path) - if path != previous_path: - config.set_setting('videolibrarypath', path) - progress.update(p, '') - set_new_path(path, previous_path) - if platformtools.dialog_yesno('Spostare la Videoteca?', 'vuoi spostare la videoteca e il relativo contenuto nella nuova posizione?'): - move_videolibrary(path, previous_path) - progress.update(p, 'Spostamento Database') - move_db(path, previous_path) - clear_cache() - progress.close() - platformtools.dialog_ok('Spostamento Completato','') - -def move_videolibrary(new, old): - old = xbmc.translatePath(old) - new = xbmc.translatePath(new) - - move_list = filetools.listdir(old) - for d in move_list: - od = filetools.join(old, d) - nd = filetools.join(new, d) - dir_util.copy_tree(od,nd) - dir_util.remove_tree(od,1) - global p - p += 30 - progress.update(p)""" def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_folder, current_tvshows_folder, new_tvshows_folder): log() @@ -87,7 +48,7 @@ def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_ filetools.rmdirtree(current_path) if config.is_xbmc() and config.get_setting("videolibrary_kodi"): - set_new_path(new_path, current_path) + set_new_path(backup_current_path, backup_new_path) update_db(backup_current_path, backup_new_path, current_movies_folder, new_movies_folder, current_tvshows_folder, new_tvshows_folder, progress) clear_cache() else: @@ -98,7 +59,9 @@ def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_ if notify: platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80014), icon=0, time=5000, sound=False) + def update_db(current_path, new_path, current_movies_folder, new_movies_folder, current_tvshows_folder, new_tvshows_folder, progress): + log() new = new_path old = current_path @@ -190,9 +153,27 @@ def update_db(current_path, new_path, current_movies_folder, new_movies_folder, p += 5 progress.update(90, config.get_localized_string(20000), config.get_localized_string(80013)) -def clear_videolibrary_db(item): +def clear_videolibrary_db(): + log() + progress = platformtools.dialog_progress_bg(config.get_localized_string(20000), config.get_localized_string(60601)) + progress.update(0) + + + config.set_setting('videolibrary_kodi_flag', 1) + config.set_setting('videolibrary_kodi', False) + path = config.get_setting('videolibrarypath') + + # rename main path for search in the DB + if path.startswith("special://") or scrapertools.find_single_match(path, r'(^\w+:\/\/)'): + path = path.replace('/profile/', '/%/').replace('/home/userdata/', '/%/') + sep = '/' + else: + sep = os.sep + if not path.endswith(sep): + path += sep + # search path in the db - sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % '%/plugin.video.kod/%' + sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % path nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) # change main path @@ -200,93 +181,49 @@ def clear_videolibrary_db(item): idPath = records[0][0] sql = 'DELETE from path WHERE idPath=%s' % idPath nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) + progress.update(20) - # search path in the db - sql = 'SELECT idMovie, c22 FROM movie where c22 LIKE "%s"' % '%/plugin.video.kod/%' + path += '%' + # search path in the db + sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % path nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) # change main path if records: - idMovie = records[0][0] - sql = 'DELETE from movie WHERE idMovie=%s' % idMovie - nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - + for record in records: + idPath = record[0] + sql = 'DELETE from path WHERE idPath=%s' % idPath + nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) # search path in the db - sql = 'SELECT idEpisode, c18 FROM episode where c18 LIKE "%s"' % '%/plugin.video.kod/%' + sql = 'SELECT idMovie, c22 FROM movie where c22 LIKE "%s"' % path nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - + progress.update(40) # change main path if records: - idEpisode = records[0][0] - sql = 'DELETE from episode WHERE idEpisode=%s' % idEpisode - nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) + for record in records: + idMovie = record[0] + sql = 'DELETE from movie WHERE idMovie=%s' % idMovie + nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) + + # search path in the db + sql = 'SELECT idEpisode, c18 FROM episode where c18 LIKE "%s"' % path + nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) + progress.update(60) + # change main path + if records: + for record in records: + idEpisode = record[0] + sql = 'DELETE from episode WHERE idEpisode=%s' % idEpisode + nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) + progress.update(80) + set_new_path(path) + clear_cache() + progress.update(100) + progress.close() - # for new, old in [[current_path, new_path], [current_movies_folder, new_movies_folder], [current_tvshows_folder, new_tvshows_folder]]: - # log('Paths:',new, old) - # NEW = new - # OLD = old - # if new.startswith("special://") or scrapertools.find_single_match(new, r'(^\w+:\/\/)'): - # new = new.replace('/profile/', '/%/').replace('/home/userdata/', '/%/') - # sep = '/' - # else: - # sep = os.sep - # if not new.endswith(sep): - # new += sep - - # if old.startswith("special://") or scrapertools.find_single_match(old, r'(^\w+:\/\/)'): - # old = old.replace('/profile/', '/%/').replace('/home/userdata/', '/%/') - # sep = '/' - # else: - # sep = os.sep - # if not old.endswith(sep): - # old += sep - - - # sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % old - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - # if records: - # idPath = records[0][0] - # strPath = records[0][1].replace(OLD, NEW) - # sql = 'UPDATE path SET strPath="%s" WHERE idPath=%s' % (strPath, idPath) - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - - # old += '%' - # sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % old - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - # if not records: - # old = '%' + old + '%' - # sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % old - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - # if records: - # for record in records: - # idPath = record[0] - # strPath = record[1].replace(OLD, NEW) - # sql = 'UPDATE path SET strPath="%s"WHERE idPath=%s' % (strPath, idPath) - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - - # sql = 'SELECT idMovie, c22 FROM movie where c22 LIKE "%s"' % old - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - # if records: - # for record in records: - # idMovie = record[0] - # strPath = record[1].replace(OLD, NEW) - # sql = 'UPDATE movie SET c22="%s" WHERE idMovie=%s' % (strPath, idMovie) - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - # sql = 'SELECT idEpisode, c18 FROM episode where c18 LIKE "%s"' % old - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) - # if records: - # for record in records: - # idEpisode = record[0] - # strPath = record[1].replace(OLD, NEW) - # sql = 'UPDATE episode SET c18="%s" WHERE idEpisode=%s' % (strPath, idEpisode) - # nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql) -# """global p -# p += 30 -# progress.update(p)""" - -def set_new_path(new, old): - write = False +def set_new_path(old, new=''): + log() SOURCES_PATH = xbmc.translatePath("special://userdata/sources.xml") if filetools.isfile(SOURCES_PATH): xmldoc = minidom.parse(SOURCES_PATH) @@ -309,46 +246,47 @@ def set_new_path(new, old): else: filetools.write(SOURCES_PATH, b'\n'.join([x for x in xmldoc.toprettyxml().encode("utf-8").splitlines() if x.strip()]), vfs=False) - # create new path - list_path = [p.firstChild.data for p in paths_node] - if new in list_path: - log("path %s already exists in sources.xml" % new) - return - log("path %s does not exist in sources.xml" % new) + if new: + # create new path + list_path = [p.firstChild.data for p in paths_node] + if new in list_path: + log("path %s already exists in sources.xml" % new) + return + log("path %s does not exist in sources.xml" % new) - # if the path does not exist we create one - source_node = xmldoc.createElement("source") + # if the path does not exist we create one + source_node = xmldoc.createElement("source") - # 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) + # 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) - # Node - path_node = xmldoc.createElement("path") - path_node.setAttribute("pathversion", "1") - path_node.appendChild(xmldoc.createTextNode(new)) - source_node.appendChild(path_node) + # Node + path_node = xmldoc.createElement("path") + path_node.setAttribute("pathversion", "1") + path_node.appendChild(xmldoc.createTextNode(new)) + source_node.appendChild(path_node) - # Node - allowsharing_node = xmldoc.createElement("allowsharing") - allowsharing_node.appendChild(xmldoc.createTextNode('true')) - source_node.appendChild(allowsharing_node) + # Node + allowsharing_node = xmldoc.createElement("allowsharing") + allowsharing_node.appendChild(xmldoc.createTextNode('true')) + source_node.appendChild(allowsharing_node) - # Añadimos a