Página 1 de 1

Presentación y sugerencia

Publicado: 30 Ene 2017, 18:40
por OpenCode
Hola! soy un miembro "silencioso" de este foro :D y hace poquito me he decidido a intentar colaborar en este magnífico addon. Me he sumergido en el código fuente escudriñándolo para ver como funciona. Al principio no entendía algunas cosas, pero a medida que hacía pruebas me iban quedando más claras. Paso a comentar algunas cosas que he visto (y cambiado en mi versión local):

1.- Esto es una visión personal, y se trata de la categorización de los canales. Cuando seleccionamos del menú principal la opción canales, pasamos a ver un montón de categorías donde muchos canales se repiten prácticamente en todas ellas e igualmente pueden causar confusión, dado que cuando se quiere ver una película o serie ya se tienen canales preferidos o directamente se busca en el buscador global. Claro que algunas categorías si que hacen falta como por ejemplo la de adultos y quizás anime (dada su peculiar contenido). Estas categorías podrían mostrarse con el listado de canales completo, al principio de todo e incluso en otros colores para diferenciarse de los canales.

2.- A partitr de este paso está todo muy relacionado. Cada vez que se llama a getmainlist() de channelselector.py se recopila la lista de canales completa, llamando a sus xml's y leyendo algunos parámetros de los mismos. Para optimizar este proceso lo que he hecho es hacer la recopilación de canales en Launcher.py/start() (para que solo se ejecute al iniciar el plugin) en un archivo json, para luego converirlo en lista y recorrelo normalmente.

3.- Actualmente voy por este paso. En el paso anterior uso la función get_channel_parameters() de channeltools.py que hace uso de scrappertools para obtener los parámetros necesarios para construir la lista de canales. Pero hay otra función que pasa de xml a json (get_channel_json() que usa jsontools.xmltojson()) que sería más lógico usar pero aquí surgen varias cosas:
  • - Por un lado la función xmltojson() por alguna razón extrae los datos desordenados.
  • - Y por otra parte en los xml's de los canales la etiqueta settings se repite varias veces y dentro de ellas a nivel global también se repiten el nombre de algunas propiedades, con lo cual cuando se crea un diccionario con claves el contenido es sustituido por la ultima propiedad que se lea.
Estos inconvenientes explican el uso de la funcion get_channel_parameters de channeltools.py usando el scrapper para obtener justamente los parámetros necesarios, pero creo que lo ideal sería:
  • - usar otra forma de pasar de xml a json (que los parametros esten ordenados de la misma manera que el xml)
  • - y la posibilidad de cambiar los xmls de los canales sustituyendo las etiquetas settings por otras más adecuadas.
No sé si este trabajo de reordenar y reagrupar el código (porque la verdad es que poco código he escrito) es útil, a mi me lo parece a efectos de documentarlo posteriormente y utilizar funciones que ya están escritas para construir otras más complejas y construir un API más concreto y flexible.

Bufff menudo palique...en fin que me gustaría colaborar en el proyecto y de momento he empezado por aquí. Me gustaría saber si por el camino que voy es interesante o paso a otra cosa....

Pueden consultar el código de lo he he hecho aquí: https://1drv.ms/f/s!AugJYK2mbH9VgqIjYkas1eyvPCkUUQ
Estoy un poco verde en lo que se refiere a GIT y eso pero me pondré al día. ;-)

Gracias de antemano.

Re: Presentación y sugerencia

Publicado: 31 Ene 2017, 14:11
por SeiTaN
Bienvenido OpenCode,

No entiendo exactamente que quieres hacer ¿modificar toda la estructura de categorías y como se gestionan los canales?

Re: Presentación y sugerencia

Publicado: 31 Ene 2017, 15:36
por OpenCode
Gracias por la bienvenida! :-)

Bueno, más o menos, la idea sería prácticamente eliminar las categorías, a excepción de unas cuantas (adultos y anime P.E), mostrando éstas al principio de la lista completa de canales. Y por otra parte optimizar la manera en la que se construye la lista de todos los canales, generando un json donde consultar cada vez que se llama al listado completo de canales. (ver detalles en el Post 1).

Algunas cosas ya las he hecho (voy por el punto 3), es un trabajo que me puse a hacer por mi cuenta un poco por cacharrear y por buscar una manera de mejorar algo -que ojo ya de por sí me parece fantástico! ;-) - y me pregunto si, como colaborador y a modo de sugerencia, es interesante o es mejor que colabore con otras cosas... :roll:

Re: Presentación y sugerencia

Publicado: 31 Ene 2017, 16:00
por SeiTaN
¡Ah! Vale entonces yo no iba muy desencaminado.

1) Por partes, si eliminamos categorías y sólo dejamos "adultos, anime" si queremos filtrar por canales que contienen series no se sabría cual canal tiene series y cual peliculas, vale que algunos contienen las dos cosas pero no todos son así o por ejemplo documentales.

Aparte que como ahora pelisalacarta solo muestra contenido en español el aparcado de ver -canales en idioma "es"- no tiene sentido (esta idea la tengo para filtrar canales España y Latino y así se podría quitar una categoría que es "Latino).

2) Referente a la de unificar los ficheros en uno (json) depende, si ese fichero como dices se genera al entrar por primera vez, tb hay que tener en cuenta que cuando se accede a un canal, automaticamente se comprueban sus datos y se actualiza por si hay una actualización y habría que actualizar ese fichero, si metemos un "key" dentro de ese fichero general se podría hacer sencillo.

¿Has hecho pruebas de rendimiento para saber cuanto se tarda con el sistema antiguo y cuanto con el nuevo desarrollado por ti?

3) Lo ideal sería cambiar los xml por json (esto se intentó en su día), pero quien tiene que dar el visto bueno es Jesús que es quien acepta los PR.

Ventajas Json:
- simpleza al leer y acceder a sus datos.
- ya está implementadas las librerias.
- se pueden eliminar las conversiones internas de xml2json.
- simplificar la estructura actual.

Desventajas json con lo actual:
- si el fichero no está bien convertido no es posible leer nada de su contenido.

Agradecerte de nuevo como gente nueva que se incorpora, que aportes e intentes aunar puntos de vista ;)

Re: Presentación y sugerencia

Publicado: 31 Ene 2017, 20:57
por OpenCode
Correcto,

1) La idea de eliminar las categorías es más una sugerencia, como usuario me doy cuenta que casi todos los canales contienen películas y series (ciertamente documentales podría ser otra categoría aceptable dentro de mi planteamiento) y cuando me apetece ver una película o serie particular la busco mediante el buscador, o voy a un canal que sepa con seguridad que la tiene, dado que no todos los canales tienen el mismo contenido e ir buscando canal por canal a ver si tiene el contenido que busco....es simplemente inviable. El listado de canales general continua filtrado por idioma, como antes. En resumen podríamos decir que es una limpieza de categorías para un uso más agil... :P

2) En lo referente a json que contienen el listado de canales, éste contiene las propiedades del canal (xml->json) con esas propiedades se filtra la lista de canales (idioma, categorías, etc). El canal se actualiza cuando se entra en el mismo, el update lo contiene el run() del launcher.py y el updater.py comprueba que se tenga que actualizar o no. :D

Las pruebas de rendimiento no tengo ni idea de como hacerlas la verdad... :? Pero supongo (por que en realidad no lo he comprobado) que leer todos los xmls es más lento que leer un json ya creado (una sola vez).

3) Estoy totalmente de acuerdo con las ventajas del json.

Bueno continuaré por este camino a ver si logro un funcionamiento más estable (estoy a la mitad) y tengo algo más sólido que presentar como sugerencia ;-)

Re: Presentación y sugerencia

Publicado: 31 Ene 2017, 23:18
por SeiTaN
Con pruebas de rendimiento me refería a cuanto tiempo tarda en cargar los canales con el método antiguo y con el tuyo ;)

Re: Presentación y sugerencia

Publicado: 01 Feb 2017, 00:13
por super_berny
En primer lugar: ¡¡¡Bienvenido OpenCode!!!

A medida q iba leyendo tus avances he sentido una emocion contenida.... :cry: :lol: :cry: :lol:
Cada uno de los temas q has planteados los explore yo en mis inicios en este foro. Solo como ejercico melancolico he buscado aqyuellos antiguos hilos:
OpenCode escribió:1) La idea de eliminar las categorías...
Aunq no fui tan atrevido como tu, si propuse un acceso directo desde el primer menu al listado de canales: viewtopic.php?f=23&t=6595#p23440

Es cierto q hay canales generalistas q tienen de todo y por eso estan en todas (o casi todas) las categorias, pero tb es cierto q hay canales exclusivos (solo series o solo anime) y ahi si q van bien las categorias.
OpenCode escribió:2) En lo referente a json que contienen el listado de canales
Esto lo tratamos al intentar cambiar el sistema de actualizaciones, creabamos un json con todos los canales al inicio y despues teoricamente no tendriamos q volver a recorrer la carpeta de canales leyendo XMLs. No he encontrado el hilo, pero los mas antiguos aun lo recordaran.
Aqui habian 2 problemas, el primero es q realmente la lectura de todos los xml es muy rapida y practicamente no hay mejora en el rendimiento al utilizar un JSON como indice. Y el segundo es q por la manera en la q kodi gestiona sus addons no hay realmente una funcion q solo se ejecute la primera vez q abrimos el plugin. De hecho se ha modificado la funcion start del launcher por q daba problemas (puedes verlo en github)
OpenCode escribió:3.- Actualmente voy por este paso. ...
El cambio de xml a json es tb un tema antiguo, por el q tanto Seitan como yo mismo hemos peleado mucho: viewtopic.php?f=14&t=7111
Aunq ultimamente ya no estoy tan seguro de q sea una buena idea (por problemas de encoding)

Re: Presentación y sugerencia

Publicado: 01 Feb 2017, 19:27
por OpenCode
Gracias super_berny! :-D

En principio lo de las categorías era una visión personal, me pareció que sería como más ágil el uso del addon, pero es verdad que en un lado u otro siempre habrá categorías.

Con respecto al json, la verdad es que la diferencia de rendimiento al ojo humano, no es notable, no se si se ganarán algunos milisegundos, pero vamos, tiempo que no se nota en la práctica, y si la función start se ejecuta más de una vez en realidad es casi lo mismo :oops: y si además tenemos en cuenta el problema de encoding con json...¡apaga y vámonos! :lol:

Bueno, me pondré a ver si puedo dotar de más inteligencia a la lista de servidores; cuando ya tenemos un canal y un contenido seleccionado; que me he fijado que hay muchos enlaces que no tienen contenido y mostrar los que tienen contenido. Porque aun estoy un poco verde en lo de los scrappers de los servidores y la extracción de los vídeos.... :roll:

Re: Presentación y sugerencia

Publicado: 02 Feb 2017, 00:22
por super_berny
OpenCode escribió:Bueno, me pondré a ver si puedo dotar de más inteligencia a la lista de servidores; cuando ya tenemos un canal y un contenido seleccionado; que me he fijado que hay muchos enlaces que no tienen contenido y mostrar los que tienen contenido. Porque aun estoy un poco verde en lo de los scrappers de los servidores y la extracción de los vídeos....
De verdad q me alegro de cada nueva incoorporacion al equipo de desarrollo, creo sinceramente q cuantos mas seamos mejor sera el plugin y mas aprenderemos todos. Es por esto q espero no desanimarte, pero es q vas tocando todos los temas 'criticos' por asi decirlo :lol: :lol: :lol:

Fijate en este hilo: viewtopic.php?f=24&t=8643#p38908

Re: Presentación y sugerencia

Publicado: 02 Feb 2017, 15:36
por OpenCode
jajajaja jopetas, ¡voy a remolque!! :lol:

Es verdad que no he investigado el foro con todas estas sugerencias y me he dejado llevar por la emoción de las tantísimas posibilidades que tiene el addon, sin tener en cuenta la cantidad de plataformas donde se ejecuta el propio Kodi, que a la vez nos supone una limitación. :|

Bueno, pues a ver si se me ocurre alguna cosa factible.... :D (empezare a practicar con los scrappers :geek: )