Advertisement
Guest User

Cambios AnimeFLV

a guest
Jul 4th, 2012
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 18.81 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. #------------------------------------------------------------
  3. # pelisalacarta - XBMC Plugin
  4. # Canal para animeflv (por MarioXD)
  5. # http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
  6. #------------------------------------------------------------
  7.  
  8. import urlparse,urllib2,urllib,re
  9. import os, sys
  10.  
  11. from core import logger
  12. from core import config
  13. from core import scrapertools
  14. from core.item import Item
  15. from servers import servertools
  16.  
  17. DEBUG = config.get_setting("debug")
  18.  
  19. __category__ = "A"
  20. __type__ = "generic"
  21. __title__ = "Animeflv"
  22. __channel__ = "animeflv"
  23. __language__ = "ES"
  24. __creationdate__ = "20111014"
  25.  
  26. def isGeneric():
  27.     return True
  28.  
  29. def mainlist(item):
  30.     logger.info("[animeflv.py] mainlist")
  31.  
  32.     itemlist = []
  33.     itemlist.append( Item(channel=__channel__, action="newlist" , title="Novedades"                         , url="http://animeflv.net/" ))
  34.     itemlist.append( Item(channel=__channel__, action="Lista2"  , title="Ultimas series agregadas o subidas", url="http://animeflv.net/" ))
  35.     itemlist.append( Item(channel=__channel__, action="airlist" , title="Animes en emision"                 , url="http://animeflv.net/" ))
  36.     itemlist.append( Item(channel=__channel__, action="ListA"   , title="Listado Alfabetico"                , url="http://animeflv.net/" ))
  37.     itemlist.append( Item(channel=__channel__, action="genero"  , title="Listado por Genero"                , url="http://animeflv.net/" ))
  38.     itemlist.append( Item(channel=__channel__, action="completo", title="Listado Completo de Animes"        , url="http://animeflv.net/" ))
  39.     itemlist.append( Item(channel=__channel__, action="completo", title="Listado Completo de Ovas"          , url="http://animeflv.net/" ))
  40.     itemlist.append( Item(channel=__channel__, action="completo", title="Listado Completo de Peliculas"     , url="http://animeflv.net/" ))
  41.     itemlist.append( Item(channel=__channel__, action="search"  , title="Buscar"                            , url="http://animeflv.net/buscar/" ))
  42.  
  43.     return itemlist
  44.  
  45. def search(item,texto):
  46.     logger.info("[animeflv.py] search")
  47.     if item.url=="":
  48.         item.url="http://animeflv.net/buscar/"
  49.     texto = texto.replace(" ","+")
  50.     item.url = item.url+texto
  51.     try:
  52.         return Lista2(item)
  53.     # Se captura la excepción, para no interrumpir al buscador global si un canal falla
  54.     except:
  55.         import sys
  56.         for line in sys.exc_info():
  57.             logger.error( "%s" % line )
  58.         return []
  59.  
  60. def genero(item):
  61.     logger.info("[animeflv.py] genero")
  62.  
  63.     itemlist = []
  64.    
  65.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Accion", url="http://animeflv.net/genero/accion.html"))
  66.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Aventura", url="http://animeflv.net/genero/aventura.html"))
  67.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Carreras", url="http://animeflv.net/genero/carreras.html"))
  68.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Comedia", url="http://animeflv.net/genero/comedia.html"))
  69.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Cyberpunk", url="http://animeflv.net/genero/cyberpunk.html"))
  70.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Deportes", url="http://animeflv.net/genero/deportes.html"))
  71.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Drama", url="http://animeflv.net/genero/drama.html"))
  72.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Ecchi", url="http://animeflv.net/genero/ecchi.html"))
  73.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Escolares", url="http://animeflv.net/genero/escolares.html"))
  74.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Fantasia", url="http://animeflv.net/genero/fantasia.html"))
  75.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Ficcion", url="http://animeflv.net/genero/ficcion.html"))
  76.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Harem", url="http://animeflv.net/genero/harem.html"))
  77.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Horror", url="http://animeflv.net/genero/horror.html"))
  78.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Josei", url="http://animeflv.net/genero/josei.html"))
  79.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Magia", url="http://animeflv.net/genero/magia.html"))
  80.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Mecha", url="http://animeflv.net/genero/mecha.html"))
  81.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Militar", url="http://animeflv.net/genero/militar.html"))
  82.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Musica", url="http://animeflv.net/genero/musica.html"))
  83.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Parodias", url="http://animeflv.net/genero/parodias.html"))
  84.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Psicologico", url="http://animeflv.net/genero/psicologico.html"))
  85.     itemlist.append( Item(channel=__channel__, action="Lista2", title="R. de la vida", url="http://animeflv.net/genero/recuentos-de-la-vida.html"))
  86.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Romance", url="http://animeflv.net/genero/romance.html"))
  87.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Seinen", url="http://animeflv.net/genero/seinen.html"))
  88.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Shojo", url="http://animeflv.net/genero/shojo.html"))
  89.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Shonen", url="http://animeflv.net/genero/shonen.html"))
  90.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Yaoi", url="http://animeflv.net/genero/yaoi.html"))
  91.     itemlist.append( Item(channel=__channel__, action="Lista2", title="Yuri", url="http://animeflv.net/genero/yuri.html"))
  92.     return itemlist
  93.  
  94. def completo(item):
  95.     logger.info("[animeflv.py] completo")
  96.     itemlist = []
  97.    
  98.     # Descarga la pagina
  99.     data = scrapertools.cache_page(item.url)
  100.  
  101.     if "Animes" in item.title:
  102.         patron  = '<ul id="flvanimes"(.*?)</ul>'
  103.     elif "Ovas" in item.title:
  104.         patron  = '<ul id="flvovas"(.*?)</ul>'
  105.     elif "Peliculas" in item.title:
  106.         patron  = '<ul id="flvpelis"(.*?)</ul>'
  107.        
  108.     matches = re.compile(patron,re.DOTALL).findall(data)
  109.     if len(matches)>0:
  110.         data = matches[0]
  111.         patronvideos = '<li><a href="([^"]+)" title="([^"]+)">([^"]+)</a></li>'
  112.         matches = re.compile(patronvideos,re.DOTALL).findall(data)    
  113.  
  114.     for match in matches:
  115.         scrapedtitle = match[1]
  116.         fulltitle = scrapedtitle
  117.         scrapedurl = urlparse.urljoin(item.url,match[0])
  118.         scrapedthumbnail = urlparse.urljoin(item.url,match[2])
  119.         scrapedplot = ""
  120.         if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
  121.  
  122.         itemlist.append( Item(channel=__channel__, action="serie" , title=scrapedtitle , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, show=scrapedtitle, fulltitle=fulltitle))        
  123.     return itemlist
  124.  
  125. def ListA(item):
  126.     logger.info("[animeflv.py] ListA")
  127.     itemlist = []
  128.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="0-9", url="http://animeflv.net/letra/0-9.html"))
  129.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="A"  , url="http://animeflv.net/letra/a.html"))
  130.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="B"  , url="http://animeflv.net/letra/b.html"))
  131.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="C"  , url="http://animeflv.net/letra/c.html"))
  132.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="D"  , url="http://animeflv.net/letra/d.html"))
  133.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="E"  , url="http://animeflv.net/letra/e.html"))
  134.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="F"  , url="http://animeflv.net/letra/f.html"))
  135.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="G"  , url="http://animeflv.net/letra/g.html"))
  136.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="H"  , url="http://animeflv.net/letra/h.html"))
  137.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="I"  , url="http://animeflv.net/letra/i.html"))
  138.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="J"  , url="http://animeflv.net/letra/j.html"))
  139.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="K"  , url="http://animeflv.net/letra/k.html"))
  140.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="L"  , url="http://animeflv.net/letra/l.html"))
  141.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="M"  , url="http://animeflv.net/letra/m.html"))
  142.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="N"  , url="http://animeflv.net/letra/n.html"))
  143.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="O"  , url="http://animeflv.net/letra/o.html"))
  144.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="P"  , url="http://animeflv.net/letra/p.html"))
  145.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="Q"  , url="http://animeflv.net/letra/q.html"))
  146.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="R"  , url="http://animeflv.net/letra/r.html"))
  147.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="S"  , url="http://animeflv.net/letra/s.html"))
  148.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="T"  , url="http://animeflv.net/letra/t.html"))
  149.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="U"  , url="http://animeflv.net/letra/u.html"))
  150.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="V"  , url="http://animeflv.net/letra/v.html"))
  151.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="W"  , url="http://animeflv.net/letra/w.html"))
  152.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="X"  , url="http://animeflv.net/letra/x.html"))
  153.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="Y"  , url="http://animeflv.net/letra/y.html"))
  154.     itemlist.append( Item(channel=__channel__, action="Lista2" , title="Z"  , url="http://animeflv.net/letra/z.html"))
  155.  
  156.     return itemlist
  157.  
  158.  
  159. def Lista2(item):
  160.     logger.info("[animeflv.py] Lista2")
  161.  
  162.     # Descarga la pagina
  163.     data = scrapertools.cache_page(item.url)
  164.  
  165.     # Extrae las entradas
  166.     patronvideos  = '<div class="anime_box"> <a href="([^"]+)" title="([^"]+)"><img src="([^"]+)'
  167.     matches = re.compile(patronvideos,re.DOTALL).findall(data)
  168.     itemlist = []
  169.    
  170.     for match in matches:
  171.         scrapedtitle = match[1]
  172.         fulltitle = scrapedtitle
  173.         scrapedurl = urlparse.urljoin(item.url,match[0])
  174.         scrapedthumbnail = urlparse.urljoin(item.url,match[2])
  175.         scrapedplot = ""
  176.         if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
  177.  
  178.         itemlist.append( Item(channel=__channel__, action="serie" , title=scrapedtitle , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, show=scrapedtitle, fulltitle=fulltitle))
  179.  
  180.     patron = '<a href="([^"]+)">Siguiente</a><a href="([^"]+)">Ultima</a> </span></div></center><div class="cont_anime">'
  181.     matches = re.compile(patron,re.DOTALL).findall(data)
  182.     for match in matches:
  183.         if len(matches) > 0:
  184.             scrapedurl = "http://animeflv.net"+match[0]
  185.             scrapedtitle = "!Pagina Siguiente"
  186.             scrapedthumbnail = ""
  187.             scrapedplot = ""
  188.        
  189.             itemlist.append( Item(channel=__channel__, action="Lista2", title=scrapedtitle , url=scrapedurl , thumbnail=scrapedthumbnail , plot=scrapedplot , folder=True) )
  190.     return itemlist
  191.  
  192. def newlist(item):
  193.     logger.info("[animeflv.py] newlist")
  194.  
  195.     # Descarga la pagina
  196.     data = scrapertools.cache_page(item.url)
  197.  
  198.     # Extrae las entradas (carpetas)  
  199.     patronvideos  = '<div class="abso">.*?<a href="([^"]+)" title="([^"]+)"><img src="([^"]+)".*?>([^<]+)</a></div>'
  200.     matches = re.compile(patronvideos,re.DOTALL).findall(data)
  201.     itemlist = []
  202.    
  203.     for match in matches:
  204.         scrapedtitle = scrapertools.entityunescape(match[3])
  205.         fulltitle = scrapedtitle
  206.         # directory = match[1]
  207.         scrapedurl = urlparse.urljoin(item.url,match[0])
  208.         scrapedthumbnail = urlparse.urljoin(item.url,match[2].replace("mini","portada"))
  209.         scrapedplot = ""
  210.         if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
  211.  
  212.         itemlist.append( Item(channel=__channel__, action="findvideos" , title=scrapedtitle , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, fulltitle=fulltitle))
  213.  
  214.     return itemlist
  215.  
  216. def serie(item):
  217.     logger.info("[animeflv.py] serie")
  218.    
  219.     # Descarga la pagina
  220.     data = scrapertools.cache_page(item.url)
  221.  
  222.     # Saca el argumento
  223.     patronplot  = '<div class="sinop">(.*?)</div>'
  224.     matches = re.compile(patronplot,re.DOTALL).findall(data)
  225.    
  226.     if len(matches)>0:
  227.         scrapedplot = scrapertools.htmlclean( matches[0] )
  228.    
  229.     # Saca enlaces a los episodios
  230.     patron  = 'Listado de capitulos(.*?)</ul>'
  231.     matches = re.compile(patron,re.DOTALL).findall(data)
  232.     if len(matches)>0:
  233.         data = matches[0]
  234.         patronvideos = '<li class="lcc"><a href="([^"]+)" class="lcc">([^<]+)</a></li>'
  235.         matches = re.compile(patronvideos,re.DOTALL).findall(data)
  236.        
  237.     itemlist = []
  238.    
  239.     for match in matches:
  240.         scrapedtitle = match[1]
  241.         scrapedtitle = unicode( scrapedtitle, "iso-8859-1" , errors="replace" ).encode("utf-8")
  242.         scrapedtitle = scrapertools.entityunescape( scrapedtitle )
  243.         fulltitle = scrapedtitle
  244.         scrapedurl = urlparse.urljoin(item.url,match[0])
  245.         scrapedthumbnail = item.thumbnail
  246.         #scrapedplot = match[2]
  247.         if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
  248.  
  249.         itemlist.append( Item(channel=__channel__, action="findvideos" , title=scrapedtitle , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, show=item.show, fulltitle=fulltitle))
  250.    
  251.     if config.get_platform().startswith("xbmc") or config.get_platform().startswith("boxee"):
  252.         itemlist.append( Item(channel=item.channel, title="Añadir esta serie a la biblioteca de XBMC", url=item.url, action="add_serie_to_library", extra="serie", show=item.show) )
  253.  
  254.     return itemlist
  255.  
  256.  
  257. def airlist(item):
  258.     logger.info("[animeid.py] airlist")
  259.  
  260.     # Descarga la pagina
  261.     data = scrapertools.cache_page(item.url)
  262.  
  263.     # Extrae las entradas (carpetas)  
  264.     patronvideos  = 'Animes en Emision(.*?)</div>'
  265.     matches = re.compile(patronvideos,re.DOTALL).findall(data)
  266.     if len(matches)>0:
  267.         data = matches[0]
  268.         patronvideos = '<li><a href="([^"]+)" title="([^"]+)"'
  269.         matches = re.compile(patronvideos,re.DOTALL).findall(data)
  270.    
  271.     itemlist = []
  272.  
  273.     for match in matches:
  274.         scrapedtitle = match[1]
  275.         fulltitle = scrapedtitle
  276.         scrapedurl = urlparse.urljoin(item.url,match[0])
  277.         scrapedthumbnail = ""
  278.         scrapedplot = ""
  279.         if (DEBUG): logger.info("title=["+scrapedtitle+"], url=["+scrapedurl+"], thumbnail=["+scrapedthumbnail+"]")
  280.  
  281.         itemlist.append( Item(channel=__channel__, action="serie" , title=scrapedtitle , url=scrapedurl, thumbnail=scrapedthumbnail, plot=scrapedplot, show=scrapedtitle, fulltitle=fulltitle))
  282.  
  283.     return itemlist
  284.  
  285. def findvideos(item):
  286.     logger.info("[animeid.py] findvideos")
  287.     itemlist=[]
  288.    
  289.     from core import unpackerjs3
  290.  
  291.     # Busca el argumento
  292.     data = scrapertools.cache_page(item.url)
  293.     patron = '<img src="[^"]+" class="simg" align="left"[^>]+>(.*?)</div>'
  294.     matches = re.compile(patron,re.DOTALL).findall(data)
  295.     if len(matches)>0:
  296.         scrapedplot = matches[0]
  297.     else:
  298.         scrapedplot = item.plot
  299.    
  300.     patron = "(<script>eval\(function\(p,a,c,k,e,d\).*?</script>)"
  301.     matches = re.compile(patron,re.DOTALL).findall(data)
  302.     scrapertools.printMatches(matches)
  303.     for match in matches:
  304.         data = unpackerjs3.unpackjs(match)
  305.         logger.info("data="+data)
  306.  
  307.         # Ahora busca los vídeos
  308.         itemlist.extend( servertools.find_video_items(data=data) )
  309.  
  310.     for videoitem in itemlist:
  311.         videoitem.channel = __channel__
  312.         videoitem.plot = scrapedplot
  313.         videoitem.thumbnail = item.thumbnail
  314.         videoitem.fulltitle = item.title
  315.         videoitem.title = item.title + videoitem.title
  316.        
  317.     '''
  318.    #<div style="display:none;" id="videoi">i=yayIeoN8foWQv8p8qY9xgXy4d7W7wYnHhrDPs70=</div>
  319.    codigo_video_plugin = scrapertools.get_match(data,'<div[^>]+>i\=([^<]+)</div>')
  320.    #http://prueba.animeflv.net/mf.php?id=yayIeoN8foWQv8p8qY9xgXy4d7W7wYnHhrDPs70=&paso=obtener
  321.    url="http://prueba.animeflv.net/mf.php?id="+codigo_video_plugin+"&paso=obtener"
  322.    data = scrapertools.cache_page(url)
  323.    #<embed allowfullscreen="true" src="/archivos/player.swf" bgcolor="#000" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="file=http://205.196.121.103/khff8ehdgfdg/mu0d5033k2ook7r/%5BVagoSubs%5D+Kurokos+Basketball+08+%5B480p%5D.mp4&autostart=true&provider=video" height="100%" width="100%">
  324.    mediaurl = scrapertools.get_match(data,'<embed.*?flashvars\="file\=([^\&]+)&')
  325.    logger.info("data="+data)
  326.    itemlist.append( Item( channel=__channel__, title=item.title+" (acceso plugin) - [directo]", action="play", url=mediaurl, server="directo", thumbnail=item.thumbnail, plot=scrapedplot, fulltitle=item.title, folder=False) )
  327.    '''
  328.    
  329.     return itemlist
  330.  
  331. # Verificación automática de canales: Esta función debe devolver "True" si todo está ok en el canal.
  332. def test():
  333.     bien = True
  334.    
  335.     # mainlist
  336.     mainlist_items = mainlist(Item())
  337.    
  338.     # Comprueba que todas las opciones tengan algo (excepto el buscador)
  339.     for mainlist_item in mainlist_items:
  340.         if mainlist_item.action!="search":
  341.             exec "itemlist = "+mainlist_item.action+"(mainlist_item)"
  342.             if len(itemlist)==0:
  343.                 return false
  344.    
  345.     # Comprueba si alguno de los vídeos de "Novedades" devuelve mirrors
  346.     episodios_items = newlist(mainlist_items[0])
  347.    
  348.     bien = False
  349.     for episodio_item in episodios_items:
  350.         mirrors = servertools.find_video_items(item=episodio_item)
  351.         if len(mirrors)>0:
  352.             bien = True
  353.             break
  354.    
  355.     return bien
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement