rebase specials
This commit is contained in:
+37
-36
@@ -3,13 +3,29 @@
|
||||
# Search trailers from youtube, filmaffinity, abandomoviez, vimeo, etc...
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
import re
|
||||
import urllib
|
||||
from __future__ import division
|
||||
#from builtins import str
|
||||
import sys
|
||||
|
||||
import urlparse
|
||||
import xbmcaddon
|
||||
|
||||
PY3 = False
|
||||
if sys.version_info[0] >= 3: PY3 = True; unicode = str; unichr = chr; long = int
|
||||
from past.utils import old_div
|
||||
|
||||
if PY3:
|
||||
#from future import standard_library
|
||||
#standard_library.install_aliases()
|
||||
import urllib.parse as urllib # Es muy lento en PY2. En PY3 es nativo
|
||||
import urllib.parse as urlparse
|
||||
else:
|
||||
import urllib # Usamos el nativo de PY2 que es más rápido
|
||||
import urlparse
|
||||
|
||||
import re
|
||||
|
||||
from core import httptools
|
||||
from core import jsontools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
@@ -39,9 +55,9 @@ def buscartrailer(item, trailers=[]):
|
||||
itemlist = globals()[item.action](item)
|
||||
else:
|
||||
# Se elimina la opción de Buscar Trailer del menú contextual para evitar redundancias
|
||||
if type(item.context) is str and "buscar_trailer" in item.context:
|
||||
if isinstance(item.context, str) and "buscar_trailer" in item.context:
|
||||
item.context = item.context.replace("buscar_trailer", "")
|
||||
elif type(item.context) is list and "buscar_trailer" in item.context:
|
||||
elif isinstance(item.context, list) and "buscar_trailer" in item.context:
|
||||
item.context.remove("buscar_trailer")
|
||||
|
||||
item.text_color = ""
|
||||
@@ -50,15 +66,15 @@ def buscartrailer(item, trailers=[]):
|
||||
if item.contentTitle != "":
|
||||
item.contentTitle = item.contentTitle.strip()
|
||||
elif keyboard:
|
||||
fulltitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.fulltitle.strip())
|
||||
item.contentTitle = platformtools.dialog_input(default=fulltitle, heading=config.get_localized_string(70505))
|
||||
contentTitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.contentTitle.strip())
|
||||
item.contentTitle = platformtools.dialog_input(default=contentTitle, heading=config.get_localized_string(70505))
|
||||
if item.contentTitle is None:
|
||||
item.contentTitle = fulltitle
|
||||
item.contentTitle = contentTitle
|
||||
else:
|
||||
item.contentTitle = item.contentTitle.strip()
|
||||
else:
|
||||
fulltitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.fulltitle.strip())
|
||||
item.contentTitle = fulltitle
|
||||
contentTitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.contentTitle.strip())
|
||||
item.contentTitle = contentTitle
|
||||
|
||||
item.year = item.infoLabels['year']
|
||||
|
||||
@@ -148,7 +164,6 @@ def tmdb_trailers(item, tipo="movie"):
|
||||
def youtube_search(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
titulo = item.contentTitle
|
||||
if item.extra != "youtube":
|
||||
titulo += " trailer"
|
||||
@@ -159,11 +174,10 @@ def youtube_search(item):
|
||||
titulo = urllib.quote(titulo)
|
||||
titulo = titulo.replace("%20", "+")
|
||||
data = httptools.downloadpage("https://www.youtube.com/results?sp=EgIQAQ%253D%253D&q=" + titulo).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
patron = """"thumbnails":\[\{"url":"(https://i.ytimg.com/vi[^"]+).*?"""
|
||||
patron += """simpleText":"([^"]+).*?"""
|
||||
patron += """simpleText":"[^"]+.*?simpleText":"([^"]+).*?"""
|
||||
patron += """url":"([^"]+)"""
|
||||
patron = 'thumbnails":\[\{"url":"(https://i.ytimg.com/vi[^"]+).*?'
|
||||
patron += 'text":"([^"]+).*?'
|
||||
patron += 'simpleText":"[^"]+.*?simpleText":"([^"]+).*?'
|
||||
patron += 'url":"([^"]+)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedthumbnail, scrapedtitle, scrapedduration, scrapedurl in matches:
|
||||
scrapedtitle = scrapedtitle.decode('utf8').encode('utf8')
|
||||
@@ -173,18 +187,15 @@ def youtube_search(item):
|
||||
url = urlparse.urljoin('https://www.youtube.com/', scrapedurl)
|
||||
itemlist.append(item.clone(title=scrapedtitle, action="play", server="youtube", url=url,
|
||||
thumbnail=scrapedthumbnail, text_color="white"))
|
||||
|
||||
next_page = scrapertools.find_single_match(data, '<a href="([^"]+)"[^>]+><span class="yt-uix-button-content">'
|
||||
'Siguiente')
|
||||
if next_page != "":
|
||||
next_page = urlparse.urljoin("https://www.youtube.com", next_page)
|
||||
itemlist.append(item.clone(title=config.get_localized_string(70502), action="youtube_search", extra="youtube", page=next_page,
|
||||
thumbnail="", text_color=""))
|
||||
|
||||
if not itemlist:
|
||||
itemlist.append(item.clone(title=config.get_localized_string(70501) % titulo,
|
||||
action="", thumbnail="", text_color=""))
|
||||
|
||||
if keyboard:
|
||||
if item.contextual:
|
||||
title = "[COLOR green]%s[/COLOR]"
|
||||
@@ -192,7 +203,6 @@ def youtube_search(item):
|
||||
title = "%s"
|
||||
itemlist.append(item.clone(title=title % config.get_localized_string(70510), action="manual_search",
|
||||
text_color="green", thumbnail="", extra="youtube"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -206,11 +216,11 @@ def abandomoviez_search(item):
|
||||
titulo = item.contentTitle.decode('utf-8').encode('iso-8859-1')
|
||||
post = urllib.urlencode({'query': titulo, 'searchby': '1', 'posicion': '1', 'orden': '1',
|
||||
'anioin': item.year, 'anioout': item.year, 'orderby': '1'})
|
||||
url = "http://www.abandomoviez.net/db/busca_titulo_advance.php"
|
||||
url = "http://www.abandomoviez.net/db/busca_titulo.php?busco2=%s" %item.contentTitle
|
||||
item.prefix = "db/"
|
||||
data = httptools.downloadpage(url, post=post).data
|
||||
if "No hemos encontrado ninguna" in data:
|
||||
url = "http://www.abandomoviez.net/indie/busca_titulo_advance.php"
|
||||
url = "http://www.abandomoviez.net/indie/busca_titulo.php?busco2=%s" %item.contentTitle
|
||||
item.prefix = "indie/"
|
||||
data = httptools.downloadpage(url, post=post).data.decode("iso-8859-1").encode('utf-8')
|
||||
|
||||
@@ -253,7 +263,6 @@ def abandomoviez_search(item):
|
||||
|
||||
def search_links_abando(item):
|
||||
logger.info()
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = []
|
||||
if "Lo sentimos, no tenemos trailer" in data:
|
||||
@@ -286,9 +295,8 @@ def search_links_abando(item):
|
||||
if item.contextual:
|
||||
i += 1
|
||||
message += ".."
|
||||
progreso.update(10 + (90 * i / len(matches)), message)
|
||||
progreso.update(10 + (old_div(90 * i, len(matches))), message)
|
||||
scrapedtitle = "[COLOR white]%s[/COLOR]" % scrapedtitle
|
||||
|
||||
data_trailer = httptools.downloadpage(scrapedurl).data
|
||||
trailer_url = scrapertools.find_single_match(data_trailer, 'iframe.*?src="([^"]+)"')
|
||||
trailer_url = trailer_url.replace("embed/", "watch?v=")
|
||||
@@ -296,10 +304,8 @@ def search_links_abando(item):
|
||||
thumbnail = "https://img.youtube.com/vi/%s/0.jpg" % code
|
||||
itemlist.append(item.clone(title=scrapedtitle, url=trailer_url, server="youtube", action="play",
|
||||
thumbnail=thumbnail, text_color="white"))
|
||||
|
||||
if item.contextual:
|
||||
progreso.close()
|
||||
|
||||
if keyboard:
|
||||
if item.contextual:
|
||||
title = "[COLOR green]%s[/COLOR]"
|
||||
@@ -342,7 +348,8 @@ def filmaffinity_search(item):
|
||||
if not scrapedthumbnail.startswith("http"):
|
||||
scrapedthumbnail = "http://www.filmaffinity.com" + scrapedthumbnail
|
||||
scrapedurl = "http://www.filmaffinity.com/es/evideos.php?movie_id=%s" % id
|
||||
scrapedtitle = unicode(scrapedtitle, encoding="utf-8", errors="ignore")
|
||||
if PY3:
|
||||
scrapedtitle = unicode(scrapedtitle, encoding="utf-8", errors="ignore")
|
||||
scrapedtitle = scrapertools.htmlclean(scrapedtitle)
|
||||
itemlist.append(item.clone(title=scrapedtitle, url=scrapedurl, text_color="white",
|
||||
action="search_links_filmaff", thumbnail=scrapedthumbnail))
|
||||
@@ -389,7 +396,8 @@ def search_links_filmaff(item):
|
||||
else:
|
||||
server = ""
|
||||
thumbnail = item.thumbnail
|
||||
scrapedtitle = unicode(scrapedtitle, encoding="utf-8", errors="ignore")
|
||||
if PY3:
|
||||
scrapedtitle = unicode(scrapedtitle, encoding="utf-8", errors="ignore")
|
||||
scrapedtitle = scrapertools.htmlclean(scrapedtitle)
|
||||
scrapedtitle += " [" + server + "]"
|
||||
if item.contextual:
|
||||
@@ -413,15 +421,12 @@ def search_links_filmaff(item):
|
||||
try:
|
||||
import xbmcgui
|
||||
import xbmc
|
||||
|
||||
|
||||
class Select(xbmcgui.WindowXMLDialog):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.item = kwargs.get('item')
|
||||
self.itemlist = kwargs.get('itemlist')
|
||||
self.caption = kwargs.get('caption')
|
||||
self.result = None
|
||||
|
||||
def onInit(self):
|
||||
try:
|
||||
self.control_list = self.getControl(6)
|
||||
@@ -447,7 +452,6 @@ try:
|
||||
self.control_list.reset()
|
||||
self.control_list.addItems(self.items)
|
||||
self.setFocus(self.control_list)
|
||||
|
||||
def onClick(self, id):
|
||||
# Boton Cancelar y [X]
|
||||
if id == 5:
|
||||
@@ -461,7 +465,6 @@ try:
|
||||
del window_select
|
||||
else:
|
||||
window_select[-1].doModal()
|
||||
|
||||
def onAction(self, action):
|
||||
global window_select, result
|
||||
if action == 92 or action == 110:
|
||||
@@ -474,7 +477,6 @@ try:
|
||||
del window_select
|
||||
else:
|
||||
window_select[-1].doModal()
|
||||
|
||||
try:
|
||||
if (action == 7 or action == 100) and self.getFocusId() == 6:
|
||||
selectitem = self.control_list.getSelectedItem()
|
||||
@@ -489,7 +491,6 @@ try:
|
||||
else:
|
||||
result = None
|
||||
self.result = None
|
||||
|
||||
elif item.action == "play" and not self.item.windowed:
|
||||
for window in window_select:
|
||||
window.close()
|
||||
|
||||
Reference in New Issue
Block a user