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