Página 1 de 1

BarcelonaTV ha perdido la información

Publicado: 30 Sep 2011, 14:25
por cesc2011
Hola,

El canal BarcelonaTV de tvalacarta está vacío.
Puede ser debido al cambio que ha habido recientemente en su web?
Existe alguna manera de obtener otra vez la informacion y los programas disponibles?

Estoy usando un APTV2 con XBMC en la ultima version (de esta semana de XBMC Eden).
La version de Pelisalacarta es la 3.0.1

Muchas gracias.

Un saludo

Re: BarcelonaTV ha perdido la información

Publicado: 30 Sep 2011, 16:38
por jesus
No sabía que habían cambiado la web, últimamente veo poco la tele :(

Esta semana que viene espero poder actualizar tvalacarta...

Re: BarcelonaTV ha perdido la información

Publicado: 05 Dic 2011, 00:53
por Das
Hola,

He parcheado el lector de barcelonatv y ya lista canales y las ultimas 4 emisiones del apartado a la carta. Pero no se ve ninguna emisión porque falta pasar un token válido a flumotion (va en XXXXXXXXXXXXXX en el script). Vamos, que de color bien pero no flota.

He cambiado:
- la URL de "alacarta" (el site es ahora btv.cat)
- de esa pagina saco los programas (nombre y URL)
- de la pagina del programa lee los últimos publicados.
- usando el thumbnail averiguo el código real de la emisión ( location = response.geturl() )

El script modificado es:

Código: Seleccionar todo

# -*- coding: utf-8 -*-
#------------------------------------------------------------
# tvalacarta - XBMC Plugin
# Canal para barcelonatv
# http://blog.tvalacarta.info/plugin-xbmc/tvalacarta/
#------------------------------------------------------------
import urlparse,re
import urllib
import urllib2

try:
    from core import logger
    from core import scrapertools
    from core.item import Item
except:
    # En Plex Media server lo anterior no funciona...
    from Code.core import logger
    from Code.core import scrapertools
    from Code.core.item import Item

logger.info("[barcelonatv.py] init")

DEBUG = False
CHANNELNAME = "barcelonatv"

def isGeneric():
    return True

def mainlist(item):
    logger.info("[barcelonatv.py] mainlist")
    itemlist = []

    # Descarga la página
    data = scrapertools.cachePage("http://www.btv.cat/alacarta/")
    
    # Extrae los programas
    patron = '<li><a title=\"([^<]+)\" href=\"([^<]+)\">'
    matches = re.compile(patron,re.DOTALL).findall(data)

    for match in matches:
        scrapedtitle = match[0]
        scrapedurl = match[1]
        scrapedthumbnail = ""
        scrapedplot = ""

        if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

        # Añade al listado
        itemlist.append( Item(channel=CHANNELNAME, title=scrapedtitle , action="videolist" , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot , folder=True) )

    return itemlist

def videolist(item):
    logger.info("[barcelonatv.py] videolist")
    itemlist = []

    # Descarga la página
    data = scrapertools.cachePage(item.url)
    
    # Extrae los videos
    patron  = '<li>'
    patron += '<div class="img">'
    patron += '<a title="([^"]+)" href="#" class="video-loader-link-pro" id="([^"]+)" rel="fitxaprograma">'
    patron += '<img src="([^"]+)" width="([^"]+)" height="([^"]+)" alt="([^"]+)" />'
    patron += '</a></div>'
    patron += '<div class="txt">'
    patron += '<a title="([^"]+)" href="#" class="video-loader-link-pro" id="([^"]+)" rel="fitxaprograma">([^"]+)</a>'
    patron += '</div>'
    patron += '<div class="day">([^"]+)</div>'
    matches = re.compile(patron,re.DOTALL).findall(data)

    for match in matches:
        scrapedtitle = match[0]+" ("+match[9]+")"
        scrapedurl = "%s" % match[1]
        scrapedthumbnail = match[2]
        scrapedplot = match[9]
        if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")

        itemlist.append( Item(channel=CHANNELNAME, title=scrapedtitle , action="play" , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot , folder=False) )

    return itemlist

def play(item):
    logger.info("[barcelonatv.py] play")

    # Averigua la URL y la descripcion
    page_url = "http://api.barcelonatv2.webtv.flumotion.com/videos/%s/thumbnail.jpg" % item.url

    itemlist = []

    req = urllib2.Request( page_url ) 
    response = urllib2.urlopen( req )
    location = response.geturl()
    video_id = re.compile( 'http://media2.webtv.flumotion.com/cust/barcelonatv//outgoingimg/([^"]+).mpg/([^"]+).mpg([^"]+).jpg' ,re.DOTALL).findall( location )    
    url = "http://ondemand.barcelonatv.ondemand.flumotion.com/barcelonatv/ondemand/video/mp4/high/%s.mp4?token=XXXXXXXXXXXXXX" % video_id[0][0]

    itemlist.append( Item(channel=CHANNELNAME, title=item.title , action="play" , url=url, thumbnail=item.thumbnail , plot=item.plot , server = "directo" , folder=False) )

    return itemlist

Re: BarcelonaTV ha perdido la información

Publicado: 06 Dic 2011, 01:10
por jesus
Gracias :)

Lo he estado mirando y he avanzado un poco más, pero no es una página trivial.

Con el firebug puedes encontrar esta URL:

http://api.barcelonatv2.webtv.flumotion ... 7223bb8788

Y dentro están las URL de los vídeos con los tokens.

Código: Seleccionar todo

[
  {
    "url": "http://ondemand.barcelonatv.ondemand.flumotion.com/barcelonatv/ondemand/video/mp4/high/220-13.mp4?token=3de7537f57772533e9673e831fc883364edd5c0e4edeadca", 
    "quality": "high", 
    "expire": 86400, 
    "bitrate": 1200, 
    "format": "mp4"
  }, 
  {
    "url": "http://ondemand.barcelonatv.ondemand.flumotion.com/barcelonatv/ondemand/video/mp4/low/220-13.mp4?token=d87df5ee8d8a6a888c1ceb5b13c8cf454edd5c0e4edeadca", 
    "quality": "low", 
    "expire": 86400, 
    "bitrate": 400, 
    "format": "mp4"
  }, 
  {
    "url": "http://ondemand.barcelonatv.ondemand.flumotion.com/barcelonatv/ondemand/video/mp4/mobile/220-13.mp4?token=13d3ae0e81c53b2d08d946d0235688c74edd5c0e4edeadca", 
    "quality": "mobile", 
    "expire": 86400, 
    "bitrate": 350, 
    "format": "mp4"
  }, 
  {
    "url": "http://ondemand.barcelonatv.ondemand.flumotion.com/barcelonatv/ondemand/video/mp4/mini/220-13.mp4?token=4df6dfeb18fcde1dc4eb9be7cbcb65dd4edd5c0e4edeadca", 
    "quality": "mini", 
    "expire": 86400, 
    "bitrate": 500, 
    "format": "mp4"
  }
]
Todos los parametros necesarios para invocar a la URL anterior están en el HTML del vídeo:

Código: Seleccionar todo

<input type="hidden" name="fm_url_call" id="fm_url_call" value="http://api.barcelonatv2.webtv.flumotion.com/">
<input type="hidden" name="auth_signature" id="auth_signature" value="api_key=VQX6aBAx6q3SZ2AM&api_nonce=46767717&api_referrer=www.btv.cat&api_timestamp=1323129908&api_signature=7d96ff7fd6250bf0d81a39f0339748481e85ac03">
Excepto el parámetro session:

Código: Seleccionar todo

session=BC2C190684B0D55C39EE10B084443FF3
Que seguro que se calcula en el player flash usando el tiempo en el servidor (http://api.barcelonatv2.webtv.flumotion ... erver_time) y algún algoritmo.

Es Flumotion... el mismo player que Cuatro.