Página 1 de 1

Nuevo canal x (muy bueno) funcionando

Publicado: 21 Ene 2010, 01:41
por xlars
Hola a todos,

Esta es mi primera contribución. Con más suerte que otra cosa he conseguido añadir un nuevo canal a pelis a la carta, para acceder a las pelis x de Mocosoftx que son de lo mejorcito que he encontrado ultimamente. Pelis completas y muy modernas de calidad excelente.

He contactado con Jesús para entregarle el código de este canal por si quiere añadirlo a la próxima versión de pelis a la carta.

Si alguien quiere probarlo que lo diga y los moderadores que indiquen la mejor forma de ponerlo para descargar.

saludos,

Lars

Re: Nuevo canal x (muy bueno) funcionando

Publicado: 21 Ene 2010, 10:43
por jesus
Gracias por tu aportación.

Déjalo simplemente en el foro y le echo un vistazo, arreglamos los problemas que veas y lo añadimos como canal.

Tendré que poner algo en el plugin para que mi hijo no lo vea :)

Re: Nuevo canal x (muy bueno) funcionando

Publicado: 21 Ene 2010, 12:39
por xlars
A modo de instrucciones sencillas:

1) Modificar channelselector.py y añadir el nuevo canal:

Código: Seleccionar todo

	addfolder("Mocosoftx","mocosoftx","mainlist")
2) Añadir este fichero mocosoftx.py en la carpeta "channels":

Código: Seleccionar todo

# -*- coding: iso-8859-1 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para mocosoftx
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import xbmc
import xbmcgui
import xbmcplugin
import scrapertools
import megavideo
import servertools
import binascii
import xbmctools

CHANNELNAME = "mocosoftx"

# Esto permite su ejecución en modo emulado
try:
	pluginhandle = int( sys.argv[ 1 ] )
except:
	pluginhandle = ""

# Traza el inicio del canal
xbmc.output("[mocosoftx.py] init")

DEBUG = True

def mainlist(params,url,category):
	xbmc.output("[mocosoftx.py] mainlist")

	if url=="":
		url = "http://mocosoftx.com/foro/index.php?board=14.0/"

	# Descarga la página
	data = scrapertools.cachePage(url)
	#xbmc.output(data)

	# Extrae las entradas (carpetas)
	patronvideos = '<span id=".*?">'
	patronvideos += '<a href="([^"]+)">([^<]+)</a>'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	for match in matches:
		# Titulo
		scrapedtitle = match[1]
		# URL
		scrapedurl = urlparse.urljoin(url,match[0])
		# Thumbnail
		scrapedthumbnail = ""
		
		# Argumento
		scrapedplot = ""

		# Depuracion
		if (DEBUG):
			xbmc.output("scrapedtitle="+scrapedtitle)
			xbmc.output("scrapedurl="+scrapedurl)
			xbmc.output("scrapedthumbnail="+scrapedthumbnail)

		# Añade al listado de XBMC
		xbmctools.addnewfolder( CHANNELNAME , "detail" , category , scrapedtitle , scrapedurl , scrapedthumbnail , scrapedplot)

	# Página siguiente
	# patronvideos  = "<a class='blog-pager-older-link' href='([^']+)' id='Blog1_blog-pager-older-link' title='Entradas antiguas'>Entradas antiguas</a>"
	patronvideos  = '<a class="navPages" href="([^"]+)">([^<]+)<'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	for match in matches:
		# Titulo
		scrapedtitle = "Página " + match[ 1 ]
		# URL
		scrapedurl = urlparse.urljoin(url,match[ 0 ])
		# Thumbnail
		scrapedthumbnail = ""
		
		# Argumento
		scrapedplot = ""

		# Depuracion
		if (DEBUG):
			xbmc.output("scrapedtitle="+scrapedtitle)
			xbmc.output("scrapedurl="+scrapedurl)
			xbmc.output("scrapedthumbnail="+scrapedthumbnail)

		# Añade al listado de XBMC
		xbmctools.addnewfolder( CHANNELNAME , "mainlist" , category , scrapedtitle , scrapedurl , scrapedthumbnail , scrapedplot)

	if xbmcplugin.getSetting("singlechannel")=="true":
		xbmctools.addSingleChannelOptions(params,url,category)

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )

	# Disable sorting...
	xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )

	# End of directory...
	xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )

def detail(params,url,category):
	xbmc.output("[mocosoftx.py] detail")

	title = unicode( xbmc.getInfoLabel( "ListItem.Title" ), "utf-8" )
	thumbnail = urllib.unquote_plus( params.get("thumbnail") )
	plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )

	# Descarga la página
	data = scrapertools.cachePage(url)
	#xbmc.output(data)

	# ------------------------------------------------------------------------------------
	# Busca los enlaces a los videos
	# ------------------------------------------------------------------------------------
	listavideos = servertools.findvideos(data)

	for video in listavideos:
		xbmctools.addvideo( CHANNELNAME , "Megavideo - "+video[0] , video[1] , category , video[2] )
	# ------------------------------------------------------------------------------------

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )
		
	# Disable sorting...
	xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )

	# End of directory...
	xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )

def play(params,url,category):
	xbmc.output("[mocosoftx.py] play")

	title = unicode( xbmc.getInfoLabel( "ListItem.Title" ), "utf-8" )
	thumbnail = "" #urllib.unquote_plus( params.get("thumbnail") )
	plot = "" #unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )
	server = params["server"]
	
	xbmctools.playvideo(CHANNELNAME,server,url,category,title,thumbnail,plot)
3) Por último, añadir este fichero PNG en la carpeta "resources\images" como mocosoftx.png:
Imagen

Lo que faltaría es poder mostrar la portada de cada peli. A ver si lo conseguimos. Y tambien control parental.

Por lo demás, es un canal realmente bueno ;-)

Re: Nuevo canal x (muy bueno) funcionando

Publicado: 22 Ene 2010, 00:40
por xlars
Aqui teneis una versión mejorada que ya muestra las carátulas de las pelis :-)

mocosoftx.py

Código: Seleccionar todo

# -*- coding: iso-8859-1 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Canal para mocosoftx
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import urlparse,urllib2,urllib,re
import os
import sys
import xbmc
import xbmcgui
import xbmcplugin
import scrapertools
import megavideo
import servertools
import binascii
import xbmctools

CHANNELNAME = "mocosoftx"

# Esto permite su ejecución en modo emulado
try:
	pluginhandle = int( sys.argv[ 1 ] )
except:
	pluginhandle = ""

# Traza el inicio del canal
xbmc.output("[mocosoftx.py] init")

DEBUG = True

def mainlist(params,url,category):
	xbmc.output("[mocosoftx.py] mainlist")

	if url=="":
		url = "http://mocosoftx.com/foro/index.php?board=14.0/"

	# Descarga la página
	data = scrapertools.cachePage(url)
	#xbmc.output(data)

	# Extrae las entradas (carpetas)
	patronvideos = '<span id=".*?">'
	patronvideos += '<a href="([^"]+)">([^<]+)</a>'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	for match in matches:
		# Titulo
		scrapedtitle = match[1]
		# URL
		scrapedurl = urlparse.urljoin(url,match[0])
		# Thumbnail
		data2 = scrapertools.cachePage(scrapedurl)
		patronimagen = '<img src="([^"]+).jpg"'
		imagenes = re.compile(patronimagen,re.DOTALL).findall(data2)
		scrapedthumbnail = imagenes[ 1 ] + ".jpg"
      
		# Argumento
		scrapedplot = ""

		# Depuracion
		if (DEBUG):
			xbmc.output("scrapedtitle="+scrapedtitle)
			xbmc.output("scrapedurl="+scrapedurl)
			xbmc.output("scrapedthumbnail="+scrapedthumbnail)

		# Añade al listado de XBMC
		xbmctools.addnewfolder( CHANNELNAME , "detail" , category , scrapedtitle , scrapedurl , scrapedthumbnail , scrapedplot)

	# Página siguiente
	patronvideos  = '<a class="navPages" href="([^"]+)">([^<]+)<'
	matches = re.compile(patronvideos,re.DOTALL).findall(data)
	scrapertools.printMatches(matches)

	for match in matches:
		# Titulo
		scrapedtitle = "Página " + match[ 1 ]
		# URL
		scrapedurl = urlparse.urljoin(url,match[ 0 ])
		# Thumbnail
		scrapedthumbnail = ""
      
		# Argumento
		scrapedplot = ""

		# Depuracion
		if (DEBUG):
			xbmc.output("scrapedtitle="+scrapedtitle)
			xbmc.output("scrapedurl="+scrapedurl)
			xbmc.output("scrapedthumbnail="+scrapedthumbnail)

		# Añade al listado de XBMC
		xbmctools.addnewfolder( CHANNELNAME , "mainlist" , category , scrapedtitle , scrapedurl , scrapedthumbnail , scrapedplot)

	if xbmcplugin.getSetting("singlechannel")=="true":
		xbmctools.addSingleChannelOptions(params,url,category)

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )

	# Disable sorting...
	xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )

	# End of directory...
	xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )

def detail(params,url,category):
	xbmc.output("[mocosoftx.py] detail")

	title = unicode( xbmc.getInfoLabel( "ListItem.Title" ), "utf-8" )
	thumbnail = urllib.unquote_plus( params.get("thumbnail") )
	plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )

	# Descarga la página
	data = scrapertools.cachePage(url)
	#xbmc.output(data)

	# ------------------------------------------------------------------------------------
	# Busca los enlaces a los videos
	# ------------------------------------------------------------------------------------
	listavideos = servertools.findvideos(data)

	for video in listavideos:
		xbmctools.addvideo( CHANNELNAME , "Megavideo - "+video[0] , video[1] , category , video[2] )
	# ------------------------------------------------------------------------------------

	# Label (top-right)...
	xbmcplugin.setPluginCategory( handle=pluginhandle, category=category )
      
	# Disable sorting...
	xbmcplugin.addSortMethod( handle=pluginhandle, sortMethod=xbmcplugin.SORT_METHOD_NONE )

	# End of directory...
	xbmcplugin.endOfDirectory( handle=pluginhandle, succeeded=True )

def play(params,url,category):
	xbmc.output("[mocosoftx.py] play")

	title = unicode( xbmc.getInfoLabel( "ListItem.Title" ), "utf-8" )
	thumbnail = "" #urllib.unquote_plus( params.get("thumbnail") )
	plot = "" #unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" )
	server = params["server"]
   
	xbmctools.playvideo(CHANNELNAME,server,url,category,title,thumbnail,plot)
ojo al copiar el fichero a disco, que los espacios de la izquierda son tabulaciones por exigencia de python

Re: Nuevo canal x (muy bueno) funcionando

Publicado: 23 Ene 2010, 10:48
por jesus
Gracias, justo ahora iba a probarlo.

Es mejor si lo empaquetas en un ZIP y lo subes, se evita el problema de los tabuladores.

Re: Nuevo canal x (muy bueno) funcionando

Publicado: 23 Ene 2010, 10:53
por xlars
Aqui está un ZIP con los tres ficheros dentro :-)

http://www.mediafire.com/?wz3mznzmz34