Manual para creación de canales

En el equipo Alfa hemos decidido inculcar un poco de cultura a los usuarios y porque no, también a desarrolladores para que puedan aprender a programar o mejorar sus conocimientos, Alfa como siempre lo dijimos no solo pretende entretener, también pretende que los usuarios obtengan cierta independencia y conocimiento suficiente el cual les permita poder crear o reparar sus propios canales, addons y no depender de que alguien haga el trabajo por ellos, esperamos sea de utilidad para muchos!

Como somos un addon que publica su codigo en github y nos gustaria ver nuevos desarrolladores, vamos a aportar nuestro granito de arena.

Las preguntas se hacen en público para que otros puedan aprender.

Equipo Alfa
 

Adjuntos

He mirado la web primera que me has puesto y he podido sacar estos dos codigos:

Código:
patron  = '(?is)MvTbImg B.*?href="([^"]+)".*?'
patron += 'src="([^"]+)".*?'

Donde estoy teniendo mas problemas es en el apartado que tu me comentas, donde aparece Num...
Esos dos patrones que te he puesto anteriormente van bien encaminados? Mirando creo que vinculan a donde deberian, pero en donde marcaria el numero del episodio no doy con la tecla, he probado varias formas en local y no logro dar con la tecla.

o_O

veamos... En el mensaje anterior te di el ejemplo para obtener el numero de episodio, ese deberia ser tu primer patron,

class="Num">21</span>

class="Num">(\d+)<.*?

a continuación deberías obtener el thumbnail de

class="MvTbImg"><img src="https://elhogardelaprendiz.es/wp-co...to-y-su-pandilla-7924-episode-21-season-1.jpg"

class="MvTbImg"><img src="([^"]+)".*?


y finalmente la url y el titulo del episodio que esta en:

class="MvTbTtl"><a href="Don Gato y su pandilla 1x21 Archives - El Hogar del Aprendiz">Mono espacial</a>

class="MvTbTtl"><a href="([^"]+)">([^<]+)<

y luego ya deberias ajustar el for para utilizar todo lo que obtiene

for num_epi, thumb, url, title in matches:
.
.
.

Practicamente esta hecho, analizalos y veras que es sencillo.

Saludos
 
Buenas noches de nuevo. He estado mirando el tema de for num_epi... y ahi sigo dandoles vuelta al tema.
He estado mirando primero las expresiones que me pusistes:
Código:
class="Num">(\d+)<.*?
etc...
más que nada para no ser un copiar y pegar y ya que estamos aprender un poco de esto que me va a venir muy bien.

En cuanto a lo de for...
1- No deberian tener el termino scraped delante? scrapednum_epi y asi con todas?
2- He puesto
Código:
title="1x%s - %s" % (num_epi, item.contentSerieName)
3-
Código:
itemlist.append(item.clone(action='findvideos', episode=num_epi, thumbnail=thumb, url=url, title=title, type=item.type,
                                   infoLabels=item.infoLabels))
Aqui he agregado las expresiones como me pusistes, obviamente, al probarlo en local no funciona :mad:. De todas formas, hoy he tenido poco tiempo para ponerme aqui, espero mañana estar menos espeso y poder seguir un ratin mas.

Saludos y muchas gracias !!!
 
Buenas de nuevo. Sigo peleandome con esto un poco, he estado mirando por internet para orientarme algo y ha quedado asi:

Código:
def episodios(item):
   logger.info()
   itemlist = list()
   data = httptools.downloadpage(item.url).data
   data = data.replace('"ep0','"epp"')
   patron  = 'class="Num">(\d+)<.*?'
   patron += 'class="MvTbImg"><img src="([^"]+)".*?'
   patron += 'class="MvTbTtl"><a href="([^"]+)">([^<]+)<'
   matches = scrapertools.find_multiple_matches(data, patron)
   for scrapednum_epi, scrapedthumbnail, scrapedurl, scrapedtitle in matches:
       title="1x%s - %s" % (episode, item.contentSerieName)
       #urls = scrapertools.find_multiple_matches(scrapedurls, 'href="([^"]+)')
       itemlist.append(item.clone(action='findvideos', episodios=scrapednum_epi, thumbnail=scrapedthumbnail, url=scrapedurl, title=title, type=item.type,
                                  infoLabels=item.infoLabels))
   if config.get_videolibrary_support() and len(itemlist) > 0:
       itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]",
                            url=item.url, action="add_serie_to_library", extra="episode",
                            contentSerieName=item.contentSerieName))
   return itemlist
 
Hola!

Estoy intentando crear un canal para la televisión de galicia, pero me he topado con un problema que no se como resolver y es que me es imposible crear un regex para obtener los episodios, ya que estos no aparecen listados de ninguna forma en el codigo fuente.
Mi progreso actual lo tengo en github y, por ejemplo, la página de uno de los programas sería esta, en la que los episodios se encuentran listados en el final de ella. Los episodios estan divididos en varias páginas, pero que no tienen un enlace distinto cada uno, si no que actualiza la información en la misma página, motivo por el cual entiendo que los episodios no aparecen listados en el codigo fuente.
Por lo de ahora lo que tengo hecho funciona, he conseguido que en el addon se muestren las distintas categorias y dentro de ellas los programas que hay, así como una página de destacados.

Gracias por el excelente manual!
 
Hola, soy Miguel Ángel!

Querría añadir 3 canales nuevos, soy desarrollador desde hace años pero nunca me había puesto con Python. Estoy usando vuestro MediaServer y me gustaría mostrar en consola o en un fichero ciertos datos para poder depurar el código de mis nuevos canales ¿es posible o debo de instalar Kodi?

He probado a utilizar print("mensaje"), logger.info("mensaje"), logger.debug("mensaje" y hasta logger.error("mensaje") pero no veo nada ni en la consola de mi navegador Web ni en la consola desde donde lanzo "python -d alfa.py";

Y por supuesto mil gracias por el esfuerzo por hacer y mantener Alfa y los canales. Es impresionante todo el trabajo que hacéis y muchas veces en tiempo real.

Gracias de antemano,
Miguel Ángel.
 
Última edición:
Me respondo a mí mismo: sí que se puede usar la función "print" (por ejemplo print("mensaje")) usando el MediaServer, se ve en la consola desde donde se lanza python. Mi problema era que algún tipo de error no lanzaba mi canal nuevo y nunca llegaba a ejecutar el print.

Hola, soy Miguel Ángel!

Querría añadir 3 canales nuevos, soy desarrollador desde hace años pero nunca me había puesto con Python. Estoy usando vuestro MediaServer y me gustaría mostrar en consola o en un fichero ciertos datos para poder depurar el código de mis nuevos canales ¿es posible o debo de instalar Kodi?

He probado a utilizar print("mensaje"), logger.info("mensaje"), logger.debug("mensaje" y hasta logger.error("mensaje") pero no veo nada ni en la consola de mi navegador Web ni en la consola desde donde lanzo "python -d alfa.py";

Y por supuesto mil gracias por el esfuerzo por hacer y mantener Alfa y los canales. Es impresionante todo el trabajo que hacéis y muchas veces en tiempo real.

Gracias de antemano,
Miguel Ángel.
 
Para poder hacer mis tests y aprender sobre cómo crear un canal he hecho un clon de GNula con un "id" y name "distinto" (nombres de fichero "kinoz_to.json" y "kinoz_to.py") y bajo MediaServer todo va bien pero al copiarlo en la carpeta de ".kodi/addons/plugin.video.alfa/channels" no me va en Kodi. Según el log mi problema es el siguiente:


13:26:04.183 T:139794706052864 NOTICE: alfa.platformcode.launcher [run] action= 'mainlist', category= 'Kinox to', channel= 'kinoxto', contentPlot= '[COLOR yellow]Tipo de contenido:[/COLOR] Movies [COLOR yellow]Idiomas:[/COLOR] Latino, Castellano', context= [], fanart= '', frequency= 0, infoLabels= {'plot': '[COLOR yellow]Tipo de contenido:[/COLOR] Movies\n\n[COLOR yellow]Idiomas:[/COLOR] Latino, Castellano'}, language= ['lat', 'cast'], thumbnail= 'https://www.kinoz.to/cs/themes/default/Header/Default.png', title= 'Kinox to', viewmode= 'list' 13:26:04.184 T:139794706052864 NOTICE: alfa.core.channeltools [is_adult] channel_name=kinoxto 13:26:04.184 T:139794706052864 ERROR: ######## ERROR ######### 13:26:04.184 T:139794706052864 ERROR: [alfa.core.channeltools.get_channel_parameters] kinoxto.json error 13:26:04.184 T:139794706052864 NOTICE: alfa.platformcode.launcher [run] channel_file=/home/mfuentes/.kodi/addons/plugin.video.alfa/channels/kinoxto.py 13:26:04.184 T:139794706052864 ERROR: ######## ERROR ######### 13:26:04.184 T:139794706052864 ERROR: [alfa.platformcode.launcher.run] Traceback (most recent call last): File "/home/mfuentes/.kodi/addons/plugin.video.alfa/platformcode/launcher.py", line 160, in run logger.info("Running channel %s | %s" % (channel.__name__, channel.__file__)) AttributeError: 'NoneType' object has no attribute '__name__'


Me da la impresión de que en Kodi no basta con copiar y pegar mis ficheros sino que tendría que hacer algo más ¿es así?
 
Para poder hacer mis tests y aprender sobre cómo crear un canal he hecho un clon de GNula con un "id" y name "distinto" (nombres de fichero "kinoz_to.json" y "kinoz_to.py") y bajo MediaServer todo va bien pero al copiarlo en la carpeta de ".kodi/addons/plugin.video.alfa/channels" no me va en Kodi. Según el log mi problema es el siguiente:


13:26:04.183 T:139794706052864 NOTICE: alfa.platformcode.launcher [run] action= 'mainlist', category= 'Kinox to', channel= 'kinoxto', contentPlot= '[COLOR yellow]Tipo de contenido:[/COLOR] Movies [COLOR yellow]Idiomas:[/COLOR] Latino, Castellano', context= [], fanart= '', frequency= 0, infoLabels= {'plot': '[COLOR yellow]Tipo de contenido:[/COLOR] Movies\n\n[COLOR yellow]Idiomas:[/COLOR] Latino, Castellano'}, language= ['lat', 'cast'], thumbnail= 'https://www.kinoz.to/cs/themes/default/Header/Default.png', title= 'Kinox to', viewmode= 'list' 13:26:04.184 T:139794706052864 NOTICE: alfa.core.channeltools [is_adult] channel_name=kinoxto 13:26:04.184 T:139794706052864 ERROR: ######## ERROR ######### 13:26:04.184 T:139794706052864 ERROR: [alfa.core.channeltools.get_channel_parameters] kinoxto.json error 13:26:04.184 T:139794706052864 NOTICE: alfa.platformcode.launcher [run] channel_file=/home/mfuentes/.kodi/addons/plugin.video.alfa/channels/kinoxto.py 13:26:04.184 T:139794706052864 ERROR: ######## ERROR ######### 13:26:04.184 T:139794706052864 ERROR: [alfa.platformcode.launcher.run] Traceback (most recent call last): File "/home/mfuentes/.kodi/addons/plugin.video.alfa/platformcode/launcher.py", line 160, in run logger.info("Running channel %s | %s" % (channel.__name__, channel.__file__)) AttributeError: 'NoneType' object has no attribute '__name__'


Me da la impresión de que en Kodi no basta con copiar y pegar mis ficheros sino que tendría que hacer algo más ¿es así?


En primer lugar, es agradable saber que aun hay personas interesadas en aprender y colaborar con el proyecto.

Sobre tu problema revisa que en el json de canal tengas bien definido el id, debe ser el mismo nombre del py.

Te recomiendo abrir un hilo en la sección desarrolladores para poder seguir tu avance con el canal, en esa misma sección tienes un mini canal de muestra bastante simple que puedes mirar como guia.
 
Mil gracias, tenías razón, al final me di cuenta por casualidad :eek:. Me pasaré por el hilo de desarrolladores para preguntar una duda sobre algo.


Mil gracias de nuevo por mantener vivo Alfa, vuestra tarea es vital para muchísima gente que busca relajarse un rato disfrutando de contenidos digitales.





En primer lugar, es agradable saber que aun hay personas interesadas en aprender y colaborar con el proyecto.

Sobre tu problema revisa que en el json de canal tengas bien definido el id, debe ser el mismo nombre del py.

Te recomiendo abrir un hilo en la sección desarrolladores para poder seguir tu avance con el canal, en esa misma sección tienes un mini canal de muestra bastante simple que puedes mirar como guia.
 
Hola, alguien sabe si este tutorial aún sigue vigente? O si hay que modificar algo, lo seguí para obtener videos de una pagina de peliculas, tengo mi archivo json y mi archivo.py, las expresiones regulares las probé en la pagina y si obtienen las tres cosas, el titulo, el link de la película y la imagen, pero no estoy seguro de como probarlo. Estoy usando fedora linux, busqué la carpeta "channels" en el gestor de archivos y tal cual copie y pegué mis archivos a esa carpeta, pero eso rompió mi alfa y ya no me dejaba ingresar para probarlos, por lo que no sé si lo hice mal. Además me metí a ver los archivos .py y .json de otros canales y se ven mucho más complejos, es que hice algo mal?
 
Hola @epickiukiu , el manual está bien, es básico, y no aprovecha los modulos disponibles como autoplay, filtros o renumeracion, pero para un canal funcional es suficiente.
Como en cualquier lenguaje de programación tienes que ir y comprobar la salida de errores, en el caso de kodi hay un archivo log donde se muestran los errores de todo lo que sucede en kodi. No te se decir exactamente donde esta por que no tengo un linux a mano, pero debe de ser en una carpeta oculta dentro del home de tu usuario, segun google es ~/.kodi/temp/kodi.log. Mira ahi que error sale y si buscando el error en google no eres capaz de encontrar cual es el problema, pasanos el log y quizá podamos ayudarte.

(Edito)PS: En este post puedes descargar un canal de ejemplo que a mi me sirvió cuando hice mi primer canal.
 
Última edición:
Hola @epickiukiu , el manual está bien, es básico, y no aprovecha los modulos disponibles como autoplay, filtros o renumeracion, pero para un canal funcional es suficiente.
Como en cualquier lenguaje de programación tienes que ir y comprobar la salida de errores, en el caso de kodi hay un archivo log donde se muestran los errores de todo lo que sucede en kodi. No te se decir exactamente donde esta por que no tengo un linux a mano, pero debe de ser en una carpeta oculta dentro del home de tu usuario, segun google es ~/.kodi/temp/kodi.log. Mira ahi que error sale y si buscando el error en google no eres capaz de encontrar cual es el problema, pasanos el log y quizá podamos ayudarte.

(Edito)PS: En este post puedes descargar un canal de ejemplo que a mi me sirvió cuando hice mi primer canal.

Arreglé algunos errores que tenía gracias a lo que me dijiste del log, ahora ya todo sale "bien", solo que aún no consigo que se muestren los videos, el canal carga pero aparece el mensaje "-No hay elementos que mostrar-" y no muestra nada. Adjunto el log y los archivos .py y .json
 

Adjuntos

En itemlist la url esta mal definida. Tv show si la tienes bien definida
Arreglé algunos errores que tenía gracias a lo que me dijiste del log, ahora ya todo sale "bien", solo que aún no consigo que se muestren los videos, el canal carga pero aparece el mensaje "-No hay elementos que mostrar-" y no muestra nada. Adjunto el log y los archivos .py y .json
 
Arreglé algunos errores que tenía gracias a lo que me dijiste del log, ahora ya todo sale "bien", solo que aún no consigo que se muestren los videos, el canal carga pero aparece el mensaje "-No hay elementos que mostrar-" y no muestra nada. Adjunto el log y los archivos .py y .json
@paeznet Ya te ha dado la respuesta correcta, pero por si te pierdes, en la linea 14, la URL de la página está mal, en esa dirección no hay nada, solo la página principal que no contiene entradas, te faltaría /movie al final de la url.

Haznos saber cualquier otra duda que tengas, nos alegra poder ayudarte. 👍
 
Hola, yo de nuevo. Ya pude lograr que se vean las portadas de las peliculas en alfa, y detecta los links y titulos de estas, mis regex estaban mal y otras cosillas. Ahora el problema que tengo es que, si bien ya me salen las peliculas en alfa, no me muestra links a los videos como tal, alfa detecta unos de youtube que son trailers de las peliculas. Me parece que la pagina "bloquea" los links reales porque a la hora de que alfa intenta acceder no me muestra los links de las peliculas. O es que no son compatibles? La pagina usa los servidores UpCloud y MegaCloud

Me parece que lo bloquea porque cambia mucho de links, primero se accede desde Https://serialgo.tv/movies/url y a la hora de dar click en play se redirige a https:......./watch-movie/url y luego cuando le doy play a ese le agrega un número hasta el final, que creo es el link ya real y final, inspeccionando el HTML de ese link final noté que el número que le agrega al final se encuentra en una sección que se llama literalemente "watch_block", la verdad no entiendo muy bien si es que la página lo bloquea apropósito o es algún otro error, en el log me aparece un error hasta el final.
 

Adjuntos

Lo que pasa es que la página usa javascript para modificarse a si misma, en el código fuente directamente no vas a encontrar los enlaces, eso es muy poco habitual hoy en día.

Si le das a inspeccionar y buscas el iframe que contiene el video, ahí te sale el verdadero enlace al video, pero te adelanto que videostr.net no está entre nuestros servidores y parece ser que es el único servidor que usa esta web.

Además, con el afán de intentar ayudarte he visitado uno de esos enlaces y dice que el video no existe, supongo que el servidor debe de leer alguna propiedad de la página que contiene el iframe, cosa que veo poco probable que pueda manejar Kodi, así que veo complicado que puedas hacer de esta web un canal de alfa.

Sí no te quieres rendir con esto de hacer canales para Alfa, lo primero que te recomiendo hacer es mirar de que servidores son los enlaces que usa en sus videos y probarlos en Alfa, dentro de la sección "Canales", vas a "Todos", la primera opción es "Ingresar un enlace", ahí usa la primera opción, ahí puedes comprobar si los enlaces que proporciona la web se pueden abrir con Alfa.
 
Lo que pasa es que la página usa javascript para modificarse a si misma, en el código fuente directamente no vas a encontrar los enlaces, eso es muy poco habitual hoy en día.

Si le das a inspeccionar y buscas el iframe que contiene el video, ahí te sale el verdadero enlace al video, pero te adelanto que videostr.net no está entre nuestros servidores y parece ser que es el único servidor que usa esta web.

Además, con el afán de intentar ayudarte he visitado uno de esos enlaces y dice que el video no existe, supongo que el servidor debe de leer alguna propiedad de la página que contiene el iframe, cosa que veo poco probable que pueda manejar Kodi, así que veo complicado que puedas hacer de esta web un canal de alfa.

Sí no te quieres rendir con esto de hacer canales para Alfa, lo primero que te recomiendo hacer es mirar de que servidores son los enlaces que usa en sus videos y probarlos en Alfa, dentro de la sección "Canales", vas a "Todos", la primera opción es "Ingresar un enlace", ahí usa la primera opción, ahí puedes comprobar si los enlaces que proporciona la web se pueden abrir con Alfa.
Muchas gracias! Voy a seguir intentándolo con alguna página que si soporte alfa o una página que no me ponga tantas trabas jajaj. No tuve en cuenta lo de los servidores, gracias por el consejo! A lo mejor no se pudo pero aprendí mucho estos días, muchas gracias por tener el tiempo de ayudarme, ya lo intentaré de nuevo! Una disculpa por no revisar antes si lo soportaba alfa
 
Atrás
Arriba