move_videolibrary:

possibilità di disattivare l'integrazione con libreria di Kodi
This commit is contained in:
Alhaziel01
2020-03-25 15:46:36 +01:00
parent 4cd7a46c35
commit 4ce14db645
3 changed files with 104 additions and 160 deletions

View File

@@ -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):
"""

View File

@@ -35,7 +35,8 @@
<setting label="59997" type="lsep"/>
<setting id="videolibrary_kodi_flag" type="number" label="" default="0" visible="false"/>
<setting id="videolibrary_kodi_force" type="bool" label="" default="false" visible="false"/>
<setting id="videolibrary_kodi" type="bool" label="70120" enable="lt(-1,2)+eq(0,false)" default="false"/>
<setting id="videolibrary_kodi" type="bool" label="70120" default="false"/>
<!-- <setting id="videolibrary_kodi" type="bool" label="70120" enable="lt(-1,2)+eq(0,false)" default="false"/> -->
<setting id="videolibrary_max_quality" type="bool" label="70729" default="false" visible="true"/>
<setting id="next_ep" type="select" label="70746" lvalues="70752|70747|70748" default="0"/>
<setting id="next_ep_type" type="select" label="70754" lvalues="70755|70756|70757" default="0" visible="eq(-1,2)" subsetting="true"/>

View File

@@ -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")
# <name> 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)
# <name> 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)
# <path> Node
path_node = xmldoc.createElement("path")
path_node.setAttribute("pathversion", "1")
path_node.appendChild(xmldoc.createTextNode(new))
source_node.appendChild(path_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)
# <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)
# 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)
# 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)
else:
xmldoc = minidom.Document()