fix adult with types and setting.xml

This commit is contained in:
alfa_addon_10
2017-08-17 23:39:49 +02:00
parent 53388a34ab
commit fc51e0bc4e
5 changed files with 33 additions and 88 deletions
+1 -1
View File
@@ -101,7 +101,7 @@ def generos(item):
matches = scrapertools.find_multiple_matches(data, '<li class="cat-item cat-item-.*?><a href="([^"]+)".*?>(.*?)<b>') matches = scrapertools.find_multiple_matches(data, '<li class="cat-item cat-item-.*?><a href="([^"]+)".*?>(.*?)<b>')
for scrapedurl, scrapedtitle in matches: for scrapedurl, scrapedtitle in matches:
if scrapedtitle == "Eroticas +18 " and config.get_setting("adult_mode") != "0": if scrapedtitle == "Eroticas +18 " and config.get_setting("adult_mode") != 0:
itemlist.append(item.clone(action="eroticas", title=scrapedtitle, url=scrapedurl)) itemlist.append(item.clone(action="eroticas", title=scrapedtitle, url=scrapedurl))
elif (scrapedtitle != "Estrenos ") and (scrapedtitle != "Próximos Estrenos "): elif (scrapedtitle != "Estrenos ") and (scrapedtitle != "Próximos Estrenos "):
itemlist.append(item.clone(action="entradas", title=scrapedtitle, url=scrapedurl)) itemlist.append(item.clone(action="entradas", title=scrapedtitle, url=scrapedurl))
+1 -1
View File
@@ -222,7 +222,7 @@ def show_result(item):
if item.adult and config.get_setting("adult_request_password"): if item.adult and config.get_setting("adult_request_password"):
# Solicitar contraseña # Solicitar contraseña
tecleado = platformtools.dialog_input("", "Contraseña para canales de adultos", True) tecleado = platformtools.dialog_input("", "Contraseña para canales de adultos", True)
if tecleado is None or tecleado != config.get_setting("adult_pin"): if tecleado is None or tecleado != config.get_setting("adult_password"):
return [] return []
item.channel = item.__dict__.pop('from_channel') item.channel = item.__dict__.pop('from_channel')
+26 -79
View File
@@ -8,7 +8,6 @@ import re
import xbmc import xbmc
import xbmcaddon import xbmcaddon
import xbmcgui
PLUGIN_NAME = "alfa" PLUGIN_NAME = "alfa"
@@ -112,18 +111,12 @@ def open_settings():
# Cambio de contraseña # Cambio de contraseña
if settings_post['adult_aux_new_password1']: if settings_post['adult_aux_new_password1']:
if settings_post['adult_aux_new_password1'] == settings_post['adult_aux_new_password2']: if settings_post['adult_aux_new_password1'] == settings_post['adult_aux_new_password2']:
adult_password = set_setting('adult_password', settings_post['adult_aux_new_password1']) set_setting('adult_password', settings_post['adult_aux_new_password1'])
else: else:
platformtools.dialog_ok("Canales para adultos", platformtools.dialog_ok("Canales para adultos",
"Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden.", "Los campos 'Nueva contraseña' y 'Confirmar nueva contraseña' no coinciden.",
"Entre de nuevo en 'Preferencias' para cambiar la contraseña") "Entre de nuevo en 'Preferencias' para cambiar la contraseña")
# Fijar adult_pin
adult_pin = ""
if settings_post["adult_request_password"] == True:
adult_pin = adult_password
set_setting("adult_pin", adult_pin)
else: else:
platformtools.dialog_ok("Canales para adultos", "La contraseña no es correcta.", platformtools.dialog_ok("Canales para adultos", "La contraseña no es correcta.",
"Los cambios realizados en esta sección no se guardaran.") "Los cambios realizados en esta sección no se guardaran.")
@@ -156,13 +149,13 @@ def get_setting(name, channel="", server="", default=None):
""" """
Retorna el valor de configuracion del parametro solicitado. Retorna el valor de configuracion del parametro solicitado.
Devuelve el valor del parametro 'name' en la configuracion global, en la configuracion propia del canal 'channel' Devuelve el valor del parametro 'name' en la configuracion global, en la configuracion propia del canal 'channel'
o en la del servidor 'server'. o en la del servidor 'server'.
Los parametros channel y server no deben usarse simultaneamente. Si se especifica el nombre del canal se devolvera Los parametros channel y server no deben usarse simultaneamente. Si se especifica el nombre del canal se devolvera
el resultado de llamar a channeltools.get_channel_setting(name, channel, default). Si se especifica el nombre del el resultado de llamar a channeltools.get_channel_setting(name, channel, default). Si se especifica el nombre del
servidor se devolvera el resultado de llamar a servertools.get_channel_setting(name, server, default). Si no se servidor se devolvera el resultado de llamar a servertools.get_channel_setting(name, server, default). Si no se
especifica ninguno de los anteriores se devolvera el valor del parametro en la configuracion global si existe o especifica ninguno de los anteriores se devolvera el valor del parametro en la configuracion global si existe o
el valor default en caso contrario. el valor default en caso contrario.
@param name: nombre del parametro @param name: nombre del parametro
@@ -175,7 +168,7 @@ def get_setting(name, channel="", server="", default=None):
@type default: cualquiera @type default: cualquiera
@return: El valor del parametro 'name' @return: El valor del parametro 'name'
@rtype: El tipo del valor del parametro @rtype: El tipo del valor del parametro
""" """
@@ -206,35 +199,20 @@ def get_setting(name, channel="", server="", default=None):
value = xbmc.translatePath(value) value = xbmc.translatePath(value)
# hack para devolver el tipo correspondiente # hack para devolver el tipo correspondiente
settings_types = get_settings_types() if value == "true":
return True
if settings_types.get(name) in ['enum', 'number']: elif value == "false":
try: return False
value = int(value) else:
except Exception, ex: # special case return as str
from platformcode import logger if name in ["adult_password", "adult_aux_intro_password", "adult_aux_new_password1", "adult_aux_new_password2"]:
logger.error("Error al convertir '%s' de tipo 'enum','number' \n%s" % (name, ex)) return value
else:
elif settings_types.get(name) == 'bool': try:
value = value == 'true' value = int(value)
except ValueError:
elif name not in settings_types: pass
try: return value
if value in ['true', 'false']:
if value == 'true':
aux_val = True
else:
aux_val = False
value = bool(aux_val)
else:
t = eval(value)
value = t[0](t[1])
except Exception, ex:
from platformcode import logger
logger.error("Error al convertir '%s' se pasa como tipo 'None'\n%s" % (name, ex))
value = None
return value
def set_setting(name, value, channel="", server=""): def set_setting(name, value, channel="", server=""):
@@ -269,25 +247,16 @@ def set_setting(name, value, channel="", server=""):
return servertools.set_server_setting(name, value, server) return servertools.set_server_setting(name, value, server)
else: else:
try: try:
settings_types = get_settings_types() if isinstance(value, bool):
if settings_types.get(name) == 'bool':
if value: if value:
new_value = "true" value = "true"
else: else:
new_value = "false" value = "false"
elif settings_types.get(name): elif isinstance(value, (int, long)):
new_value = str(value) value = str(value)
else: __settings__.setSetting(name, value)
if isinstance(value, basestring):
new_value = "(%s, %s)" % (type(value).__name__, repr(value))
else:
new_value = "(%s, %s)" % (type(value).__name__, value)
__settings__.setSetting(name, new_value)
except Exception, ex: except Exception, ex:
from platformcode import logger from platformcode import logger
@@ -297,28 +266,6 @@ def set_setting(name, value, channel="", server=""):
return value return value
def get_settings_types():
"""
Devuelve un diccionario con los parametros (key) de la configuracion global y sus tipos (value)
:return: dict
"""
win10000 = xbmcgui.Window(10000)
settings_types = win10000.getProperty(PLUGIN_NAME + "_settings_types")
if not settings_types:
infile = open(os.path.join(get_runtime_path(), "resources", "settings.xml"))
data = infile.read()
infile.close()
matches = re.findall('<setting id="([^"]*)" type="([^"]*)', data)
settings_types = "{%s}" % ",".join("'%s': '%s'" % tup for tup in matches)
win10000.setProperty(PLUGIN_NAME + "_settings_types", settings_types)
return eval(settings_types)
def get_localized_string(code): def get_localized_string(code):
dev = __language__(code) dev = __language__(code)
+2 -2
View File
@@ -129,9 +129,9 @@ def run(item=None):
# Parental control # Parental control
# If it is an adult channel, and user has configured pin, asks for it # If it is an adult channel, and user has configured pin, asks for it
if channeltools.is_adult(item.channel) and config.get_setting("adult_pin") != "": if channeltools.is_adult(item.channel) and config.get_setting("adult_request_password"):
tecleado = platformtools.dialog_input("", "Contraseña para canales de adultos", True) tecleado = platformtools.dialog_input("", "Contraseña para canales de adultos", True)
if tecleado is None or tecleado != config.get_setting("adult_pin"): if tecleado is None or tecleado != config.get_setting("adult_password"):
return return
# # Actualiza el canal individual # # Actualiza el canal individual
+3 -5
View File
@@ -235,12 +235,10 @@ if __name__ == "__main__":
import xbmc import xbmc
# modo adulto: # modo adulto:
# Conversion de False y True al sitema actual 0: Nunca, 1:Siempre, 2:Solo hasta que se reinicie Kodi # sistema actual 0: Nunca, 1:Siempre, 2:Solo hasta que se reinicie Kodi
# y si es == 2 lo desactivamos. # si es == 2 lo desactivamos.
if config.get_setting("adult_mode") == False or config.get_setting("adult_mode") == 2: if config.get_setting("adult_mode") == 2:
config.set_setting("adult_mode", 0) config.set_setting("adult_mode", 0)
elif config.get_setting("adult_mode") == True:
config.set_setting("adult_mode", 1)
update_wait = [0, 10000, 20000, 30000, 60000] update_wait = [0, 10000, 20000, 30000, 60000]
wait = update_wait[int(config.get_setting("update_wait", "videolibrary"))] wait = update_wait[int(config.get_setting("update_wait", "videolibrary"))]