From 22abc226aa161ca7cd44c76a1344a5c8a69e6c49 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Mon, 17 Aug 2020 19:56:21 +0200 Subject: [PATCH] Mymovies in Cerca Trailer --- .../resource.language.en_gb/strings.po | 6 +- .../resource.language.it_it/strings.po | 12 +- specials/trailertools.py | 216 ++++++------------ 3 files changed, 77 insertions(+), 157 deletions(-) diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 5e7f686b..fdd34306 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -4837,7 +4837,7 @@ msgid "Search in Youtube" msgstr "" msgctxt "#70508" -msgid "Search in Abandomoviez" +msgid "Search in Mymovies" msgstr "" msgctxt "#70510" @@ -4845,11 +4845,11 @@ msgid "Manual Search in Youtube" msgstr "" msgctxt "#70511" -msgid "Manual Search in Abandomoviez" +msgid "Manual Search in Mymovies" msgstr "" msgctxt "#70512" -msgid "Searching in abandomoviez" +msgid "Searching in Mymovies" msgstr "" msgctxt "#70513" diff --git a/resources/language/resource.language.it_it/strings.po b/resources/language/resource.language.it_it/strings.po index 90e9007f..bf53e8c4 100644 --- a/resources/language/resource.language.it_it/strings.po +++ b/resources/language/resource.language.it_it/strings.po @@ -4836,20 +4836,20 @@ msgid "Search in Youtube" msgstr "Ricerca in Youtube" msgctxt "#70508" -msgid "Search in Abandomoviez" -msgstr "Ricerca inAbandomoviez" +msgid "Search in Mymovies" +msgstr "Ricerca in Mymovies" msgctxt "#70510" msgid "Manual Search in Youtube" msgstr "Ricerca Manuale in Youtube" msgctxt "#70511" -msgid "Manual Search in Abandomoviez" -msgstr "Ricerca Manuale in Abandomoviez" +msgid "Manual Search in Mymovies" +msgstr "Ricerca Manuale in Mymovies" msgctxt "#70512" -msgid "Searching in abandomoviez" -msgstr "Ricerca in abandomoviez" +msgid "Searching in Mymovies" +msgstr "Ricerca in Mymovies" msgctxt "#70513" msgid "Manual Searching in Filmaffinity" diff --git a/specials/trailertools.py b/specials/trailertools.py index 295d3e7f..614a6d93 100644 --- a/specials/trailertools.py +++ b/specials/trailertools.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -------------------------------------------------------------------------------- -# Search trailers from youtube, filmaffinity, abandomoviez, vimeo, etc... +# Search trailers from youtube, filmaffinity, mymovies, vimeo, etc... # -------------------------------------------------------------------------------- from __future__ import division @@ -24,10 +24,8 @@ else: import re -from core import httptools -from core import jsontools -from core import scrapertools -from core import servertools +from core import httptools, jsontools, scrapertools, servertools +from core.support import match, thumb from core.item import Item from platformcode import config, logger from platformcode import platformtools @@ -68,14 +66,14 @@ def buscartrailer(item, trailers=[]): elif item.contentTitle != "": item.contentTitle = item.contentTitle.strip() elif keyboard: - contentTitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.contentTitle.strip()) + contentTitle = re.sub(r'\[\/*(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 = contentTitle else: item.contentTitle = item.contentTitle.strip() else: - contentTitle = re.sub('\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.contentTitle.strip()) + contentTitle = re.sub(r'\[\/*(B|I|COLOR)\s*[^\]]*\]', '', item.contentTitle.strip()) item.contentTitle = contentTitle item.year = item.infoLabels['year'] @@ -86,7 +84,7 @@ def buscartrailer(item, trailers=[]): url = item.infoLabels['trailer'] if "youtube" in url: url = url.replace("embed/", "watch?v=") - titulo, url, server = servertools.findvideos(url)[0] + title, url, server = servertools.findvideos(url)[0] title = "Trailer [" + server + "]" itemlist.append(item.clone(title=title, url=url, server=server, action="play")) if item.show or item.infoLabels['tvshowtitle'] or item.contentType != "movie": @@ -104,15 +102,13 @@ def buscartrailer(item, trailers=[]): import traceback logger.error(traceback.format_exc()) - if item.contextual: - title = "%s" - else: - title = "%s" - itemlist.append(item.clone(title=title % config.get_localized_string(70507), action="youtube_search")) - itemlist.append(item.clone(title=title % config.get_localized_string(70024), action="filmaffinity_search")) - # If it is a series, the option to search in Abandomoviez is not included - if not item.show and not item.infoLabels['tvshowtitle']: - itemlist.append(item.clone(title=title % config.get_localized_string(70508), action="abandomoviez_search")) + if item.contextual: title = "%s" + else: title = "%s" + + itemlist.append(item.clone(title=title % config.get_localized_string(70507), action="youtube_search", thumbnail=thumb('search'))) + itemlist.append(item.clone(title=title % config.get_localized_string(70508), action="mymovies_search", thumbnail=thumb('search'))) + itemlist.append(item.clone(title=title % config.get_localized_string(70024), action="filmaffinity_search", thumbnail=thumb('search'))) + if item.contextual: global window_select, result @@ -120,8 +116,7 @@ def buscartrailer(item, trailers=[]): window_select.append(select) select.doModal() - if item.windowed: - return result, window_select + if item.windowed: return result, window_select else: return itemlist @@ -130,8 +125,8 @@ def manual_search(item): logger.log() texto = platformtools.dialog_input(default=item.contentTitle, heading=config.get_localized_string(30112)) if texto is not None: - if item.extra == "abandomoviez": - return abandomoviez_search(item.clone(contentTitle=texto, page="", year="")) + if item.extra == "mymovies": + return mymovies_search(item.clone(contentTitle=texto)) elif item.extra == "youtube": return youtube_search(item.clone(contentTitle=texto, page="")) elif item.extra == "filmaffinity": @@ -160,20 +155,20 @@ def tmdb_trailers(item, tipo="movie"): def youtube_search(item): logger.log() itemlist = [] - titulo = item.contentTitle + title = item.contentTitle if item.extra != "youtube": - titulo += " trailer" + title += " trailer" # Check if it is a zero search or comes from the Next option if item.page != "": data = httptools.downloadpage(item.page).data else: - titulo = urllib.quote(titulo) - titulo = titulo.replace("%20", "+") - data = httptools.downloadpage("https://www.youtube.com/results?sp=EgIQAQ%253D%253D&q=" + titulo).data - patron = 'thumbnails":\[\{"url":"(https://i.ytimg.com/vi[^"]+).*?' - patron += 'text":"([^"]+).*?' - patron += 'simpleText":"[^"]+.*?simpleText":"([^"]+).*?' - patron += 'url":"([^"]+)' + title = urllib.quote(title) + title = title.replace("%20", "+") + data = httptools.downloadpage("https://www.youtube.com/results?sp=EgIQAQ%253D%253D&q=" + title).data + patron = r'thumbnails":\[\{"url":"(https://i.ytimg.com/vi[^"]+).*?' + patron += r'text":"([^"]+).*?' + patron += r'simpleText":"[^"]+.*?simpleText":"([^"]+).*?' + patron += r'url":"([^"]+)' matches = scrapertools.find_multiple_matches(data, patron) for scrapedthumbnail, scrapedtitle, scrapedduration, scrapedurl in matches: scrapedtitle = scrapedtitle if PY3 else scrapedtitle.decode('utf8').encode('utf8') + " (" + scrapedduration + ")" @@ -181,132 +176,65 @@ def youtube_search(item): scrapedtitle = "%s" % scrapedtitle url = urlparse.urljoin('https://www.youtube.com/', scrapedurl) itemlist.append(item.clone(title=scrapedtitle, action="play", server="youtube", url=url, thumbnail=scrapedthumbnail)) - next_page = scrapertools.find_single_match(data, ']+>' - 'Siguiente') + next_page = scrapertools.find_single_match(data, ']+>') 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="")) + itemlist.append(item.clone(title=config.get_localized_string(30992), action="youtube_search", extra="youtube", page=next_page, thumbnail=thumb('search'), text_color="")) if not itemlist: - itemlist.append(item.clone(title=config.get_localized_string(70501) % titulo, - action="", thumbnail="", text_color="")) + itemlist.append(item.clone(title=config.get_localized_string(70501) % title, action="", thumbnail="", text_color="")) if keyboard: if item.contextual: title = "%s" else: title = "%s" - itemlist.append(item.clone(title=title % config.get_localized_string(70510), action="manual_search", - thumbnail="", extra="youtube")) + itemlist.append(item.clone(title=title % config.get_localized_string(70510), action="manual_search", thumbnail=thumb(search), extra="youtube")) return itemlist -def abandomoviez_search(item): +def mymovies_search(item): logger.log() + import json + + title = item.contentTitle + url = 'https://www.mymovies.it/ricerca/ricerca.php?limit=true&q=' + title + js = json.loads(httptools.downloadpage(url).data)['risultati']['film']['elenco'] - # Check if it is a zero search or comes from the Next option - if item.page != "": - data = httptools.downloadpage(item.page).data - else: - titulo = item.contentTitle if PY3 else 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.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.php?busco2=%s" %item.contentTitle - item.prefix = "indie/" - data = httptools.downloadpage(url, post=post).data - if not PY3: data = data.decode("iso-8859-1").encode('utf-8') itemlist = [] - patron = '(?:).*?(.*?)(?:<\/td>|<\/small>)' - matches = scrapertools.find_multiple_matches(data, patron) - # If there is only one result, search directly for the trailers, but list all the results - if len(matches) == 1: - item.url = urlparse.urljoin("http://www.abandomoviez.net/%s" % item.prefix, matches[0][1]) - item.thumbnail = matches[0][0] - itemlist = search_links_abando(item) - elif len(matches) > 1: - for scrapedthumbnail, scrapedurl, scrapedtitle in matches: - scrapedurl = urlparse.urljoin("http://www.abandomoviez.net/%s" % item.prefix, scrapedurl) - scrapedtitle = scrapertools.htmlclean(scrapedtitle) - itemlist.append(item.clone(title=scrapedtitle, action="search_links_abando", url=scrapedurl, thumbnail=scrapedthumbnail)) - - next_page = scrapertools.find_single_match(data, 'Siguiente') - if next_page != "": - next_page = urlparse.urljoin("http://www.abandomoviez.net/%s" % item.prefix, next_page) - itemlist.append(item.clone(title=config.get_localized_string(70502), action="abandomoviez_search", page=next_page, thumbnail="", text_color="")) + for it in js: + itemlist.append(item.clone(title=it['titolo'], thumbnail=it['immagine'].replace('\\',''), url=it['url'].replace('\\',''), action ='search_links_mymovies')) if not itemlist: itemlist.append(item.clone(title=config.get_localized_string(70501), action="", thumbnail="", text_color="")) + if keyboard: + if item.contextual: title = "%s" + else: title = "%s" + itemlist.append(item.clone(title=title % config.get_localized_string(70511), action="manual_search", thumbnail=thumb('search'), extra="mymovies")) + + return itemlist + + +def search_links_mymovies(item): + logger.log() + trailer_url = match(item, patron=r'
  • ]+>(.*?)' - matches = scrapertools.find_multiple_matches(data, patron) - if len(matches) == 0: - trailer_url = scrapertools.find_single_match(data, ' 1: for scrapedthumbnail, id, scrapedtitle in matches: - if not scrapedthumbnail.startswith("http"): - scrapedthumbnail = "http://www.filmaffinity.com" + scrapedthumbnail + if not scrapedthumbnail.startswith("http"): scrapedthumbnail = "http://www.filmaffinity.com" + scrapedthumbnail scrapedurl = "http://www.filmaffinity.com/es/evideos.php?movie_id=%s" % id - if PY3: - 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, action="search_links_filmaff", thumbnail=scrapedthumbnail)) next_page = scrapertools.find_single_match(data, '>>') if next_page != "": next_page = urlparse.urljoin("http://www.filmaffinity.com/es/", next_page) - itemlist.append(item.clone(title=config.get_localized_string(70502), page=next_page, action="filmaffinity_search", thumbnail="", text_color="")) + itemlist.append(item.clone(title=config.get_localized_string(30992), page=next_page, action="filmaffinity_search", thumbnail=thumb('search'), text_color="")) - if not itemlist: - itemlist.append(item.clone(title=config.get_localized_string(70501) % item.contentTitle, action="", thumbnail="", text_color="")) + if not itemlist: itemlist.append(item.clone(title=config.get_localized_string(70501) % item.contentTitle, action="", thumbnail="", text_color="")) - if keyboard: - if item.contextual: - title = "%s" - else: - title = "%s" - itemlist.append(item.clone(title=title % config.get_localized_string(70513), action="manual_search", thumbnail="", extra="filmaffinity")) + if keyboard: + if item.contextual: title = "%s" + else: title = "%s" + itemlist.append(item.clone(title=title % config.get_localized_string(70513), action="manual_search", thumbnail=thumb('search'), extra="filmaffinity")) return itemlist @@ -415,8 +336,7 @@ try: def onInit(self): try: self.control_list = self.getControl(6) - self.getControl(5).setNavigation(self.control_list, self.control_list, self.control_list, - self.control_list) + self.getControl(5).setNavigation(self.control_list, self.control_list, self.control_list, self.control_list) self.getControl(3).setEnabled(0) self.getControl(3).setVisible(0) except: @@ -439,7 +359,7 @@ try: self.setFocus(self.control_list) def onClick(self, id): # Cancel button y [X] - if id == 5: + if id == 5 or id == 7: global window_select, result self.result = "_no_video" result = "no_video"