rebase specials

This commit is contained in:
marco
2020-02-05 20:51:06 +01:00
parent 53b1436e68
commit 1ddf563e0a
17 changed files with 884 additions and 255 deletions
+37 -36
View File
@@ -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()