diff --git a/platformcode/config.py b/platformcode/config.py
index a9ab5555..e8ffa8b6 100644
--- a/platformcode/config.py
+++ b/platformcode/config.py
@@ -219,22 +219,30 @@ def open_settings():
set_setting('adult_aux_new_password1', '')
set_setting('adult_aux_new_password2', '')
- # 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)
+ xbmc.sleep(2000)
+ xbmc_videolibrary.update(settings_post.get("folder_movies", None))
+ xbmc_videolibrary.update(settings_post.get("folder_tvshows", None))
+ elif settings_pre.get("videolibrary_kodi", None) and not settings_post.get("videolibrary_kodi", None) \
+ and settings_post.get("videolibrary_kodi_flag", None) == 2:
+ 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()"""
+ 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))
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/community.py b/specials/community.py
index ca23084f..c9fa08a2 100644
--- a/specials/community.py
+++ b/specials/community.py
@@ -559,7 +559,8 @@ def filter_thread(filter, key, item, description):
id = results['id']
if id:
thumbnail = 'http://image.tmdb.org/t/p/original' + results['profile_path'] if results['profile_path'] else item.thumbnail
- json_file = httptools.downloadpage('http://api.themoviedb.org/3/person/'+ str(id) + '?api_key=' + tmdb_api + '&language=%s', lang, use_requests=True).data
+ json_file = httptools.downloadpage('http://api.themoviedb.org/3/person/'+ str(id) + '?api_key=' + tmdb_api + '&language=en', use_requests=True).data
+ support.log(json_file)
plot += jsontools.load(json_file)['biography']
if description:
diff --git a/specials/move_videolibrary.py b/specials/move_videolibrary.py
index 726eb5e9..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()
@@ -56,6 +17,9 @@ def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_
log('current tvshows folder:', current_tvshows_folder)
log('new tvshows folder:', new_tvshows_folder)
+ backup_current_path = current_path
+ backup_new_path = new_path
+
if current_path != new_path or current_movies_folder != new_movies_folder or current_tvshows_folder != new_tvshows_folder:
notify = False
progress = platformtools.dialog_progress_bg(config.get_localized_string(20000), config.get_localized_string(80011))
@@ -83,22 +47,26 @@ def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_
if current_path != new_path and not filetools.listdir(current_path) and not "plugin.video.kod\\videolibrary" in current_path:
filetools.rmdirtree(current_path)
- progress.update(90, config.get_localized_string(20000), config.get_localized_string(80013))
if config.is_xbmc() and config.get_setting("videolibrary_kodi"):
- set_new_path(new_path, current_path)
- update_db(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:
+ progress.update(90, config.get_localized_string(20000), config.get_localized_string(80013))
progress.update(100)
progress.close()
if notify:
- platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80014), icon=0,
- time=5000, sound=False)
+ platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80014), icon=0, time=5000, sound=False)
-def update_db(new, old):
- NEW = new
- OLD = old
+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
+
+ # rename main path for search in the DB
if new.startswith("special://") or scrapertools.find_single_match(new, r'(^\w+:\/\/)'):
new = new.replace('/profile/', '/%/').replace('/home/userdata/', '/%/')
sep = '/'
@@ -115,47 +83,147 @@ def update_db(new, old):
if not old.endswith(sep):
old += sep
-
+ # search MAIN path in the DB
sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % old
nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+
+ # change main path
if records:
idPath = records[0][0]
- strPath = records[0][1].replace(OLD, NEW)
+ strPath = records[0][1].replace(current_path, new_path)
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
+ p = 80
+ progress.update(90, config.get_localized_string(20000), config.get_localized_string(80013))
+
+ OLD = old
+ for OldPath, NewPath in [[current_movies_folder, new_movies_folder], [current_tvshows_folder, new_tvshows_folder]]:
+ old = OLD + OldPath
+ if not old.endswith(sep): old += sep
+
+ # Search Main Sub Folder
+ sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % old
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+
+ # Change Main Sub Folder
+ if records:
+ for record in records:
+ idPath = record[0]
+ strPath = record[1].replace(filetools.join(current_path, OldPath), filetools.join(new_path, NewPath))
+ sql = 'UPDATE path SET strPath="%s"WHERE idPath=%s' % (strPath, idPath)
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+
+ # Search if Sub Folder exixt in all paths
+ old += '%'
+ sql = 'SELECT idPath, strPath FROM path where strPath LIKE "%s"' % old
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+
+ #Change Sub Folder in all paths
+ if records:
+ for record in records:
+ idPath = record[0]
+ strPath = record[1].replace(filetools.join(current_path, OldPath), filetools.join(new_path, NewPath))
+ sql = 'UPDATE path SET strPath="%s"WHERE idPath=%s' % (strPath, idPath)
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+
+
+ if OldPath == current_movies_folder:
+ # if is Movie Folder
+ # search and modify in "movie"
+ 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(filetools.join(current_path, OldPath), filetools.join(new_path, NewPath))
+ sql = 'UPDATE movie SET c22="%s" WHERE idMovie=%s' % (strPath, idMovie)
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+ else:
+ # if is Tv Show Folder
+ # search and modify in "episode"
+ 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(filetools.join(current_path, OldPath), filetools.join(new_path, NewPath))
+ sql = 'UPDATE episode SET c18="%s" WHERE idEpisode=%s' % (strPath, idEpisode)
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+ p += 5
+ progress.update(90, config.get_localized_string(20000), config.get_localized_string(80013))
+
+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"' % path
nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+
+ # change main path
+ if records:
+ idPath = records[0][0]
+ sql = 'DELETE from path WHERE idPath=%s' % idPath
+ nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
+ progress.update(20)
+
+ 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:
for record in records:
idPath = record[0]
- strPath = record[1].replace(OLD, NEW)
- sql = 'UPDATE path SET strPath="%s"WHERE idPath=%s' % (strPath, idPath)
+ sql = 'DELETE from path WHERE idPath=%s' % idPath
nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
- # dbg()
- sql = 'SELECT idMovie, c22 FROM movie where c22 LIKE "%s"' % old
+ # search path in the db
+ 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:
for record in records:
idMovie = record[0]
- strPath = record[1].replace(OLD, NEW)
- sql = 'UPDATE movie SET c22="%s" WHERE idMovie=%s' % (strPath, idMovie)
+ sql = 'DELETE from movie WHERE idMovie=%s' % idMovie
nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
- sql = 'SELECT idEpisode, c18 FROM episode where c18 LIKE "%s"' % old
+
+ # 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]
- strPath = record[1].replace(OLD, NEW)
- sql = 'UPDATE episode SET c18="%s" WHERE idEpisode=%s' % (strPath, idEpisode)
+ sql = 'DELETE from episode WHERE idEpisode=%s' % idEpisode
nun_records, records = xbmc_videolibrary.execute_sql_kodi(sql)
- """global p
- p += 30
- progress.update(p)"""
+ progress.update(80)
+ set_new_path(path)
+ clear_cache()
+ progress.update(100)
+ progress.close()
-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)
@@ -178,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