Página 1 de 3
Actualización de SimpleTV
Publicado: 07 Mar 2013, 12:03
por ferniskywalker
Hay un proyecto de Chitawar en el que actualiza la lista de SimpleTv cada 5 Minutos.
He intentado modificar SimpleTv.py para que lea la lista de un directorio de mi ordenador y no me ha funcionado.
Trabajo con Ubuntu 12.04 y me gustaría poder cargar la lista de un archivo que yo renombraría para que tuviese el mismo nombre, pero que cambia el contenido.
Podría alguien decirme como hacerlo??.
El directorio es:
/home/usuario/descargas/nombrearchivo.m3u
Muchas gracias
Re: Actualización de SimpleTV
Publicado: 07 Mar 2013, 17:52
por losedes
Re: Actualización de SimpleTV
Publicado: 08 Mar 2013, 13:52
por carri69
Yo lo he estado mirando y la verdad es que es un trabajo muy bueno. Jesús nos podrá decir cómo lo ve para mywebtv.
Re: Actualización de SimpleTV
Publicado: 10 Mar 2013, 08:37
por jesus
Es lo mismo que se hace con TVenLinux, aunque el formato es distinto.
Le echo un vistazo, tampoco me gusta mucho tener que actualizar el canal de TVenLinux cada vez que cambia. Lo lógico sería leerlos online ambos.
Gracias por el aviso, son buenas noticias

Re: Actualización de SimpleTV
Publicado: 10 Mar 2013, 18:19
por bittor
TVenLinux no se actualiza muy a menudo, pero esta lista se actualiza varias veces al día, por lo que tener la lista localmente en el disco duro no tiene mucho sentido a no ser que no esté disponible online.
He modificado el canal de SimpleTV para que se descargue esa lista y si no está disponible se la descargue de otra página distinta pero la lista es exactamente la misma con los mismos canales y datos, si tampoco pudiera se usaría una copia local de la última vez que se bajara la lista.
De esta manera siempre tendríamos los canales disponibles, aunque en el caso de usar el archivo local los canales quedarían desactualizados, pero los canales oficiales de las cadenas todavía seguirían funcionando durante una temporada.
No sé por qué se mostraban sólo los canales rtmp, así que he quitado esa limitación y se mostrarán todos los canales, de esta manera se podrá ver el canal Real Madrid TV entre otros
La versión que he hecho es multiplataforma y no sé si funcionará en mywebtv.
No lo he probado mucho, pero parece que funciona bien.
Jesús, ¿te lo paso para que le eches un vistazo?
Re: Actualización de SimpleTV
Publicado: 10 Mar 2013, 19:00
por losedes
No esperéis al próximo viernes por favor!!!!!! Agregad el archivo por aquí!!!

Re: Actualización de SimpleTV
Publicado: 10 Mar 2013, 22:50
por ferniskywalker
No es necesario hacer demasiado, el programa está hecho, modifica el archivo simpletv.py dentro deL directorio channels y dime donde poner la ruta del archivo descargado. Lo demás lo tienes hecho.
Muchas gracias
Re: Actualización de SimpleTV
Publicado: 10 Mar 2013, 22:53
por losedes
Si claro! Eso es precisamente lo que necesito saber!

Re: Actualización de SimpleTV
Publicado: 11 Mar 2013, 09:08
por bittor
ferniskywalker escribió:No es necesario hacer demasiado, el programa está hecho, modifica el archivo simpletv.py dentro deL directorio channels y dime donde poner la ruta del archivo descargado. Lo demás lo tienes hecho.
Ya sé que con el archivo simpletv.py es suficiente, pero mis cambios funcionan en la versión tvalacarta-rss y no sé si también funcionarán en mywebtv porque lo he convertido a canal multiplataforma y las librerías del plugin son distintas, por eso le decía a Jesús que si quería echarle un vistazo por si necesita una adaptación.
Re: Actualización de SimpleTV
Publicado: 11 Mar 2013, 19:46
por bittor
Bueno, aquí esta el simpletv.py a ver si os funciona.
El directorio donde se guarda la lista localmente es el directorio "streams" donde está el archivo "TVenLinux.sh".
Está hecho rápidamente, así que es posible que haya algún fallo o alguna parte sea mejorable, pero lo acabo de probar y la lista de canales se actualiza correctamente.
No uso mywebtv, así que no puedo daros soporte si no os funciona, aunque el código está comentado y es fácil de modificar.
Código: Seleccionar todo
# -*- coding: iso-8859-1 -*-
#------------------------------------------------------------
# mywebtv - XBMC Plugin
# Canal SimpleTV
# http://blog.tvalacarta.info/plugin-xbmc/mywebtv/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
from core import scrapertools
from core import config
from core import logger
from core.item import Item
DEBUG = True
CHANNELNAME = "simpletv"
# Prioridad al cargar listas. 1=Archivo local, 0=URL's de internet y si no funcionan archivo local
simpletv_pri_local = 0
simpletv_urls = [
'http://playlist.iptvonline.cu.cc/',
'http://juanin.co.nf/mokolist.m3u'
]
# Archivo local
simpletv_local = os.path.join( config.get_runtime_path() , "streams" , "simpletv.m3u" )
def isGeneric():
return True
def mainlist(item):
logger.info("[simpletv.py] mainlist")
lista_correcta = False
if simpletv_pri_local == 0:
# Descargar las distintas páginas que tienen las listas hasta que una sea válida
for page_url in simpletv_urls:
if lista_correcta:
print "Lista simpletv detectada"
break
print "Probando url: %s" % page_url
data = scrapertools.cachePage(page_url)
# Revisar si es un formulario para descargar la lista
patron = '<form .*?method="post" action="(.*?)">.*?submit name="(.*?)" value="(.*?)"'
matches = re.compile(patron,re.DOTALL).findall(data)
if len(matches)==0:
# Revisar si es una lista
if re.search("#EXTINF:-1", data): lista_correcta = True
else:
if DEBUG: print "Formulario detectado"
for match in matches:
page_url = "%s%s" % (page_url, str(match[0]))
page_post = "%s=%s" % (str(match[1]), str(match[2]))
if DEBUG: print "page_url: %s\npage_post: %s" % (page_url, page_post)
data = scrapertools.cachePage( page_url, post=page_post )
# Revisar si es una lista
if re.search("#EXTINF:-1", data): lista_correcta = True
# Si no ha encontrado ninguna lista, leemos el archivo local
# y si la ha encontrado la guardamos en el archivo local
if not lista_correcta:
import os.path
if os.path.exists(simpletv_local):
print "Leyendo archivo local de simpletv"
f = open(simpletv_local)
data = f.read()
f.close()
else:
print "ERROR: No existe archivo local de simpletv"
return []
else:
print "Guardando archivo local de simpletv"
f = open(simpletv_local,"w")
f.write(data)
f.flush()
f.close()
# Busca el bloque con los canales
itemlist = []
patron = '#EXTINF:-1 \$ExtFilter="(.*?)",(.*?)(?:\n|\r|\r\n?)(.*?)(?:\n|\r|\r\n?)'
matches = re.compile(patron,re.DOTALL|re.MULTILINE).findall(data)
if DEBUG: scrapertools.printMatches(matches)
for match in matches:
if DEBUG: print "match: %s-%s-%s" % (match[0], match[1], match[2])
if "Canales +18" in match[1]: continue
if "RADIOS" in match[1]: continue
if "Radios" in match[1]: continue
if "RADIOS" in match[0]: continue
if "Radios" in match[0]: continue
scrapedtitle = match[0].upper() + ' - ' + match[1].upper()
if match[2].startswith(("rtmp://", "rtmpt://", "rtmpe://", "rtmpte://", "rtmps://")):
scrapedurl = match[2].replace("rtmp://$OPT:rtmp-raw=","").replace("live=1", "live=true")
if not re.search(" timeout=", match[2]):
scrapedurl = "%s%s" % (scrapedurl, " timeout=300")
else:
scrapedurl = match[2]
itemlist.append( Item(channel=CHANNELNAME, title=scrapedtitle, url=scrapedurl, action="play", extra="rtmp", folder=True) )
return itemlist
def play(item):
logger.info("[simpletv.py] play")
itemlist = []
itemlist.append( Item(channel=CHANNELNAME, action="play", server="directo", title=item.title, url=item.url, thumbnail="", plot="", folder=False) )
return itemlist