Etiqueta: xbmc

Novedades

Widgets en AEON

Una de las características principales del sistema de skins de XBMC es que es muy flexible, haciendo posible maravillas visuales como el skin AEON.

Este skin es a su vez muy configurable, lo que permite a los aficionados que dispongan de tiempo libre y paciencia adaptarlo hasta llegar a un grado de personalización enorme.

Para los que no tengáis ese tiempo libre, o no sepáis de las posibilidades de AEON, ahí va este vídeo sobre los widgets y la forma de personalizarlos. Igualito que en el reproductor de divx de 30€ de mi primo 🙂

DesarrolloTutoriales

Como añadir canales a pelisalacarta (Parte 1)

Esta entrada es la primera de una serie.

Puedes leer la entrada siguiente en Cómo añadir canales a pelisalacarta – Parte 2 (Paginación, menús)

Si te interesa no te pierdas la sección guías de desarrollo

Este es el primer post de una serie donde voy a intentar contaros lo fácil que es añadir un nuevo canal al plugin pelisalacarta para XBMC, con la intención de animar a aquellos que tengan conocimientos de programación y conseguir que entre todos haya muchas webs de contenidos en castellano en XBMC.

La estructura de ficheros del plugin es muy sencilla, y tiene los siguientes elementos:

Directorios de pelisalacarta

Directorios

channels: Contiene un fichero en Python (.py) para cada canal del plugin: Cinetube, Seriesyonkis, etc.
servers: Contiene un fichero Python (.py) para cada servidor donde se alojan los vídeos: Megavideo, etc.
downloads: Es el directorio de descargas por defecto
resources/images: Donde se graban todas las imágenes del canal, iconos y demás
resources/language: Los literales traducidos en varios idiomas, grabados en un fichero xml.
resources/lib: El código común reutilizable en varios sitios.

Hay una serie de ficheros Python importantes que es necesario conocer para añadir un nuevo canal:

  • default.py: Es el que se ejecuta cada vez que accedes al plugin, abres una de sus carpetas o intentas ver uno de sus vídeos. No es necesario modificarlo, y básicamente lo que hace es invocar a pelisalacarta.py.
  • pelisalacarta.py: Extrae los parámetros más importantes de la petición y redirige al selector de canales channelselector.py.
  • channelselector.py: Tiene una lista manual de todos los canales activos en el plugin. Aquí es donde tenemos que añadir nuestro nuevo canal al final de la lista, usando como primer parámetro el nombre que se verá en pantalla y como segundo parámetro un nombre interno que usaremos como identificador del canal.
  • channels/nuevocanal.py: Este es el fichero que vamos a crear con el nuevo canal.
  • images/nuevocanal.png: Este es el fichero con el logotipo del canal.

¿A que parece sencillo? El primer paso es identificar una web que tenga contenido interesante, y que aloje los vídeos en uno de los servidores que pelisalacarta soporta: megavideo, tutv o stagevu. Para este tutorial vamos a coger Cinegratis.net que es una web bastante chula.

Veamos el proceso paso a paso:

1) Añadir el nuevo canal al fichero channelselector.py, al final de la lista. El primer parámetro es el nombre con que se verá el canal en la lista, el segundo es el nombre que usaremos para el thumbnail (cinegratis.png), el fichero con el canal (cinegratis.py), y en varias partes del código. El tercer parámetro es el nombre de la primera función a ejecutar dentro de cinegratis.py.

Antes

Antes

Despues

Despues

2) Hacer el thumbnail del canal como un PNG de 255×375 y grabarlo como images\cinegratis.png.

Icono de canal

Icono de canal

3) Probar el resultado hasta ahora, entrando en el plugin a ver si sale el canal 🙂

El nuevo canal ya sale en XBMC

El nuevo canal ya sale en XBMC

4) Copia uno de los ficheros de canales que hay en el directorio channels, y renómbralo a cinegratis.py. Uno sencillo que es el que vamos a usar ahora es pintadibujos.py.

5) Ábrelo con un editor y donde aparezca «pintadibujos» cámbialo por «cinegratis»

6) Cuando seleccionas el canal la primera función que se invoca es «mainlist», donde el plugin va a la URL que le has indicado y extrae las películas para mostrarlas. Para Cinegratis la URL donde están los estrenos de las películas es http://www.cinegratis.net/index.php?module=peliculas, así que vamos a ponerla en el plugin.

Cambia la URL

Cambia la URL

Ahora viene la parte divertida, que es extraer del HTML de la página los datos de las películas. La magia se realiza gracias a las expresiones regulares y un poco de paciencia, y en realidad es muy sencillo porque apenas hay 4 trucos que resuelven la mayoría de los casoa.

Observando la página buscamos la primera película del listado:

El listado de películas

El listado de películas

En este caso se trata de la película «Lansky (1999)». Si le das a «Ver código fuente» en el navegador y buscas el título la encontrarás enseguida, y normalmente el resto de películas se encuentran siempre una debajo de otra en una estructura repetida. En la captura he resaltado el título, argumento, enlace a la página de detalle y carátula de la película. Veréis que al final está ya el título de la siguiente película.

HTML de la página con los elementos resaltados

HTML de la página con los elementos resaltados

La expresión regular es sencilla si deduces la estructura del código. En este caso podemos ver que el título de la película está dentro de un tag <table>, en el primer <td>, y el argumento en el siguiente <div> que hay. En esa misma tabla está el enlace en un tag <a> y el thumbnail en un tag <img>. Veamos ahora la expresión regular, que describe exactamente lo mismo con su propia notación:

La expresión regular

La expresión regular

Es compleja, pero como todo es cuestión de práctica. Si la leemos por partes lo que significa es que el patrón que estás buscando:

  • «<table.*?<td.*?>»
  • Empieza en la cadena «<table», luego tiene varios caracteres (representado por .*?) hasta llegar a un «<td», y otros caracteres más hasta llegar a un «>» que es el cierre del tag td.
  • «([^<]+)<span»
  • Esta curiosa fórmula significa que a partir de ahí vale «cualquier cosa hasta encontrar el carácter <«, aunque podría haber puesto también «.*?». Los paréntesis indican además que esa parte del texto me interesa.
  • Luego viene otra vez la expresión .*?, porque no interesa nada más hasta llegar al primer «<div>»
  • «<div align=’justify’>(.*?)</div>.*?»
  • Otra fórmula habitual que viene a significar hay un «<div>» con cosas dentro y luego un «</div>». Muy normal en HTML.

Veréis que hay 4 paréntesis en la expresión regular, correspondiendo con el título (posición 0), argumento (posición 1), enlace a la página de detalle (posición 2) y thumbnail (posición 3). Con esto vamos a dar los dos últimos pasos de este tutorial.

7) Copia la expresión regular en la variable «patronvideos» tal como está en la captura.

8 ) Asigna valor a las variables que interpretan la expresión regular, utilizando el array «matches» que va a almacenar las cadenas de texto extraídas.

Asignando valores a las variables

Asignando valores a las variables

Vamos a dejarlo por aquí ahora, con el primer listado de películas de Cinegratis que ya podéis probar.

Si entráis en una película veréis que es totalmente funciona y que podéis reproducir los vídeos, siempre que estén en alguno de los servidores soportados por el plugin (normalmente están en Megavídeo) gracias a que el mecanismo que busca los enlaces es más o menos común para todos los canales.

Aún queda mucho por hacer, como añadir la paginación y poner más listados por categorías y cosas así, que iré añadiendo en sucesivas entregas de este tutorial.

En la captura podéis ver que las pruebas las hago con XBMC en modo ventana, y el log de xbmc siempre debajo usando la utilidad BareTail para verlo en tiempo real.

El listado de películas

El listado de películas

Puedes descargar la versión de cinegratis.py con los cambios ya realizados en este enlace.

Novedades

Integración de XBMC y TV con XBMC-PVR

La última vez que he utilizado un PVR en casa ha sido con GB-PVR, fundamentalmente porque era muy rápido, ligero e incorporaba un servicio en segundo plano que permitía grabar los programas sin tenerlo encendido.

Tenía algunas carencias importantes, como la falta de soporte a vídeos con varias pistas de audio, así que al cambiarme a la TDT también me cambié a DvbViewer. Me permitía seguir programando mis grabaciones, pero sin el entorno tan integrado del anterior.

Cuando descubrí XBMC vi que era justo lo que estaba buscando, y estaba dispuesto a pasar por alto que no tuviera funciones de PVR… hasta el punto de que ahora ya no las necesito. Todo es a la carta.

Acabo de descubrir que usar XBMC como PVR para grabar y reproducir la televisión en vivo no está tan lejos como yo pensaba, a la vista de este vídeo. Habrá que seguir investigando 🙂

Novedades

Philips y su efecto Ambilight

Algunas televisiones de Philips vienen incorporado con el sistema «Ambilight», que no es más que una iluminación que se proyecta por detrás de la televisión utilizando una gama de colores similar a la que estás viendo en pantalla. La web del fabricante proporciona multitud de ejemplos.

He visto el efecto alguna vez en vivo y es bastante espectacular, pero no había visto ningún vídeo donde se apreciara con claridad. El otro día encontré en YouTube este vídeo con una película de animación reproducida mediante XBMC, y me parece que es bastante chulo.