1763 lines
86 KiB
Python
Executable File
1763 lines
86 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import re
|
|
import urllib
|
|
import urllib2
|
|
import urlparse
|
|
|
|
from core import logger
|
|
from core import scrapertools
|
|
from core.item import Item
|
|
|
|
try:
|
|
import xbmc
|
|
import xbmcgui
|
|
except:
|
|
pass
|
|
|
|
host = "http://bityouth.com/"
|
|
|
|
|
|
def browser(url):
|
|
import mechanize
|
|
|
|
# Utilizamos Browser mechanize para saltar problemas con la busqueda en bing
|
|
br = mechanize.Browser()
|
|
# Browser options
|
|
br.set_handle_equiv(False)
|
|
br.set_handle_gzip(True)
|
|
br.set_handle_redirect(True)
|
|
br.set_handle_referer(False)
|
|
br.set_handle_robots(False)
|
|
# Follows refresh 0 but not hangs on refresh > 0
|
|
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
|
|
|
|
# Want debugging messages?
|
|
# br.set_debug_http(True)
|
|
# br.set_debug_redirects(True)
|
|
# br.set_debug_responses(True)
|
|
|
|
# User-Agent (this is cheating, ok?)
|
|
br.addheaders = [('User-agent',
|
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/7.1.7 Safari/537.85.16')]
|
|
# br.addheaders =[('Cookie','SRCHD=D=4210979&AF=NOFORM; domain=.bing.com; expires=Wednesday, 09-Nov-06 23:12:40 GMT; MUIDB=36F71C46589F6EAD0BE714175C9F68FC; domain=www.bing.com; expires=15 de enero de 2018 08:43:26 GMT+1')]
|
|
# Open some site, let's pick a random one, the first that pops in mind
|
|
r = br.open(url)
|
|
response = r.read()
|
|
# if "z{a:1}" in response:
|
|
if not ".ftrH,.ftrHd,.ftrD>" in response:
|
|
print "proooxyy"
|
|
r = br.open("http://anonymouse.org/cgi-bin/anon-www.cgi/" + url)
|
|
response = r.read()
|
|
return response
|
|
###def proxy(url):
|
|
'''from lib import requests
|
|
proxies = {"http": "http://anonymouse.org/cgi-bin/anon-www.cgi/"+url}
|
|
print "zorro"
|
|
print proxies
|
|
rsp = requests.get(url, proxies=proxies,stream=True)
|
|
print rsp.raw._fp.fp._sock.getpeername()
|
|
print rsp.content
|
|
response = rsp.content
|
|
return response'''
|
|
|
|
|
|
def mainlist(item):
|
|
logger.info()
|
|
itemlist = []
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR skyblue][B]Generos[/B][/COLOR]", action="generos",
|
|
url="http://bityouth.com", thumbnail="http://s6.postimg.org/ybey4gxu9/bityougenerosthum3.png",
|
|
fanart="http://s18.postimg.org/l4judlx09/bityougenerosfan.jpg"))
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR skyblue][B]Puntuacion[/B][/COLOR]", action="scraper",
|
|
url="http://bityouth.com/more_elements/0/?o=pd",
|
|
thumbnail="http://s6.postimg.org/n1qtn9i6p/bityoupuntothum4.png",
|
|
fanart="http://s6.postimg.org/qrh9oof9t/bityoupuntofan.jpg"))
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR skyblue][B]Novedades[/B][/COLOR]", action="scraper",
|
|
url="http://bityouth.com/more_elements/0/?o=",
|
|
thumbnail="http://s6.postimg.org/bry3sbd5d/bityounovedathum2.png",
|
|
fanart="http://s6.postimg.org/ys4r4naz5/bityounovedadfan.jpg"))
|
|
import xbmc
|
|
if xbmc.Player().isPlaying():
|
|
xbmc.executebuiltin('xbmc.PlayMedia(Stop)')
|
|
SEARCHDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "search.txt")
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "Appcommand borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
print "No hay customs"
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR skyblue][B]Series[/B][/COLOR]", action="scraper",
|
|
url="http://bityouth.com/more_elements/0/genero/serie_de_tv?o=",
|
|
thumbnail="http://s6.postimg.org/59j1km53l/bityouseriesthum.png",
|
|
fanart="http://s6.postimg.org/45yx8nkgh/bityouseriesfan3.jpg"))
|
|
if xbmc.Player().isPlaying():
|
|
xbmc.executebuiltin('xbmc.PlayMedia(Stop)')
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
TRAILERDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "trailer.txt")
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "Appcommand borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
print "No hay customs"
|
|
try:
|
|
os.remove(SEARCHDESTFILE)
|
|
print "Custom search.txt borrado"
|
|
except:
|
|
print "No hay search.txt"
|
|
|
|
try:
|
|
os.remove(TRAILERDESTFILE)
|
|
print "Custom Trailer.txt borrado"
|
|
except:
|
|
print "No hay Trailer.txt"
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR skyblue][B]Buscar...[/B][/COLOR]", action="search", url="",
|
|
thumbnail="http://s6.postimg.org/48isvho41/bityousearchthum.png",
|
|
fanart="http://s6.postimg.org/ic5hcegk1/bityousearchfan.jpg", plot="search"))
|
|
|
|
return itemlist
|
|
|
|
|
|
def search(item, texto):
|
|
logger.info()
|
|
|
|
itemlist = []
|
|
|
|
if item.url == "":
|
|
item.url = "http://bityouth.com/busqueda/"
|
|
|
|
item.url = item.url + texto
|
|
item.url = item.url.replace(" ", "%20")
|
|
|
|
data = scrapertools.cache_page(item.url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
patron = '<div class="title">.*?title="([^<]+)" '
|
|
patron += 'href="([^"]+)".*?'
|
|
patron += '<h2 itemprop="name">([^<]+)</h2>.*?'
|
|
patron += '<img itemprop="image" src="([^"]+)".*?'
|
|
patron += '<a href="/year/(\d+)".*?'
|
|
patron += '<div id="sinopsys">(.*?)</div>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
|
|
if len(matches) == 0:
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR gold][B]Sin resultados...[/B][/COLOR]",
|
|
thumbnail="http://s6.postimg.org/jp5jx97ip/bityoucancel.png",
|
|
fanart="http://s6.postimg.org/vfjhen0b5/bityounieve.jpg", folder=False))
|
|
|
|
for scrapedrate, scrapedurl, scrapedtitle, scrapedthumbnail, scrapedyear, scrapedplot in matches:
|
|
title_fan = scrapedtitle.strip()
|
|
if " /10" in scrapedrate:
|
|
scrapedrate = scrapedrate.replace(" /10", " [COLOR red]Sin Puntuacion[/COLOR] ")
|
|
scrapedrate = scrapedrate.replace("Valoracion", "")
|
|
trailer = scrapedtitle + " " + scrapedyear + " trailer"
|
|
trailer = urllib.quote(trailer)
|
|
scrapedtitle = scrapedtitle.replace(scrapedtitle, "[COLOR white]" + scrapedtitle + "[/COLOR]")
|
|
scrapedrate = scrapedrate.replace(scrapedrate, "[COLOR gold][B]" + scrapedrate + "[/B][/COLOR]")
|
|
scrapedrate = scrapedrate.replace("Valoracion", "[COLOR skyblue]Valoracion[/COLOR]")
|
|
if not "serie_de_tv" in item.url:
|
|
scrapedtitle = scrapedtitle.replace("(Serie de TV)", "[COLOR royalblue](Serie de TV)[/COLOR]")
|
|
else:
|
|
scrapedtitle = scrapedtitle.replace("(Serie de TV)", "")
|
|
|
|
scrapedtitle = scrapedtitle.replace("torrent", "")
|
|
scrapedtitle = scrapedtitle.replace("torrent", "")
|
|
title = scrapedtitle + "--" + scrapedrate
|
|
url = urlparse.urljoin(host, scrapedurl)
|
|
thumbnail = urlparse.urljoin(host, scrapedthumbnail)
|
|
|
|
if "Miniserie de TV" in scrapedplot:
|
|
extra = "series"
|
|
else:
|
|
extra = ""
|
|
if "_serie_de_tv" in scrapedurl or "Miniserie de TV" in scrapedplot:
|
|
import xbmc
|
|
SEARCHDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "search.txt")
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/search.txt",
|
|
SEARCHDESTFILE)
|
|
show = title_fan + "|" + scrapedyear + "|" + trailer
|
|
itemlist.append(Item(channel=item.channel, action="fanart", title=title, url=url, thumbnail=thumbnail,
|
|
fanart="http://s6.postimg.org/y1uehu24x/bityougeneralfan.jpg", plot=trailer, show=show,
|
|
extra=extra, folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def generos(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.cache_page(item.url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
patron = '<li><a href="([^<]+)" title.*?Bityouth">([^<]+)</a></li>'
|
|
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
|
|
for scrapedurl, scrapedtitle in matches:
|
|
if "Acción" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/tbbxshsgh/bityouaccionthumb.png"
|
|
fanart = "http://s6.postimg.org/iagsnh07l/bityouaccion.jpg"
|
|
elif "Animación" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/4w3prftjl/bityouanimacionthum.png"
|
|
fanart = "http://s6.postimg.org/n06qc2r81/bityouanimacionfan.jpg"
|
|
elif "Aventuras" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/bdr7ootap/bityouadventurethum.png"
|
|
fanart = "http://s6.postimg.org/lzb30ozm9/bityouadventurefan.jpg"
|
|
elif "Bélica" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/5fdeegac1/bityouguerrathum.png"
|
|
fanart = "http://s6.postimg.org/acqyzkcb5/bityouguerrafan.jpg"
|
|
elif "Ciencia" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/cxwjn31ox/bityoucienciaficcionthum.png"
|
|
fanart = "http://s6.postimg.org/gszxpnkup/cienciaficcionbityoufan.jpg"
|
|
elif "Cine" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/y7orbo7dd/bityoucinenegrothum.png"
|
|
fanart = "http://s6.postimg.org/m4jfo3wb5/bityoucinenegrofan.jpg"
|
|
elif "Comedia" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/jea3qwzm9/bityouxomediathum.png"
|
|
fanart = "http://s6.postimg.org/v4o18asep/bityoucomediafan2.png"
|
|
elif "Docu" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/ifyc2dbo1/bityoudocuthumb.png"
|
|
fanart = "http://s6.postimg.org/xn9q8ze4x/bityoudocufan.jpg"
|
|
elif "Drama" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/5r41ip5jl/bityoudramathumb.png "
|
|
fanart = "http://s6.postimg.org/wawmku635/bityoudramafan.jpg"
|
|
elif "Fant" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/9sl4ocxu9/bityoufantasiathum.png"
|
|
fanart = "http://s6.postimg.org/xiakd1w7l/bityoufantasiafan.jpg"
|
|
elif "Infantil" in scrapedtitle:
|
|
thumbnail = "http://s6.postimg.org/j6e75o7rl/bityouinfathumb.png"
|
|
fanart = "http://s6.postimg.org/f4s22w95d/bityouanimacionfan.jpg"
|
|
elif "Intriga" in scrapedtitle:
|
|
thumbnail = "http://s22.postimg.org/vpmmbystd/bityouintrigthum.png"
|
|
fanart = "http://s27.postimg.org/zee2hh7xv/bityouintrigfan.jpg"
|
|
elif "Musical" in scrapedtitle:
|
|
thumbnail = "http://s8.postimg.org/u3wlw5eet/bityoumusithum.png"
|
|
fanart = "http://s17.postimg.org/l21xuwt5r/bityoumusifan.jpg"
|
|
elif "Romance" in scrapedtitle:
|
|
thumbnail = "http://s4.postimg.org/q6v7eq6e5/bityouromancethum.png"
|
|
fanart = "http://s9.postimg.org/3o4qd4dsf/bityouromancefan.jpg"
|
|
elif "Terror" in scrapedtitle:
|
|
thumbnail = "http://s9.postimg.org/yntipquvj/bityouterrorthum.png"
|
|
fanart = "http://s3.postimg.org/wwq3dnpgz/bityouterrorfan.jpg"
|
|
elif "Thr" in scrapedtitle:
|
|
thumbnail = "http://s17.postimg.org/eldin5an3/bityouthrithum.png"
|
|
fanart = "http://s2.postimg.org/fnqykvb9l/bityouthrifan.jpg"
|
|
elif "West" in scrapedtitle:
|
|
thumbnail = "http://s23.postimg.org/hjq6wjakb/bityouwesterthum.png"
|
|
fanart = "http://s7.postimg.org/wzrh42ltn/bityouwesterfan.jpg"
|
|
|
|
scrapedtitle = scrapedtitle.replace("ó", "o")
|
|
scrapedtitle = scrapedtitle.replace("é", "e")
|
|
url = "http://bityouth.com/more_elements/0/genero/" + scrapedtitle
|
|
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="scraper", title=scrapedtitle, thumbnail=thumbnail, fanart=fanart,
|
|
url=url, folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def scraper(item):
|
|
logger.info()
|
|
itemlist = []
|
|
import xbmc
|
|
if xbmc.Player().isPlaying():
|
|
xbmc.executebuiltin('xbmc.PlayMedia(Stop)')
|
|
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
TRAILERDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "trailer.txt")
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "App borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
print "No hay customs"
|
|
try:
|
|
os.remove(TRAILERDESTFILE)
|
|
print "Trailer.txt borrado"
|
|
except:
|
|
print "No hay Trailer.txt"
|
|
|
|
data = scrapertools.cache_page(item.url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| |&", "", data)
|
|
|
|
patron = '<div class="title">.*?title="([^<]+)" '
|
|
patron += 'href="([^"]+)".*?'
|
|
patron += '<h2 itemprop="name">([^<]+)</h2>.*?'
|
|
patron += '<img itemprop="image" src="([^"]+)".*?'
|
|
patron += '<a href="/year/(\d+)".*?'
|
|
patron += '<div id="sinopsys">(.*?)</div>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
|
|
for scrapedrate, scrapedurl, scrapedtitle, scrapedthumbnail, scrapedyear, scrapedplot in matches:
|
|
title_fan = scrapedtitle.strip()
|
|
if " /10" in scrapedrate:
|
|
scrapedrate = scrapedrate.replace(" /10", " [COLOR red]Sin Puntuacion[/COLOR] ")
|
|
scrapedrate = scrapedrate.replace("Valoracion", "")
|
|
trailer = scrapedtitle + " " + scrapedyear + " trailer"
|
|
trailer = urllib.quote(trailer)
|
|
scrapedtitle = scrapedtitle.replace(scrapedtitle, "[COLOR white]" + scrapedtitle + "[/COLOR]")
|
|
scrapedrate = scrapedrate.replace(scrapedrate, "[COLOR gold][B]" + scrapedrate + "[/B][/COLOR]")
|
|
scrapedrate = scrapedrate.replace("Valoracion", "[COLOR skyblue]Valoracion[/COLOR]")
|
|
if not "serie_de_tv" in item.url:
|
|
scrapedtitle = scrapedtitle.replace("(Serie de TV)", "[COLOR royalblue](Serie de TV)[/COLOR]")
|
|
else:
|
|
scrapedtitle = scrapedtitle.replace("(Serie de TV)", "")
|
|
|
|
scrapedtitle = scrapedtitle.replace("torrent", "")
|
|
|
|
title = scrapedtitle + "--" + scrapedrate
|
|
url = urlparse.urljoin(host, scrapedurl)
|
|
thumbnail = urlparse.urljoin(host, scrapedthumbnail)
|
|
if "Miniserie de TV" in scrapedplot:
|
|
extra = "series"
|
|
else:
|
|
extra = ""
|
|
show = title_fan + "|" + scrapedyear + "|" + trailer
|
|
itemlist.append(Item(channel=item.channel, action="fanart", title=title, url=url, thumbnail=thumbnail,
|
|
fanart="http://s6.postimg.org/y1uehu24x/bityougeneralfan.jpg", plot=trailer, extra=extra,
|
|
show=show, folder=True))
|
|
|
|
# paginacion
|
|
data = scrapertools.cache_page(item.url)
|
|
if not "<div class=\"title\">" in data:
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR gold][B]No hay mas paginas...[/B][/COLOR]",
|
|
thumbnail="http://s6.postimg.org/f4es4kyfl/bityou_Sorry.png",
|
|
fanart="http://s6.postimg.org/y1uehu24x/bityougeneralfan.jpg", folder=False))
|
|
else:
|
|
|
|
current_page_number = int(scrapertools.get_match(item.url, 'more_elements/(\d+)'))
|
|
item.url = re.sub(r"more_elements/\d+", "more_elements/{0}", item.url)
|
|
|
|
next_page_number = current_page_number + 40
|
|
next_page = item.url.format(next_page_number)
|
|
|
|
title = "[COLOR skyblue]Pagina siguiente>>[/COLOR]"
|
|
|
|
itemlist.append(Item(channel=item.channel, title=title, url=next_page,
|
|
fanart="http://s6.postimg.org/y1uehu24x/bityougeneralfan.jpg",
|
|
thumbnail="http://s6.postimg.org/kbzv91f0x/bityouflecha2.png",
|
|
action="scraper", folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def fanart(item):
|
|
# Vamos a sacar todos los fanarts y arts posibles
|
|
logger.info()
|
|
itemlist = []
|
|
url = item.url
|
|
data = scrapertools.cachePage(url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}|\(.*?\)|\[.*?\]| ", "", data)
|
|
year = item.show.split("|")[1]
|
|
title = item.show.split("|")[0]
|
|
trailer = item.show.split("|")[2]
|
|
print "joder"
|
|
print title
|
|
if title == "Érase una vez (Serie de TV)":
|
|
title = "Once upon in time"
|
|
|
|
import xbmc
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
title = title.replace('á', 'a')
|
|
title = title.replace('Á', 'A')
|
|
title = title.replace('é', 'e')
|
|
title = title.replace('É', 'E')
|
|
title = title.replace('í', 'i')
|
|
title = title.replace('Í', 'i')
|
|
title = title.replace('ó', 'o')
|
|
title = title.replace('Ó', 'o')
|
|
title = title.replace('ú', 'u')
|
|
title = title.replace('Ú', 'U')
|
|
title = title.replace('ñ', 'n')
|
|
title = title.replace('Ñ', 'N')
|
|
if not "_serie_de_tv" in item.url and not item.extra == "series":
|
|
title = title.replace("(Serie de TV)", "")
|
|
title = title.replace("torrent", "")
|
|
|
|
try:
|
|
try:
|
|
###Busqueda en Tmdb la peli por titulo y año
|
|
title_tmdb = title.replace(" ", "%20")
|
|
url_tmdb = "http://api.themoviedb.org/3/search/movie?api_key=2e2160006592024ba87ccdf78c28f49f&query=" + title_tmdb + "&year=" + year + "&language=es&include_adult=false"
|
|
data = scrapertools.cachePage(url_tmdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id = scrapertools.get_match(data, '"page":1.*?,"id":(.*?),')
|
|
plot = scrapertools.get_match(data, '"page":1.*?,"overview":"(.*?)",')
|
|
except:
|
|
if ":" in title or "(" in title:
|
|
title_tmdb = title.replace(" ", "%20")
|
|
url_tmdb = "http://api.themoviedb.org/3/search/movie?api_key=2e2160006592024ba87ccdf78c28f49f&query=" + title_tmdb + "&year=" + year + "&language=es&include_adult=false"
|
|
data = scrapertools.cachePage(url_tmdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id = scrapertools.get_match(data, '"page":1.*?,"id":(.*?),')
|
|
plot = scrapertools.get_match(data, '"page":1.*?,"overview":"(.*?)",')
|
|
else:
|
|
title_tmdb = title.replace(" ", "%20")
|
|
title_tmdb = re.sub(r"(:.*)|\(.*?\)", "", title_tmdb)
|
|
url_tmdb = "http://api.themoviedb.org/3/search/movie?api_key=2e2160006592024ba87ccdf78c28f49f&query=" + title_tmdb + "&year=" + year + "&language=es&include_adult=false"
|
|
data = scrapertools.cachePage(url_tmdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id = scrapertools.get_match(data, '"page":1.*?,"id":(.*?),')
|
|
plot = scrapertools.get_match(data, '"page":1.*?,"overview":"(.*?)",')
|
|
|
|
|
|
except:
|
|
###Si no hay coincidencia realiza busqueda por bing del id Imdb
|
|
urlbing_imdb = "http://www.bing.com/search?q=%s+%s+site:imdb.com" % (title.replace(' ', '+'), year)
|
|
data = browser(urlbing_imdb)
|
|
'''if "z{a:1}"in data:
|
|
data = proxy(urlbing_imdb)'''
|
|
try:
|
|
subdata_imdb = scrapertools.get_match(data, '<li class="b_algo">(.*?)h="ID')
|
|
subdata_imdb = re.sub("http://anonymouse.org/cgi-bin/anon-www.cgi/", "", subdata_imdb)
|
|
except:
|
|
pass
|
|
|
|
try:
|
|
url_imdb = scrapertools.get_match(subdata_imdb, '<a href="([^"]+)"')
|
|
|
|
except:
|
|
pass
|
|
try:
|
|
id_imdb = scrapertools.get_match(url_imdb, '.*?www.imdb.com/.*?/(.*?)/')
|
|
except:
|
|
pass
|
|
try:
|
|
###Busca id Tmdb mediante el id de Imdb
|
|
urltmdb_remote = "https://api.themoviedb.org/3/find/" + id_imdb + "?external_source=imdb_id&api_key=2e2160006592024ba87ccdf78c28f49f&language=es&include_adult=false"
|
|
|
|
data = scrapertools.cachePage(urltmdb_remote)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id = scrapertools.get_match(data, '"movie_results".*?,"id":(\d+)')
|
|
plot = scrapertools.get_match(data, '"movie_results".*?,"overview":"(.*?)",')
|
|
except:
|
|
id = ""
|
|
plot = ""
|
|
|
|
###Llegados aqui ya tenemos(o no) el id(Tmdb);Busca fanart_1
|
|
urltmdb_fan1 = "http://api.themoviedb.org/3/movie/" + id + "?api_key=2e2160006592024ba87ccdf78c28f49f"
|
|
data = scrapertools.cachePage(urltmdb_fan1)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '"adult".*?"backdrop_path":"(.*?)"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
try:
|
|
###Prueba poster de Tmdb
|
|
posterdb = scrapertools.get_match(data, '"adult".*?"poster_path":"(.*?)"')
|
|
posterdb = "https://image.tmdb.org/t/p/original" + posterdb
|
|
except:
|
|
posterdb = item.thumbnail
|
|
|
|
if len(matches) == 0:
|
|
###Si no encuentra fanart_1 en Tmdb realiza busqueda directamente en Imdb
|
|
try:
|
|
|
|
urlbing_imdb = "http://www.bing.com/search?q=imdb+movie+%s+%s" % (title.replace(' ', '+'), year)
|
|
data = browser(urlbing_imdb)
|
|
'''if "z{a:1}"in data:
|
|
data = proxy(urlbing_imdb)'''
|
|
try:
|
|
subdata_imdb = scrapertools.get_match(data, '<li class="b_algo">(.*?)h="ID')
|
|
subdata_imdb = re.sub("http://anonymouse.org/cgi-bin/anon-www.cgi/", "", subdata_imdb)
|
|
except:
|
|
pass
|
|
try:
|
|
url_imdb = scrapertools.get_match(subdata_imdb, '<a href="([^"]+)"')
|
|
except:
|
|
url_imdb = data
|
|
data = scrapertools.cachePage(url_imdb)
|
|
|
|
try:
|
|
poster_imdb = scrapertools.get_match(data, '<td rowspan="2" id="img_primary">.*?src="([^"]+)"')
|
|
poster_imdb = poster_imdb.replace("._.*?jpg", "._V1_SX640_SY720_.jpg")
|
|
|
|
except:
|
|
poster_imdb = posterdb
|
|
|
|
try:
|
|
url_photo = scrapertools.get_match(data,
|
|
'<div class="combined-see-more see-more">.*?<a href="([^"]+)"')
|
|
url_photos = "http://www.imdb.com" + url_photo
|
|
data = scrapertools.cachePage(url_photos)
|
|
try:
|
|
photo_imdb = scrapertools.get_match(data, '<div class="media_index_thumb_list".*?src="([^"]+)"')
|
|
photo_imdb = re.sub(r"._.*?jpg", "._V1_SX1280_SY720_.jpg", photo_imdb)
|
|
|
|
except:
|
|
pass
|
|
|
|
try:
|
|
photo_imdb2 = scrapertools.get_match(data,
|
|
'<div class="media_index_thumb_list".*?src=.*?src="([^"]+)"')
|
|
photo_imdb2 = re.sub(r"._.*?jpg", "._V1_SX1280_SY720_.jpg", photo_imdb2)
|
|
except:
|
|
pass
|
|
try:
|
|
photo_imdb3 = scrapertools.get_match(data,
|
|
'<div class="media_index_thumb_list".*?src=.*?src=.*?src="([^"]+)"')
|
|
photo_imdb3 = re.sub(r"._.*?jpg", "._V1_SX1280_SY720_.jpg", photo_imdb3)
|
|
except:
|
|
pass
|
|
try:
|
|
photo_imdb4 = scrapertools.get_match(data,
|
|
'<div class="media_index_thumb_list".*?src=.*?src=.*?src=.*?src="([^"]+)"')
|
|
photo_imdb4 = re.sub(r"._.*?jpg", "._V1_SX1280_SY720_.jpg", photo_imdb4)
|
|
except:
|
|
pass
|
|
|
|
except:
|
|
pass
|
|
except:
|
|
pass
|
|
extra = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
|
|
try:
|
|
fanart_1 = photo_imdb3
|
|
except:
|
|
try:
|
|
fanart_1 = photo_imdb2
|
|
except:
|
|
try:
|
|
fanart_1 = photo_imdb1
|
|
except:
|
|
fanart_1 = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
|
|
try:
|
|
fanart_2 = photo_imdb4
|
|
except:
|
|
try:
|
|
fanart_2 = photo_imdb2
|
|
except:
|
|
try:
|
|
fanart_2 = photo_imdb
|
|
except:
|
|
fanart_2 = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
try:
|
|
fanart_info = photo_imdb2
|
|
except:
|
|
try:
|
|
fanart_info = photo_imdb
|
|
except:
|
|
fanart_info = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
|
|
try:
|
|
fanart_trailer = photo_imdb3
|
|
except:
|
|
try:
|
|
fanart_trailer = photo_imdb2
|
|
except:
|
|
try:
|
|
fanart_trailer = photo_imdb
|
|
except:
|
|
fanart_trailer = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
|
|
try:
|
|
category = photo_imdb3
|
|
except:
|
|
try:
|
|
category = photo_imdb
|
|
except:
|
|
try:
|
|
category = photo_imdb3
|
|
except:
|
|
category = "http://s6.postimg.org/mh3umjzkh/bityouthnofanventanuco.jpg"
|
|
try:
|
|
fanart = photo_imdb
|
|
except:
|
|
try:
|
|
fanart = photo_imdb2
|
|
except:
|
|
try:
|
|
fanart = photo_imdb3
|
|
except:
|
|
fanart = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
try:
|
|
show = photo_imdb4
|
|
except:
|
|
try:
|
|
show = photo_imdb2
|
|
except:
|
|
try:
|
|
show = photo_imdb
|
|
except:
|
|
show = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
|
|
###Encontrado fanart_1 en Tmdb
|
|
for fan in matches:
|
|
|
|
fanart = "https://image.tmdb.org/t/p/original" + fan
|
|
fanart_1 = fanart
|
|
print "faan"
|
|
print fanart_1
|
|
###Busca fanart para info, fanart para trailer y fanart_2(finvideos) en Tmdb
|
|
urltmdb_images = "http://api.themoviedb.org/3/movie/" + id + "/images?api_key=2e2160006592024ba87ccdf78c28f49f"
|
|
data = scrapertools.cachePage(urltmdb_images)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
patron = '"backdrops".*?"file_path":".*?",.*?"file_path":"(.*?)",.*?"file_path":"(.*?)",.*?"file_path":"(.*?)"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
|
|
if len(matches) == 0:
|
|
patron = '"backdrops".*?"file_path":"(.*?)",.*?"file_path":"(.*?)",.*?"file_path":"(.*?)"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
fanart_info = fanart_1
|
|
fanart_trailer = fanart_1
|
|
fanart_2 = fanart_1
|
|
category = ""
|
|
for fanart_info, fanart_trailer, fanart_2 in matches:
|
|
fanart_info = "https://image.tmdb.org/t/p/original" + fanart_info
|
|
fanart_trailer = "https://image.tmdb.org/t/p/original" + fanart_trailer
|
|
fanart_2 = "https://image.tmdb.org/t/p/original" + fanart_2
|
|
category = ""
|
|
|
|
if fanart_info == fanart:
|
|
###Busca fanart_info en Imdb si coincide con fanart
|
|
try:
|
|
url_imdbphoto = "http://www.imdb.com/title/" + id_imdb + "/mediaindex"
|
|
photo_imdb = scrapertools.get_match(url_imdbphoto,
|
|
'<div class="media_index_thumb_list".*?src="([^"]+)"')
|
|
photo_imdb = photo_imdb.replace("@._V1_UY100_CR25,0,100,100_AL_.jpg", "@._V1_SX1280_SY720_.jpg")
|
|
fanart_info = photo_imdb
|
|
except:
|
|
fanart_info = fanart_2
|
|
|
|
# fanart_2 y arts
|
|
|
|
url = "http://webservice.fanart.tv/v3/movies/" + id + "?api_key=dffe90fba4d02c199ae7a9e71330c987"
|
|
data = scrapertools.cachePage(url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '"hdmovielogo":.*?"url": "([^"]+)"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if '"moviedisc"' in data:
|
|
disc = scrapertools.get_match(data, '"moviedisc":.*?"url": "([^"]+)"')
|
|
if '"movieposter"' in data:
|
|
poster = scrapertools.get_match(data, '"movieposter":.*?"url": "([^"]+)"')
|
|
if '"moviethumb"' in data:
|
|
thumb = scrapertools.get_match(data, '"moviethumb":.*?"url": "([^"]+)"')
|
|
if '"moviebanner"' in data:
|
|
banner = scrapertools.get_match(data, '"moviebanner":.*?"url": "([^"]+)"')
|
|
|
|
if len(matches) == 0:
|
|
extra = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
show = fanart_2
|
|
if category == "":
|
|
category = fanart_1
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos_pelis", url=item.url,
|
|
thumbnail=posterdb, fanart=fanart, extra=extra, show=show, category=category,
|
|
folder=True))
|
|
|
|
for logo in matches:
|
|
if '"hdmovieclearart"' in data:
|
|
clear = scrapertools.get_match(data, '"hdmovieclearart":.*?"url": "([^"]+)"')
|
|
if '"moviebackground"' in data:
|
|
extra = clear
|
|
show = fanart_2
|
|
if '"moviebanner"' in data:
|
|
category = banner
|
|
else:
|
|
category = clear
|
|
itemlist.append(
|
|
Item(channel=item.channel, title=item.title, action="findvideos_pelis", url=item.url,
|
|
thumbnail=logo, fanart=fanart_1, extra=extra, show=show, category=category, folder=True))
|
|
else:
|
|
extra = clear
|
|
show = fanart_2
|
|
if '"moviebanner"' in data:
|
|
category = banner
|
|
else:
|
|
category = clear
|
|
itemlist.append(
|
|
Item(channel=item.channel, title=item.title, action="findvideos_pelis", url=item.url,
|
|
thumbnail=logo, fanart=fanart_1, extra=extra, show=show, category=category, folder=True))
|
|
|
|
if '"moviebackground"' in data:
|
|
|
|
if '"hdmovieclearart"' in data:
|
|
clear = scrapertools.get_match(data, '"hdmovieclearart":.*?"url": "([^"]+)"')
|
|
extra = clear
|
|
show = fanart_2
|
|
if '"moviebanner"' in data:
|
|
category = banner
|
|
else:
|
|
category = clear
|
|
|
|
else:
|
|
extra = logo
|
|
show = fanart_2
|
|
if '"moviebanner"' in data:
|
|
category = banner
|
|
else:
|
|
category = logo
|
|
itemlist.append(
|
|
Item(channel=item.channel, title=item.title, action="findvideos_pelis", url=item.url,
|
|
thumbnail=logo, fanart=fanart_1, extra=extra, show=show, category=category, folder=True))
|
|
|
|
if not '"hdmovieclearart"' in data and not '"moviebackground"' in data:
|
|
extra = logo
|
|
show = fanart_2
|
|
if '"moviebanner"' in data:
|
|
category = banner
|
|
else:
|
|
category = fanart_1
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos_pelis", url=item.url,
|
|
thumbnail=logo, fanart=fanart_1, category=category, extra=extra, show=show,
|
|
folder=True))
|
|
|
|
if "_serie_de_tv" in item.url or item.extra == "series":
|
|
# Establece destino customkey
|
|
import xbmc
|
|
SEARCHDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "search.txt")
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
TRAILERDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "trailer.txt")
|
|
item.title = item.title.replace("(Serie de TV)", "")
|
|
title = re.sub(r"\(.*?\)", "", title).strip()
|
|
title_tunes = (translate(title, "en"))
|
|
|
|
###Prepara customkeys y borra cuando vuelve
|
|
import xbmc
|
|
if not xbmc.Player().isPlaying() and not os.path.exists(TRAILERDESTFILE):
|
|
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "Appcommand borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
print "No hay customs"
|
|
|
|
try:
|
|
import xbmc
|
|
###Busca música serie y caraga customkey. En la vuelta evita busqueda si ya suena música
|
|
url_bing = "http://www.bing.com/search?q=%s+theme+song+site:televisiontunes.com" % title_tunes.replace(
|
|
' ', '+')
|
|
# Llamamos al browser de mechanize. Se reitera en todas las busquedas bing
|
|
data = browser(url_bing)
|
|
'''if "z{a:1}"in data:
|
|
data = proxy(url_bing)'''
|
|
try:
|
|
subdata_tvt = scrapertools.get_match(data, '<li class="b_algo">(.*?)h="ID')
|
|
except:
|
|
pass
|
|
try:
|
|
url_tvt = scrapertools.get_match(subdata_tvt, '<a href="(.*?)"')
|
|
except:
|
|
url_tvt = ""
|
|
|
|
if "-theme-songs.html" in url_tvt:
|
|
url_tvt = ""
|
|
if "http://m.televisiontunes" in url_tvt:
|
|
url_tvt = url_tvt.replace("http://m.televisiontunes", "http://televisiontunes")
|
|
|
|
data = scrapertools.cachePage(url_tvt)
|
|
song = scrapertools.get_match(data, '<form name="song_name_form">.*?type="hidden" value="(.*?)"')
|
|
song = song.replace(" ", "%20")
|
|
|
|
xbmc.executebuiltin('xbmc.PlayMedia(' + song + ')')
|
|
import xbmc, time
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/test.py",
|
|
TESTPYDESTFILE)
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/customkey.xml",
|
|
KEYMAPDESTFILE)
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/remote.xml",
|
|
REMOTEDESTFILE)
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/customapp.xml",
|
|
APPCOMMANDDESTFILE)
|
|
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
|
|
except:
|
|
pass
|
|
try:
|
|
os.remove(TRAILERDESTFILE)
|
|
print "Trailer.txt borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except:
|
|
print "No hay Trailer.txt"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
if os.path.exists(SEARCHDESTFILE):
|
|
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "Appcommand borrado"
|
|
os.remove(SEARCHDESTFILE)
|
|
print "search.txt borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
print "No hay customs"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
|
|
# Busqueda bing de Imdb serie id
|
|
url_imdb = "http://www.bing.com/search?q=%s+%s+tv+series+site:imdb.com" % (title.replace(' ', '+'), year)
|
|
print url_imdb
|
|
data = browser(url_imdb)
|
|
'''if "z{a:1}"in data:
|
|
data = proxy(url_imdb)'''
|
|
print "perro"
|
|
print data
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
try:
|
|
subdata_imdb = scrapertools.get_match(data, '<li class="b_algo">(.*?)h="ID')
|
|
print "ostia"
|
|
print subdata_imdb
|
|
except:
|
|
pass
|
|
print "joder"
|
|
try:
|
|
imdb_id = scrapertools.get_match(subdata_imdb, '<a href=.*?http.*?imdb.com/title/(.*?)/.*?"')
|
|
print "siii?"
|
|
print imdb_id
|
|
except:
|
|
imdb_id = ""
|
|
### Busca id de tvdb mediante imdb id
|
|
urltvdb_remote = "http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=" + imdb_id + "&language=es"
|
|
data = scrapertools.cachePage(urltvdb_remote)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '<Data><Series><seriesid>([^<]+)</seriesid>.*?<Overview>(.*?)</Overview>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
|
|
if len(matches) == 0:
|
|
###Si no hay coincidencia busca en tvdb directamente
|
|
if ":" in title or "(" in title:
|
|
title = title.replace(" ", "%20")
|
|
url_tvdb = "http://thetvdb.com/api/GetSeries.php?seriesname=" + title + "&language=es"
|
|
data = scrapertools.cachePage(url_tvdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '<Data><Series><seriesid>([^<]+)</seriesid>.*?<Overview>(.*?)</Overview>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
title = re.sub(r"(:.*)|\(.*?\)", "", title)
|
|
title = title.replace(" ", "%20")
|
|
url_tvdb = "http://thetvdb.com/api/GetSeries.php?seriesname=" + title + "&language=es"
|
|
data = scrapertools.cachePage(url_tvdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '<Data><Series><seriesid>([^<]+)</seriesid>.*?<Overview>(.*?)</Overview>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
|
|
if len(matches) == 0:
|
|
plot = ""
|
|
postertvdb = item.thumbnail
|
|
extra = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
fanart_info = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
fanart_trailer = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
category = ""
|
|
show = title + "|" + year + "|" + "http://s6.postimg.org/mh3umjzkh/bityouthnofanventanuco.jpg"
|
|
itemlist.append(Item(channel=item.channel, title=item.title, url=item.url, action="finvideos",
|
|
thumbnail=item.thumbnail,
|
|
fanart="http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg", extra=extra,
|
|
category=category, show=show, plot=plot, folder=True))
|
|
|
|
else:
|
|
title = title.replace(" ", "%20")
|
|
url_tvdb = "http://thetvdb.com/api/GetSeries.php?seriesname=" + title + "&language=es"
|
|
data = scrapertools.cachePage(url_tvdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '<Data><Series><seriesid>([^<]+)</seriesid>.*?<Overview>(.*?)</Overview>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
plot = ""
|
|
postertvdb = item.thumbnail
|
|
extra = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
show = title + "|" + year + "|" + "http://s6.postimg.org/mh3umjzkh/bityouthnofanventanuco.jpg"
|
|
fanart_info = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
fanart_trailer = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
category = ""
|
|
itemlist.append(Item(channel=item.channel, title=item.title, url=item.url, action="findvideos",
|
|
thumbnail=item.thumbnail,
|
|
fanart="http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg", extra=extra,
|
|
category=category, show=show, plot=plot, folder=True))
|
|
# fanart
|
|
for id, info in matches:
|
|
try:
|
|
info = (translate(info, "es"))
|
|
except:
|
|
pass
|
|
|
|
category = id
|
|
plot = info
|
|
id_serie = id
|
|
|
|
url = "http://thetvdb.com/api/1D62F2F90030C444/series/" + id_serie + "/banners.xml"
|
|
|
|
data = scrapertools.cachePage(url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '<Banners><Banner>.*?<VignettePath>(.*?)</VignettePath>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
try:
|
|
postertvdb = scrapertools.get_match(data, '<Banners><Banner>.*?<BannerPath>posters/(.*?)</BannerPath>')
|
|
postertvdb = "http://thetvdb.com/banners/_cache/posters/" + postertvdb
|
|
except:
|
|
postertvdb = item.thumbnail
|
|
|
|
if len(matches) == 0:
|
|
extra = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
show = title + "|" + year + "|" + "http://s6.postimg.org/mh3umjzkh/bityouthnofanventanuco.jpg"
|
|
fanart_info = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
fanart_trailer = "http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg"
|
|
itemlist.append(Item(channel=item.channel, title=item.title, url=item.url, action="findvideos",
|
|
thumbnail=postertvdb, fanart="http://s6.postimg.org/6ucl96lsh/bityouthnofan.jpg",
|
|
category=category, extra=extra, show=show, folder=True))
|
|
|
|
for fan in matches:
|
|
fanart = "http://thetvdb.com/banners/" + fan
|
|
fanart_1 = fanart
|
|
patron = '<Banners><Banner>.*?<BannerPath>.*?</BannerPath>.*?</Banner><Banner>.*?<BannerPath>(.*?)</BannerPath>.*?</Banner><Banner>.*?<BannerPath>(.*?)</BannerPath>.*?</Banner><Banner>.*?<BannerPath>(.*?)</BannerPath>'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
fanart_info = fanart_1
|
|
fanart_trailer = fanart_1
|
|
fanart_2 = fanart_1
|
|
show = title + "|" + year + "|" + fanart_1
|
|
extra = postertvdb
|
|
itemlist.append(Item(channel=item.channel, title=item.title, url=item.url, action="findvideos",
|
|
thumbnail=postertvdb, fanart=fanart_1, category=category, extra=extra,
|
|
show=show, folder=True))
|
|
for fanart_info, fanart_trailer, fanart_2 in matches:
|
|
fanart_info = "http://thetvdb.com/banners/" + fanart_info
|
|
fanart_trailer = "http://thetvdb.com/banners/" + fanart_trailer
|
|
fanart_2 = "http://thetvdb.com/banners/" + fanart_2
|
|
# clearart, fanart_2 y logo
|
|
for id in matches:
|
|
url_fanartv = "http://webservice.fanart.tv/v3/tv/" + id_serie + "?api_key=dffe90fba4d02c199ae7a9e71330c987"
|
|
data = scrapertools.cachePage(url_fanartv)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '"clearlogo":.*?"url": "([^"]+)"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if '"tvposter"' in data:
|
|
tvposter = scrapertools.get_match(data, '"tvposter":.*?"url": "([^"]+)"')
|
|
if '"tvbanner"' in data:
|
|
tvbanner = scrapertools.get_match(data, '"tvbanner":.*?"url": "([^"]+)"')
|
|
if '"tvthumb"' in data:
|
|
tvthumb = scrapertools.get_match(data, '"tvthumb":.*?"url": "([^"]+)"')
|
|
if '"hdtvlogo"' in data:
|
|
hdtvlogo = scrapertools.get_match(data, '"hdtvlogo":.*?"url": "([^"]+)"')
|
|
if '"hdclearart"' in data:
|
|
hdtvclear = scrapertools.get_match(data, '"hdclearart":.*?"url": "([^"]+)"')
|
|
if len(matches) == 0:
|
|
item.thumbnail = postertvdb
|
|
if '"hdtvlogo"' in data:
|
|
if "showbackground" in data:
|
|
|
|
if '"hdclearart"' in data:
|
|
thumbnail = hdtvlogo
|
|
extra = hdtvclear
|
|
show = title + "|" + year + "|" + fanart_2
|
|
else:
|
|
thumbnail = hdtvlogo
|
|
extra = thumbnail
|
|
show = title + "|" + year + "|" + fanart_2
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos", url=item.url,
|
|
server="torrent", thumbnail=thumbnail, fanart=fanart_1, category=category,
|
|
extra=extra, show=show, plot=item.plot, folder=True))
|
|
|
|
|
|
else:
|
|
if '"hdclearart"' in data:
|
|
thumbnail = hdtvlogo
|
|
extra = hdtvclear
|
|
show = title + "|" + year + "|" + fanart_2
|
|
else:
|
|
thumbnail = hdtvlogo
|
|
extra = thumbnail
|
|
show = title + "|" + year + "|" + fanart_2
|
|
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos", url=item.url,
|
|
server="torrent", thumbnail=thumbnail, fanart=fanart_1, extra=extra,
|
|
show=show, category=category, plot=item.plot, folder=True))
|
|
else:
|
|
extra = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
show = title + "|" + year + "|" + fanart_2
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos", url=item.url,
|
|
server="torrent", thumbnail=item.thumbnail, fanart=fanart_1, extra=extra,
|
|
show=show, category=category, plot=item.plot, folder=True))
|
|
for logo in matches:
|
|
if '"hdtvlogo"' in data:
|
|
thumbnail = hdtvlogo
|
|
elif not '"hdtvlogo"' in data:
|
|
if '"clearlogo"' in data:
|
|
thumbnail = logo
|
|
else:
|
|
thumbnail = item.thumbnail
|
|
if '"clearart"' in data:
|
|
clear = scrapertools.get_match(data, '"clearart":.*?"url": "([^"]+)"')
|
|
if "showbackground" in data:
|
|
|
|
extra = clear
|
|
show = title + "|" + year + "|" + fanart_2
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos", url=item.url,
|
|
server="torrent", thumbnail=thumbnail, fanart=fanart_1, extra=extra, show=show,
|
|
category=category, plot=item.plot, folder=True))
|
|
else:
|
|
extra = clear
|
|
show = title + "|" + year + "|" + fanart_2
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos", url=item.url,
|
|
server="torrent", thumbnail=thumbnail, fanart=fanart_1, extra=extra, show=show,
|
|
category=category, plot=item.plot, folder=True))
|
|
|
|
if "showbackground" in data:
|
|
|
|
if '"clearart"' in data:
|
|
clear = scrapertools.get_match(data, '"clearart":.*?"url": "([^"]+)"')
|
|
extra = clear
|
|
show = title + "|" + year + "|" + fanart_2
|
|
else:
|
|
extra = logo
|
|
show = title + "|" + year + "|" + fanart_2
|
|
itemlist.append(Item(channel=item.channel, title=item.title, action="findvideos", url=item.url,
|
|
server="torrent", thumbnail=thumbnail, fanart=fanart_1, extra=extra, show=show,
|
|
category=category, plot=item.plot, folder=True))
|
|
|
|
if not '"clearart"' in data and not '"showbackground"' in data:
|
|
if '"hdclearart"' in data:
|
|
extra = hdtvclear
|
|
show = title + "|" + year + "|" + fanart_2
|
|
else:
|
|
extra = thumbnail
|
|
show = title + "|" + year + "|" + fanart_2
|
|
itemlist.append(
|
|
Item(channel=item.channel, title=item.title, action="findvideos", url=item.url, server="torrent",
|
|
thumbnail=thumbnail, fanart=fanart_1, extra=extra, show=show, category=category,
|
|
plot=item.plot, folder=True))
|
|
|
|
title = "Info"
|
|
if not "_serie_de_tv" in item.url and not item.extra == "series":
|
|
thumbnail = posterdb
|
|
if "_serie_de_tv" in item.url or item.extra == "series":
|
|
if '"tvposter"' in data:
|
|
thumbnail = tvposter
|
|
else:
|
|
thumbnail = postertvdb
|
|
|
|
if "tvbanner" in data:
|
|
category = tvbanner
|
|
else:
|
|
category = item.show.split("|")[2]
|
|
|
|
title = title.replace(title, "[COLOR cyan]" + title + "[/COLOR]")
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="info", title=title, url=item.url, thumbnail=thumbnail, fanart=fanart_info,
|
|
extra=extra, plot=plot, category=category, show=show, folder=False))
|
|
###trailer
|
|
|
|
|
|
title = "[COLOR gold]Trailer[/COLOR]"
|
|
|
|
if "_serie_de_tv" in item.url or item.extra == "series":
|
|
if '"tvthumb"' in data:
|
|
thumbnail = tvthumb
|
|
else:
|
|
thumbnail = postertvdb
|
|
if '"tvbanner"' in data:
|
|
extra = tvbanner
|
|
elif '"tvthumb"' in data:
|
|
extra = tvthumb
|
|
else:
|
|
extra = item.thumbnail
|
|
else:
|
|
if '"moviethumb"' in data:
|
|
thumbnail = thumb
|
|
else:
|
|
thumbnail = posterdb
|
|
|
|
if '"moviedisc"' in data:
|
|
extra = disc
|
|
else:
|
|
if '"moviethumb"' in data:
|
|
extra = thumb
|
|
|
|
else:
|
|
extra = posterdb
|
|
|
|
itemlist.append(
|
|
Item(channel=item.channel, action="trailer", title=title, url=item.url, thumbnail=thumbnail, plot=item.plot,
|
|
fanart=fanart_trailer, extra=extra, show=trailer, folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def findvideos(item):
|
|
logger.info()
|
|
itemlist = []
|
|
import xbmc
|
|
SEARCHDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "search.txt")
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
if xbmc.Player().isPlaying():
|
|
if not os.path.exists(TESTPYDESTFILE):
|
|
import xbmc
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/search.txt",
|
|
SEARCHDESTFILE)
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/test.py",
|
|
TESTPYDESTFILE)
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bricocine/customkey.xml",
|
|
KEYMAPDESTFILE)
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bricocine/remote.xml",
|
|
REMOTEDESTFILE)
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bricocine/customapp.xml",
|
|
APPCOMMANDDESTFILE)
|
|
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
|
|
if not xbmc.Player().isPlaying():
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "Appcommand borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
print "No hay customs"
|
|
|
|
data = scrapertools.cache_page(item.url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
patron = '<a class="btn btn-success" href="([^"]+)" role="button".*?'
|
|
patron += '<td><div style="width:125px.*?<td><small>([^<]+)</small>.*?'
|
|
patron += '<td><small>([^<]+)</small>.*?'
|
|
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
scrapertools.printMatches(matches)
|
|
|
|
if len(matches) == 0:
|
|
itemlist.append(Item(channel=item.channel,
|
|
title="[COLOR gold][B]Lo sentimos el torrent aún no está disponible...[/B][/COLOR]",
|
|
thumbnail="http://s6.postimg.org/f4es4kyfl/bityou_Sorry.png",
|
|
fanart="http://s6.postimg.org/guxt62fyp/bityounovideo.jpg", folder=False))
|
|
|
|
for scrapedurl, scrapedcalidad, scrapedsize in matches:
|
|
|
|
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
|
season = scrapedcalidad
|
|
season = re.sub(r"\n|\r|\t|\s{2}| |V.O.S|Cast|Temp.|Cap.\d+| ", "", season)
|
|
epi = scrapedcalidad
|
|
epi = re.sub(r"\n|\r|\t|\s{2}|V.O.S|Cast| |Temp.\d+|Cap.| ", "", epi)
|
|
title = scrapertools.get_match(item.title, '(.*?)--')
|
|
title_info = scrapertools.get_match(data, '<meta name="title" content="(.*?) -')
|
|
title_info = title_info.replace("(Serie de TV)", "")
|
|
title_info = title_info.replace("torrent", "")
|
|
title_info = title_info.replace(" ", "%20")
|
|
scrapedcalidad = scrapedcalidad.replace(scrapedcalidad, "[COLOR skyblue][B]" + scrapedcalidad + "[/B][/COLOR]")
|
|
scrapedsize = scrapedsize.replace(scrapedsize, "[COLOR gold][B]" + scrapedsize + "[/B][/COLOR]")
|
|
title = title.replace(title,
|
|
"[COLOR white][B]" + title + "[/B][/COLOR]") + "-(" + scrapedcalidad + "/" + scrapedsize + ")"
|
|
|
|
if "bityouthsinopsis2.png" in item.extra:
|
|
item.extra = item.thumbnail
|
|
if "bityouthnofanventanuco.jpg" in item.show.split("|")[2]:
|
|
fanart = item.fanart
|
|
else:
|
|
fanart = item.show.split("|")[2]
|
|
|
|
extra = season + "|" + title_info + "|" + epi
|
|
itemlist.append(
|
|
Item(channel=item.channel, title=title, action="episodios", url=scrapedurl, thumbnail=item.extra,
|
|
fanart=item.show.split("|")[2], extra=extra, show=item.show, category=item.category, folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def episodios(item):
|
|
logger.info()
|
|
itemlist = []
|
|
import xbmc
|
|
if not xbmc.Player().isPlaying():
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customkey.xml")
|
|
REMOTEDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remote.xml")
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
try:
|
|
os.remove(KEYMAPDESTFILE)
|
|
print "Custom Keyboard.xml borrado"
|
|
os.remove(TESTPYDESTFILE)
|
|
print "Testpy borrado"
|
|
os.remove(REMOTEDESTFILE)
|
|
print "Remote borrado"
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
print "Appcommand borrado"
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except Exception as inst:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
print "No hay customs"
|
|
|
|
season = item.extra.split("|")[0]
|
|
title = item.show.split("|")[0]
|
|
if title == "Invisibles":
|
|
title = "The whispers"
|
|
epi = item.extra.split("|")[2]
|
|
year = item.show.split("|")[1]
|
|
title_tag = "[COLOR yellow]Ver --[/COLOR]"
|
|
item.title = item.title.replace("amp", "")
|
|
title_clean = title_tag + item.title
|
|
if ":" in title:
|
|
try:
|
|
title = title.replace(" ", "%20")
|
|
url_tmdb = "http://api.themoviedb.org/3/search/tv?api_key=2e2160006592024ba87ccdf78c28f49f&query=" + title + "&year=" + year + "&language=es&include_adult=false"
|
|
data = scrapertools.cachePage(url_tmdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id_tmdb = scrapertools.get_match(data, 'page":1.*?,"id":(.*?),"')
|
|
except:
|
|
try:
|
|
title = re.sub(r"(:.*)", "", title)
|
|
title = title.replace(" ", "%20")
|
|
url_tmdb = "http://api.themoviedb.org/3/search/tv?api_key=2e2160006592024ba87ccdf78c28f49f&query=" + title + "&year=" + year + "&language=es&include_adult=false"
|
|
data = scrapertools.cachePage(url_tmdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id_tmdb = scrapertools.get_match(data, 'page":1.*?,"id":(.*?),"')
|
|
except:
|
|
thumbnail = item.thumbnail
|
|
fanart = item.fanart
|
|
id_tmdb = ""
|
|
else:
|
|
try:
|
|
title = title.replace(" ", "%20")
|
|
url_tmdb = "http://api.themoviedb.org/3/search/tv?api_key=2e2160006592024ba87ccdf78c28f49f&query=" + title + "&year=" + year + "&language=es&include_adult=false"
|
|
data = scrapertools.cachePage(url_tmdb)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
id_tmdb = scrapertools.get_match(data, 'page":1.*?,"id":(.*?),"')
|
|
except:
|
|
thumbnail = item.thumbnail
|
|
fanart = item.fanart
|
|
id_tmdb = ""
|
|
###Teniendo (o no) el id Tmdb busca imagen
|
|
urltmdb_images = "https://api.themoviedb.org/3/tv/" + id_tmdb + "?api_key=2e2160006592024ba87ccdf78c28f49f"
|
|
data = scrapertools.cachePage(urltmdb_images)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
try:
|
|
backdrop = scrapertools.get_match(data, '"backdrop_path":"(.*?)"')
|
|
fanart_3 = "https://image.tmdb.org/t/p/original" + backdrop
|
|
fanart = fanart_3
|
|
except:
|
|
fanart_3 = item.fanart
|
|
fanart = fanart_3
|
|
###Se hace también la busqueda de el thumb del episodio en Tmdb
|
|
urltmdb_epi = "https://api.themoviedb.org/3/tv/" + id_tmdb + "/season/" + season + "/episode/" + epi + "/images?api_key=2e2160006592024ba87ccdf78c28f49f"
|
|
data = scrapertools.cachePage(urltmdb_epi)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '{"id".*?"file_path":"(.*?)","height"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
thumbnail = item.thumbnail
|
|
fanart = fanart_3
|
|
itemlist.append(Item(channel=item.channel, title=title_clean, action="play", url=item.url, server="torrent",
|
|
thumbnail=thumbnail, fanart=fanart, folder=False))
|
|
|
|
for foto in matches:
|
|
thumbnail = "https://image.tmdb.org/t/p/original" + foto
|
|
itemlist.append(Item(channel=item.channel, title=title_clean, action="play", url=item.url, server="torrent",
|
|
thumbnail=thumbnail, fanart=fanart, category=item.category, folder=False))
|
|
###thumb temporada###
|
|
urltmdb_temp = "http://api.themoviedb.org/3/tv/" + id_tmdb + "/season/" + season + "/images?api_key=2e2160006592024ba87ccdf78c28f49f"
|
|
data = scrapertools.cachePage(urltmdb_temp)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '{"id".*?"file_path":"(.*?)","height"'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
thumbnail = item.thumbnail
|
|
for temp in matches:
|
|
thumbnail = "https://image.tmdb.org/t/p/original" + temp
|
|
####fanart info####
|
|
urltmdb_faninfo = "http://api.themoviedb.org/3/tv/" + id_tmdb + "/images?api_key=2e2160006592024ba87ccdf78c28f49f"
|
|
data = scrapertools.cachePage(urltmdb_faninfo)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '{"backdrops".*?"file_path":".*?","height".*?"file_path":"(.*?)",'
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
fanart = item.fanart
|
|
for fanart_4 in matches:
|
|
fanart = "https://image.tmdb.org/t/p/original" + fanart_4
|
|
|
|
show = item.category + "|" + item.thumbnail
|
|
|
|
title = "Info"
|
|
title = title.replace(title, "[COLOR skyblue]" + title + "[/COLOR]")
|
|
itemlist.append(Item(channel=item.channel, action="info_capitulos", title=title, url=item.url, thumbnail=thumbnail,
|
|
fanart=fanart, extra=item.extra, show=show, folder=False))
|
|
|
|
return itemlist
|
|
|
|
|
|
def findvideos_pelis(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
data = scrapertools.cache_page(item.url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
patron = '<td><a class="btn btn-success" href="([^"]+)" role="button".*?'
|
|
patron += '<td><div style="width:125px.*?<td><small>([^<]+)</small>.*?'
|
|
patron += '<td><small>([^<]+)</small>.*?'
|
|
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
scrapertools.printMatches(matches)
|
|
|
|
if len(matches) == 0:
|
|
itemlist.append(Item(channel=item.channel,
|
|
title="[COLOR gold][B]Lo sentimos el torrent aún no está disponible...[/B][/COLOR]",
|
|
thumbnail="http://s6.postimg.org/f4es4kyfl/bityou_Sorry.png",
|
|
fanart="http://s6.postimg.org/guxt62fyp/bityounovideo.jpg", folder=False))
|
|
|
|
for scrapedurl, scrapedcalidad, scrapedsize in matches:
|
|
|
|
scrapedurl = urlparse.urljoin(host, scrapedurl)
|
|
|
|
title = scrapertools.get_match(data, '<meta name="title" content="(.*?) -')
|
|
title = title.replace("(Serie de TV)", "")
|
|
title = title.replace("torrent", "")
|
|
title_info = scrapertools.get_match(data, '<meta name="title" content="(.*?) -')
|
|
title_info = title_info.replace("(Serie de TV)", "")
|
|
title_info = title_info.replace("torrent", "")
|
|
scrapedcalidad = scrapedcalidad.replace(scrapedcalidad, "[COLOR skyblue][B]" + scrapedcalidad + "[/B][/COLOR]")
|
|
scrapedsize = scrapedsize.replace(scrapedsize, "[COLOR gold][B]" + scrapedsize + "[/B][/COLOR]")
|
|
title = title.replace(title,
|
|
"[COLOR white][B]" + title + "[/B][/COLOR]") + "-(" + scrapedcalidad + "/" + scrapedsize + ")"
|
|
if "bityouthsinopsis2.png" in item.extra:
|
|
item.extra = item.thumbnail
|
|
|
|
itemlist.append(Item(channel=item.channel, title=title, url=scrapedurl, fanart=item.show, thumbnail=item.extra,
|
|
action="play", folder=False))
|
|
|
|
return itemlist
|
|
|
|
|
|
def trailer(item):
|
|
logger.info()
|
|
itemlist = []
|
|
import xbmc
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
if os.path.exists(TESTPYDESTFILE):
|
|
TRAILERDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "trailer.txt")
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/trailer.txt",
|
|
TRAILERDESTFILE)
|
|
youtube_trailer = "https://www.youtube.com/results?search_query=" + item.show + "español"
|
|
|
|
data = scrapertools.cache_page(youtube_trailer)
|
|
|
|
patron = '<a href="/watch?(.*?)".*?'
|
|
patron += 'title="([^"]+)"'
|
|
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
scrapertools.printMatches(matches)
|
|
if len(matches) == 0:
|
|
itemlist.append(Item(channel=item.channel, title="[COLOR gold][B]No hay Trailer[/B][/COLOR]",
|
|
thumbnail="http://s6.postimg.org/jp5jx97ip/bityoucancel.png",
|
|
fanart="http://s6.postimg.org/vfjhen0b5/bityounieve.jpg", folder=False))
|
|
|
|
for scrapedurl, scrapedtitle in matches:
|
|
scrapedurl = "https://www.youtube.com/watch" + scrapedurl
|
|
scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle)
|
|
scrapedtitle = scrapedtitle.replace(scrapedtitle, "[COLOR khaki][B]" + scrapedtitle + "[/B][/COLOR]")
|
|
itemlist.append(Item(channel=item.channel, title=scrapedtitle, url=scrapedurl, server="youtube",
|
|
fanart="http://s6.postimg.org/g4gxuw91r/bityoutrailerfn.jpg", thumbnail=item.extra,
|
|
action="play", folder=False))
|
|
|
|
return itemlist
|
|
|
|
|
|
def play(item):
|
|
logger.info()
|
|
itemlist = []
|
|
|
|
if item.server == "youtube":
|
|
itemlist.append(Item(channel=item.channel, title=item.plot, url=item.url, server="youtube", fanart=item.fanart,
|
|
thumbnail=item.thumbnail, action="play", folder=False))
|
|
|
|
data = scrapertools.cache_page(item.url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
|
|
patron = '<td><a class="btn btn-success" href="([^"]+)"'
|
|
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
scrapertools.printMatches(matches)
|
|
|
|
for scrapedurl in matches:
|
|
itemlist.append(Item(channel=item.channel, title=item.title, server="torrent", url=scrapedurl,
|
|
fanart="http://s9.postimg.org/lmwhrdl7z/aquitfanart.jpg", thumbnail=item.thumbnail,
|
|
action="play", folder=True))
|
|
|
|
return itemlist
|
|
|
|
|
|
def info(item):
|
|
logger.info()
|
|
url = item.url
|
|
if "_serie_de_tv" in item.url:
|
|
import xbmc
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
try:
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
except:
|
|
pass
|
|
|
|
data = scrapertools.cachePage(url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}|Descarga el torrent.*?en Bityouth.", "", data)
|
|
title = scrapertools.get_match(data, '<meta name="title" content="(.*?) -')
|
|
title = title.upper()
|
|
title = title.replace(title, "[COLOR gold][B]" + title + "[/B][/COLOR]")
|
|
title = title.replace("TORRENT", "")
|
|
try:
|
|
try:
|
|
plot = scrapertools.get_match(data, '<div itemprop="description">(.*?)<a href="#enlaces">')
|
|
except:
|
|
plot = item.plot
|
|
|
|
plot = plot.replace(plot, "[COLOR bisque][B]" + plot + "[/B][/COLOR]")
|
|
plot = plot.replace("</i>", "")
|
|
plot = plot.replace("</br>", "")
|
|
plot = plot.replace("<br/>", "")
|
|
plot = plot.replace("“", "")
|
|
plot = plot.replace("<b>", "")
|
|
plot = plot.replace("</b>", "")
|
|
plot = plot.replace(" ​​", "")
|
|
plot = scrapertools.decodeHtmlentities(plot)
|
|
plot = plot.replace(""", "")
|
|
except:
|
|
|
|
title = "[COLOR red][B]LO SENTIMOS...[/B][/COLOR]"
|
|
plot = "Esta serie no tiene informacion..."
|
|
plot = plot.replace(plot, "[COLOR yellow][B]" + plot + "[/B][/COLOR]")
|
|
photo = "http://s6.postimg.org/nm3gk1xox/noinfosup2.png"
|
|
foto = "http://s6.postimg.org/ub7pb76c1/noinfo.png"
|
|
info = ""
|
|
quit = "Pulsa" + " [COLOR blue][B]INTRO [/B][/COLOR]" + "para quitar"
|
|
try:
|
|
scrapedinfo = scrapertools.get_match(data, '<div class="col-sm-5 col-md-5 col-lg-4">(.*?)Título Original:')
|
|
infoformat = re.compile('(.*?:).*?</strong>(.*?)<strong>', re.DOTALL).findall(scrapedinfo)
|
|
for info, info2 in infoformat:
|
|
scrapedinfo = scrapedinfo.replace(info2, "[COLOR bisque]" + info2 + "[/COLOR]")
|
|
scrapedinfo = scrapedinfo.replace(info, "[COLOR aqua][B]" + info + "[/B][/COLOR]")
|
|
info = scrapedinfo
|
|
info = re.sub(
|
|
r'<p class=".*?">|<strong>|</strong>|<a href="/year/.*?">| title=".*?"|alt=".*?"|>#2015|</a>|<span itemprop=".*?".*?>|<a.*?itemprop=".*?".*?">|</span>|<a href="/genero/.*?"|<a href=".*?"|itemprop="url">|"|</div><div class="col-sm-7 col-md-7 col-lg-8">|>,',
|
|
'', info)
|
|
info = info.replace("</p>", " ")
|
|
info = info.replace("#", ",")
|
|
info = info.replace(">", "")
|
|
except:
|
|
info = "[COLOR skyblue][B]Sin informacion adicional...[/B][/COLOR]"
|
|
if "_serie_de_tv" in item.url:
|
|
foto = item.show.split("|")[2]
|
|
|
|
else:
|
|
foto = item.category
|
|
if item.show == item.thumbnail:
|
|
foto = "http://s6.postimg.org/mh3umjzkh/bityouthnofanventanuco.jpg"
|
|
photo = item.extra
|
|
quit = "Pulsa" + " [COLOR blue][B]INTRO [/B][/COLOR]" + "para quitar"
|
|
if "_serie_de_tv" in item.url:
|
|
NOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "noback.xml")
|
|
REMOTENOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remotenoback.xml")
|
|
APPNOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "appnoback.xml")
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/noback.xml",
|
|
NOBACKDESTFILE)
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/remotenoback.xml",
|
|
REMOTENOBACKDESTFILE)
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/appnoback.xml",
|
|
APPNOBACKDESTFILE)
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
|
|
ventana2 = TextBox1(title=title, plot=plot, info=info, thumbnail=photo, fanart=foto, quit=quit)
|
|
ventana2.doModal()
|
|
|
|
|
|
ACTION_GESTURE_SWIPE_LEFT = 511
|
|
ACTION_SELECT_ITEM = 7
|
|
|
|
|
|
class TextBox1(xbmcgui.WindowDialog):
|
|
""" Create a skinned textbox window """
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
self.getTitle = kwargs.get('title')
|
|
self.getPlot = kwargs.get('plot')
|
|
self.getInfo = kwargs.get('info')
|
|
self.getThumbnail = kwargs.get('thumbnail')
|
|
self.getFanart = kwargs.get('fanart')
|
|
self.getQuit = kwargs.get('quit')
|
|
|
|
self.background = xbmcgui.ControlImage(70, 20, 1150, 630,
|
|
'http://s6.postimg.org/58jknrvtd/backgroundventana5.png')
|
|
self.title = xbmcgui.ControlTextBox(140, 60, 1130, 50)
|
|
self.quit = xbmcgui.ControlTextBox(145, 90, 1030, 45)
|
|
self.plot = xbmcgui.ControlTextBox(120, 150, 1056, 140)
|
|
self.info = xbmcgui.ControlFadeLabel(120, 310, 1056, 100)
|
|
self.thumbnail = xbmcgui.ControlImage(813, 43, 390, 100, self.getThumbnail)
|
|
self.fanart = xbmcgui.ControlImage(120, 365, 1060, 250, self.getFanart)
|
|
|
|
self.addControl(self.background)
|
|
self.addControl(self.title)
|
|
self.addControl(self.quit)
|
|
self.addControl(self.plot)
|
|
self.addControl(self.thumbnail)
|
|
self.addControl(self.fanart)
|
|
self.addControl(self.info)
|
|
|
|
self.title.setText(self.getTitle)
|
|
self.quit.setText(self.getQuit)
|
|
try:
|
|
self.plot.autoScroll(7000, 6000, 30000)
|
|
except:
|
|
print "Actualice a la ultima version de kodi para mejor info"
|
|
import xbmc
|
|
xbmc.executebuiltin(
|
|
'Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000,"https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/kodi-icon.png")')
|
|
self.plot.setText(self.getPlot)
|
|
self.info.addLabel(self.getInfo)
|
|
|
|
def get(self):
|
|
self.show()
|
|
|
|
def onAction(self, action):
|
|
if action == ACTION_SELECT_ITEM or action == ACTION_GESTURE_SWIPE_LEFT:
|
|
import os
|
|
import xbmc
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
NOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "noback.xml")
|
|
REMOTENOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remotenoback.xml")
|
|
APPNOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "appnoback.xml")
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
try:
|
|
os.remove(NOBACKDESTFILE)
|
|
os.remove(REMOTENOBACKDESTFILE)
|
|
os.remove(APPNOBACKDESTFILE)
|
|
if os.path.exists(TESTPYDESTFILE):
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/customapp.xml",
|
|
APPCOMMANDDESTFILE)
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
self.close()
|
|
|
|
|
|
def info_capitulos(item):
|
|
logger.info()
|
|
import xbmc
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
try:
|
|
os.remove(APPCOMMANDDESTFILE)
|
|
except:
|
|
pass
|
|
item.category = item.show.split("|")[0]
|
|
item.thumbnail = item.show.split("|")[1]
|
|
|
|
url = "http://thetvdb.com/api/1D62F2F90030C444/series/" + item.show.split("|")[0] + "/default/" + \
|
|
item.extra.split("|")[0] + "/" + item.extra.split("|")[2] + "/es.xml"
|
|
data = scrapertools.cache_page(url)
|
|
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
|
patron = '<Data>.*?<EpisodeName>([^<]+)</EpisodeName>.*?'
|
|
patron += '<Overview>(.*?)</Overview>.*?'
|
|
|
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
|
if len(matches) == 0:
|
|
title = "[COLOR red][B]LO SENTIMOS...[/B][/COLOR]"
|
|
plot = "Este capitulo no tiene informacion..."
|
|
plot = plot.replace(plot, "[COLOR yellow][B]" + plot + "[/B][/COLOR]")
|
|
foto = "http://s6.postimg.org/nm3gk1xox/noinfosup2.png"
|
|
image = "http://s6.postimg.org/ub7pb76c1/noinfo.png"
|
|
quit = "Pulsa" + " [COLOR greenyellow][B]INTRO [/B][/COLOR]" + "para quitar"
|
|
|
|
else:
|
|
|
|
for name_epi, info in matches:
|
|
if "<filename>episodes" in data:
|
|
foto = scrapertools.get_match(data, '<Data>.*?<filename>(.*?)</filename>')
|
|
fanart = "http://thetvdb.com/banners/" + foto
|
|
else:
|
|
fanart = item.show.split("|")[1]
|
|
|
|
plot = info
|
|
plot = plot.replace(plot, "[COLOR burlywood][B]" + plot + "[/B][/COLOR]")
|
|
title = name_epi.upper()
|
|
title = title.replace(title, "[COLOR skyblue][B]" + title + "[/B][/COLOR]")
|
|
image = fanart
|
|
foto = item.show.split("|")[1]
|
|
if not ".png" in item.show.split("|")[1]:
|
|
foto = "http://s6.postimg.org/rv2mu3pap/bityouthsinopsis2.png"
|
|
quit = "Pulsa" + " [COLOR greenyellow][B]INTRO [/B][/COLOR]" + "para quitar"
|
|
NOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "noback.xml")
|
|
REMOTENOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remotenoback.xml")
|
|
APPNOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "appnoback.xml")
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
urllib.urlretrieve("https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/noback.xml",
|
|
NOBACKDESTFILE)
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/remotenoback.xml",
|
|
REMOTENOBACKDESTFILE)
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/appnoback.xml",
|
|
APPNOBACKDESTFILE)
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
ventana = TextBox2(title=title, plot=plot, thumbnail=image, fanart=foto, quit=quit)
|
|
ventana.doModal()
|
|
|
|
|
|
ACTION_GESTURE_SWIPE_LEFT = 511
|
|
ACTION_SELECT_ITEM = 7
|
|
|
|
|
|
class TextBox2(xbmcgui.WindowDialog):
|
|
""" Create a skinned textbox window """
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.getTitle = kwargs.get('title')
|
|
self.getPlot = kwargs.get('plot')
|
|
self.getThumbnail = kwargs.get('thumbnail')
|
|
self.getFanart = kwargs.get('fanart')
|
|
self.getQuit = kwargs.get('quit')
|
|
|
|
self.background = xbmcgui.ControlImage(70, 20, 1150, 630, 'http://s6.postimg.org/n3ph1uxn5/ventana.png')
|
|
self.title = xbmcgui.ControlTextBox(120, 60, 430, 50)
|
|
self.quit = xbmcgui.ControlTextBox(145, 90, 1030, 45)
|
|
self.plot = xbmcgui.ControlTextBox(120, 150, 1056, 100)
|
|
self.thumbnail = xbmcgui.ControlImage(120, 300, 1056, 300, self.getThumbnail)
|
|
self.fanart = xbmcgui.ControlImage(780, 43, 390, 100, self.getFanart)
|
|
|
|
self.addControl(self.background)
|
|
self.addControl(self.title)
|
|
self.addControl(self.quit)
|
|
self.addControl(self.plot)
|
|
self.addControl(self.thumbnail)
|
|
self.addControl(self.fanart)
|
|
|
|
self.title.setText(self.getTitle)
|
|
self.quit.setText(self.getQuit)
|
|
try:
|
|
self.plot.autoScroll(7000, 6000, 30000)
|
|
except:
|
|
print "Actualice a la ultima version de kodi para mejor info"
|
|
import xbmc
|
|
xbmc.executebuiltin(
|
|
'Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000,"https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/kodi-icon.png")')
|
|
self.plot.setText(self.getPlot)
|
|
|
|
def get(self):
|
|
self.show()
|
|
|
|
def onAction(self, action):
|
|
if action == ACTION_SELECT_ITEM or action == ACTION_GESTURE_SWIPE_LEFT:
|
|
import os
|
|
import xbmc
|
|
APPCOMMANDDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "customapp.xml")
|
|
NOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "noback.xml")
|
|
REMOTENOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "remotenoback.xml")
|
|
APPNOBACKDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "appnoback.xml")
|
|
TESTPYDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "test.py")
|
|
try:
|
|
os.remove(NOBACKDESTFILE)
|
|
os.remove(REMOTENOBACKDESTFILE)
|
|
os.remove(APPNOBACKDESTFILE)
|
|
if os.path.exists(TESTPYDESTFILE):
|
|
urllib.urlretrieve(
|
|
"https://raw.githubusercontent.com/neno1978/script.palc.forcerefresh/master/Bityouth/customapp.xml",
|
|
APPCOMMANDDESTFILE)
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
except:
|
|
xbmc.executebuiltin('Action(reloadkeymaps)')
|
|
self.close()
|
|
|
|
|
|
def translate(to_translate, to_langage="auto", langage="auto"):
|
|
###Traducción atraves de Google
|
|
'''Return the translation using google translate
|
|
you must shortcut the langage you define (French = fr, English = en, Spanish = es, etc...)
|
|
if you don't define anything it will detect it or use english by default
|
|
Example:
|
|
print(translate("salut tu vas bien?", "en"))
|
|
hello you alright?'''
|
|
agents = {
|
|
'User-Agent': "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"}
|
|
before_trans = 'class="t0">'
|
|
link = "http://translate.google.com/m?hl=%s&sl=%s&q=%s" % (to_langage, langage, to_translate.replace(" ", "+"))
|
|
request = urllib2.Request(link, headers=agents)
|
|
page = urllib2.urlopen(request).read()
|
|
result = page[page.find(before_trans) + len(before_trans):]
|
|
result = result.split("<")[0]
|
|
return result
|
|
|
|
|
|
if __name__ == '__main__':
|
|
to_translate = 'Hola como estas?'
|
|
print("%s >> %s" % (to_translate, translate(to_translate)))
|
|
print("%s >> %s" % (to_translate, translate(to_translate, 'fr')))
|
|
# should print Hola como estas >> Hello how are you
|
|
# and Hola como estas? >> Bonjour comment allez-vous?
|