Página 2 de 4

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 11 Jul 2016, 10:41
por jesus
Suena bien :)

De los temas de la biblioteca y filtros habla con Seitan, está metido de lleno con eso.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 17 Jul 2016, 17:06
por identidad_oculta
Estoy volviendo a intentar que funcione lo de configuracion.py, pero al agregar a la lista el usuarios y contraseña de los canales se usa como condición que el canal lo requiera (por que se especifica en el xml y por tanto deberia aparecer el parametro en "_data.json"), y para saber eso se le pide que mire en los ajustes del canal si existe el parámetro, pero por alguna razón el addon crea un archivo "_data.json" con todos los ajustes de los canales menos lo que corresponden con el usuario y contraseña. Lo curioso es que he seguido la pista hasta una funciona llamada "XmlToJson" en jsontools.py, pero no encuentro la razón por la cual no coge todos y cada uno los parámetros de los xml de los canales que se encuentran entre "<settings>" y "</settings>". Alguien me podría explicar por que pasa esto?
Por si no se me he explicado; pordede y hdfull requieren usuario y contraseña, pero hasta que no lo especificas en los ajustes del canal esos parámetros no aparecerán en "pordede_data.json" o "hdfull_data.json", y son necesarios para la lista dinamica de estos ajustes en configuracion.py. Le he dado vueltas y estoy casi seguro de que si no se consigue que en los archivos "_data.json" aparezca el parámetro de usuario/contraseña no se va a poder crear la lista dinámica de ajustes de usuario/contraseña en el canal configuracion.py.

Un saludo y gracias.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 17 Jul 2016, 19:00
por SeiTaN
Creo que ya he dado con tu problema de los strm que la biblioteca de Kodi no reconoce... prueba a crearlos vacíos y luego escanea la biblioteca, a ver si te vale.

Respecto a lo del config, quizás te pueda echar mejor una mano superberny, que es desarrollo suyo, yo miraría si con mac, tienes acceso a librerias json.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 17 Jul 2016, 19:06
por Cmos
Los "_data.json" creo que solo se generan una vez se modifica algún setting del canal y solo guardan aquellos que tienen algún valor, por eso no lo hace, porque por defecto tanto el usuario como el password están en blanco.

Si no me equivoco no hay ningún método en channeltools con el que puedas saber con certeza qué canal dispone de user/password porque si utilizas el channeltools.get_channel_setting te va a devolver una cadena vacía tanto si el canal dispone de esos settings (es su valor por defecto) como si no. Pero puedes crear tú uno dentro de tu función que lo haga cogiendo algo de código de aquí y allá. Por ejemplo puedes hacer algo como esto y adaptarlo a lo que quieras hacer:

Código: Seleccionar todo

    dict_users = {}
    channels_path = os.path.join(config.get_runtime_path(), "channels", '*.xml')
    # Recorre los xml de la carpeta channels
    for infile in sorted(glob.glob(channels_path)):
        channel_name = os.path.basename(infile)[:-4]
        try:
            # Saca el valor del settings del canal
            settings = channeltools.get_channel_json(channel_name)["settings"]
            for c in settings:
                # Si existe el parametro user/password guarda en un dict el valor guardado o el que tenga por defecto
                if "id" in c and c["id"] == channel_name + "user":
                    dict_users[channel_name] = {}
                    dict_users[channel_name]["user"] = config.get_setting(channel_name + "user", channel_name)
                if "id" in c and c["id"] == channel_name + "password":
                    dict_users[channel_name]["password"] = config.get_setting(channel_name + "password", channel_name)
        except:
            pass

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 18 Jul 2016, 23:37
por identidad_oculta
SeiTaN escribió:Creo que ya he dado con tu problema de los strm que la biblioteca de Kodi no reconoce... prueba a crearlos vacíos y luego escanea la biblioteca, a ver si te vale.

Respecto a lo del config, quizás te pueda echar mejor una mano superberny, que es desarrollo suyo, yo miraría si con mac, tienes acceso a librerias json.
Gracias, encuanto pueda pruebo a vaciar un strm y veo que pasa. He probado de todo, sin conseguir nada. He observado que el contenido de esa serie para ese canal es mas largo que en cualquier otra serie de las que he mirado en varios canales. No se si esto puede ser la razon.
Cmos escribió:Los "_data.json" creo que solo se generan una vez se modifica algún setting del canal y solo guardan aquellos que tienen algún valor, por eso no lo hace, porque por defecto tanto el usuario como el password están en blanco.

Si no me equivoco no hay ningún método en channeltools con el que puedas saber con certeza qué canal dispone de user/password porque si utilizas el channeltools.get_channel_setting te va a devolver una cadena vacía tanto si el canal dispone de esos settings (es su valor por defecto) como si no. Pero puedes crear tú uno dentro de tu función que lo haga cogiendo algo de código de aquí y allá. Por ejemplo puedes hacer algo como esto y adaptarlo a lo que quieras hacer:

Código: Seleccionar todo

    dict_users = {}
    channels_path = os.path.join(config.get_runtime_path(), "channels", '*.xml')
    # Recorre los xml de la carpeta channels
    for infile in sorted(glob.glob(channels_path)):
        channel_name = os.path.basename(infile)[:-4]
        try:
            # Saca el valor del settings del canal
            settings = channeltools.get_channel_json(channel_name)["settings"]
            for c in settings:
                # Si existe el parametro user/password guarda en un dict el valor guardado o el que tenga por defecto
                if "id" in c and c["id"] == channel_name + "user":
                    dict_users[channel_name] = {}
                    dict_users[channel_name]["user"] = config.get_setting(channel_name + "user", channel_name)
                if "id" in c and c["id"] == channel_name + "password":
                    dict_users[channel_name]["password"] = config.get_setting(channel_name + "password", channel_name)
        except:
            pass
Gracias, en cuanto vuelva a ponerme con el asunto agrego eso. No tengo conocimiento alguno de Python, bastante me cuesta itentar comprender lo que veo y esas lineas no habria podido redactarlas con facilidad.

Un saludo!

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 21 Jul 2016, 16:48
por identidad_oculta
Tras darle vueltas y gracias a vuestra ayuda y a el código de Cmos hoy he tenido buena mañana y he logrado añadir a el canal "configuración" los ajustes de usuario y contraseña de los canales que lo requieren. A medida que lo iba haciendo he observado que la mayoría de los canales tienen especificado el usuario como ' channel_name + "user" ', pero otros solo tienen ' "user" ', así que lo he adaptado para que funcione con ambos casos. Podéis ver los cambios AQUI. Lo he probado y todo parece funcionar bien, pero si lo probáis y detectáis algún problema decídmelo por favor.

Un saludo.

PD: Todo esta hecho con base en el ultimo PR de la rama "develop" de jesus.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 21 Jul 2016, 18:13
por SeiTaN
Hola,

Lo que haces es mostrar los canales con user/password en el canal de configuración y permitir modificarlos desde una ventana, no?

No lo he probado y espero no meter el patazo, pero si me han ocurrido posibles mejoras, corrijeme si me equivoco ;)

- No se porque haces dos bucles, ¿porque no recorrer una vez? ordenar la lista alfabeticamente, y primero buscar si tiene user| canaluser y password|canalpassword. Si no tiene esto haces un "continue", lo de comprobar si el canal está activo, adulto (solo lo pondría si tiene puesto que no se muestren y no estoy seguro si hay cuentas que se configuren para contenido porno) , y los idiomas.. no lo veo claro, me explico, si entras para ver tus cuentas configuradas te debería dar igual si el canal está activo o no, ¿que vas a listar 6 en vez de 4 por ejemplo? Lo que quiero es ver los canales que tienen configuración de cuenta.

Si quieres diferenciar el canal que está activo y el que no, podrías cambiarle el color al elemento, gris (inactivo), azul (activo) por ejemplo.

- Referente a buscar user y canaluser he visto que el codigo es un 80% igual, ¿por que no poner un indicador y dependiendo de si ese indicador es user haces su "set" y si es canaluser haces el otro "set"?

- Otra cosilla, si has encontrado el user y pass del canal, yo pondría un "break" en "for c in settings:", ya que no tiene sentido que lo sigas recorriendo.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 21 Jul 2016, 19:05
por identidad_oculta
SeiTaN escribió:Hola,

Lo que haces es mostrar los canales con user/password en el canal de configuración y permitir modificarlos desde una ventana, no?

No lo he probado y espero no meter el patazo, pero si me han ocurrido posibles mejoras, corrijeme si me equivoco ;)

- No se porque haces dos bucles, ¿porque no recorrer una vez? ordenar la lista alfabeticamente, y primero buscar si tiene user| canaluser y password|canalpassword. Si no tiene esto haces un "continue", lo de comprobar si el canal está activo, adulto (solo lo pondría si tiene puesto que no se muestren y no estoy seguro si hay cuentas que se configuren para contenido porno) , y los idiomas.. no lo veo claro, me explico, si entras para ver tus cuentas configuradas te debería dar igual si el canal está activo o no, ¿que vas a listar 6 en vez de 4 por ejemplo? Lo que quiero es ver los canales que tienen configuración de cuenta.

Si quieres diferenciar el canal que está activo y el que no, podrías cambiarle el color al elemento, gris (inactivo), azul (activo) por ejemplo.

- Referente a buscar user y canaluser he visto que el codigo es un 80% igual, ¿por que no poner un indicador y dependiendo de si ese indicador es user haces su "set" y si es canaluser haces el otro "set"?

- Otra cosilla, si has encontrado el user y pass del canal, yo pondría un "break" en "for c in settings:", ya que no tiene sentido que lo sigas recorriendo.
Gracias por tu respuesta. Lo que he conseguido que funcione se usa para lo que has dicho, que busque que canales requieren el usuario y contraseña y poder modificarlos desde ahi. Mientras lo hacia me he dado cuenta de algunas de las cosas que comentas, como el doble bucle, pero el objetivo principal era que funcionase y después pediros consejo, así que le dedicare otro rato a corregir esas cosas y afinarlo.

De todo lo que has dicho lo del "set" no se lo que es, si pudieras decirme algún ejemplo o de algún sitio del add-on donde ver algo parecido te lo agradecería. Lo demás que dices tiene sentido, son cosillas que se me han escapado al resumir el código (antes del resumen daba miedo), y me costaría bastante hacerlo, pero bueno, como lo demás, echándole un poco de imaginación y a prueba y error espero poder sacarlo.

Un saludo y gracias.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 21 Jul 2016, 19:13
por SeiTaN
Con lo del "set" me refiero a esto

Código: Seleccionar todo

# Si existe el parametro user/password guarda en un dict el valor guardado o el que tenga por defecto
                if "id" in c and c["id"] == channel_name + "user":
                    dict_users[channel_name] = {}
                    if config.get_setting("needsusrandpass", channel_name) != "yes":
                        config.set_setting("needsusrandpass", "yes", channel_name)
                        logger.info("Se requiere U/P y se ha especificado")
                    dict_users[channel_name]["user"] = config.get_setting(channel_name +
                                                                          "user", channel_name)
                if "id" in c and c["id"] == channel_name + "password":
                    dict_users[channel_name]["password"] = config.get_setting(channel_name +
                                                                              "password",
                                                                              channel_name)

Código: Seleccionar todo

 # Algunos canales usan "user" en vez de channel_name+"user", y igual con password
                if "id" in c and c["id"] == "user":
                    dict_users[channel_name] = {}
                    if config.get_setting("needsusrandpass", channel_name) != "yes":
                        config.set_setting("needsusrandpass", "yes_alt", channel_name)
                        logger.info("Se requiere U/P y se ha especificado")
                    dict_users[channel_name]["user"] = config.get_setting("user", channel_name)
                if "id" in c and c["id"] == "password":
                    dict_users[channel_name]["password"] = config.get_setting("password",
                                                                              channel_name)
El codigo es más del 80% igual y solo varía el if y valor para hacer obtener la variable (lo que decia del "set", he sido poco claro perdona).

Aparte que si haces un bucle en vez de dos, no veo necesidad de generar y luego comprobar if config.get_setting("needsusrandpass", channel_name) != "yes":

Saludos.

Re: Dudas sobre mis primeros aportes y otras cosas

Publicado: 24 Jul 2016, 16:05
por identidad_oculta
Lo he revisado y modificado según las indicaciones de SeiTaN y alguna cosilla que se me ha ocurrido sobre la marcha. Creo que ahora esta mejor organizado y da menos vueltas que antes. dejo el enlace configuracion.py completo y el commit con los cambios que he hecho hoy respecto a la version anterior. Como siempre, agradezco cualquier comentario.

Un saludo!