diff --git a/plugin.video.alfa/channels/cinetux.py b/plugin.video.alfa/channels/cinetux.py index b770a215..303616d2 100644 --- a/plugin.video.alfa/channels/cinetux.py +++ b/plugin.video.alfa/channels/cinetux.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -import re from channels import autoplay from channels import filtertools from core import httptools @@ -176,11 +175,11 @@ def destacadas(item): item.text_color = color2 data = httptools.downloadpage(item.url).data bloque = scrapertools.find_single_match(data, 'peliculas_destacadas.*?class="letter_home"') - patron = '(?s)title="([^"]+)".*?' - patron += 'href="([^"]+)".*?' + patron = '(?s)href="([^"]+)".*?' + patron += 'alt="([^"]+)".*?' patron += 'src="([^"]+)' matches = scrapertools.find_multiple_matches(bloque, patron) - for scrapedtitle, scrapedurl, scrapedthumbnail in matches: + for scrapedurl, scrapedtitle, scrapedthumbnail in matches: scrapedurl = CHANNEL_HOST + scrapedurl itemlist.append(item.clone(action="findvideos", title=scrapedtitle, fulltitle=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, @@ -224,11 +223,12 @@ def findvideos(item): logger.info() itemlist=[] data = httptools.downloadpage(item.url).data - patron = 'class="title">.*?src.*?/>([^>]+).*?data-type="([^"]+).*?data-post="(\d+)".*?data-nume="(\d+)' - matches = re.compile(patron, re.DOTALL).findall(data) - #logger.info("Intel66") - #scrapertools.printMatches(matches) - for language, tp, pt, nm in matches: + patron = 'tooltipctx.*?data-type="([^"]+).*?' + patron += 'data-post="(\d+)".*?' + patron += 'data-nume="(\d+).*?' + patron += 'class="title">.*?src.*?/>([^<]+)' + matches = scrapertools.find_multiple_matches(data, patron) + for tp, pt, nm, language in matches: language = language.strip() post = {'action':'doo_player_ajax', 'post':pt, 'nume':nm, 'type':tp} post = urllib.urlencode(post) @@ -242,17 +242,12 @@ def findvideos(item): else: title = '' url = scrapertools.find_single_match(new_data, "src='([^']+)'") - #logger.info("Intel33 %s" %url) - url = get_url(url) - if "mega" not in url and "mediafire" not in url: + url = get_url(url.replace('\\/', '/')) + if url: itemlist.append(Item(channel=item.channel, title ='%s'+title, url=url, action='play', quality=item.quality, language=IDIOMAS[language], infoLabels=item.infoLabels)) - #logger.info("Intel44") - #scrapertools.printMatches(itemlist) patron = "([^<]+)<" - matches = re.compile(patron, re.DOTALL).findall(data) - #logger.info("Intel66a") - #scrapertools.printMatches(matches) + matches = scrapertools.find_multiple_matches(data, patron) for hidden_url, quality, language in matches: if not config.get_setting('unify'): title = ' [%s][%s]' % (quality, IDIOMAS[language]) @@ -260,27 +255,32 @@ def findvideos(item): title = '' new_data = httptools.downloadpage(hidden_url).data url = scrapertools.find_single_match(new_data, 'id="link" href="([^"]+)"') - url = url.replace('\\/', '/') - url = get_url(url) - if "mega" not in url and "mediafire" not in url: + url = get_url(url.replace('\\/', '/')) + if url: itemlist.append(Item(channel=item.channel, title='%s'+title, url=url, action='play', quality=quality, language=IDIOMAS[language], infoLabels=item.infoLabels)) - #logger.info("Intel55") - #scrapertools.printMatches(itemlist) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + itemlist.sort(key=lambda it: (it.language, it.server, it.quality)) + tmdb.set_infoLabels(itemlist, __modo_grafico__) return itemlist def get_url(url): + logger.info() if "cinetux.me" in url: d1 = httptools.downloadpage(url).data - if "mail" in url: - id = scrapertools.find_single_match(d1, ' 0 and item.contentType=="movie" and item.contentChannel!='videolibrary': diff --git a/plugin.video.alfa/channels/planetadocumental.json b/plugin.video.alfa/channels/planetadocumental.json deleted file mode 100644 index ecc6eef7..00000000 --- a/plugin.video.alfa/channels/planetadocumental.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "id": "planetadocumental", - "name": "Planeta documental", - "language": ["*"], - "active": true, - "adult": false, - "thumbnail": "https://s8.postimg.cc/r6njedwdt/planeta_documental1.png", - "banner": "https://s8.postimg.cc/6za3m36m9/planeta_documental2.png", - "categories": [ - "documentary" - ], - "settings": [ - { - "id": "include_in_global_search", - "type": "bool", - "label": "Incluir en busqueda global", - "default": true, - "enabled": true, - "visible": true - } - ] -} diff --git a/plugin.video.alfa/channels/planetadocumental.py b/plugin.video.alfa/channels/planetadocumental.py deleted file mode 100644 index 52f973ae..00000000 --- a/plugin.video.alfa/channels/planetadocumental.py +++ /dev/null @@ -1,142 +0,0 @@ -# -*- coding: utf-8 -*- -# -*- Channel Planeta Documental -*- -# -*- Created for Alfa-addon -*- -# -*- By the Alfa Develop Group -*- - -from core import httptools -from core import jsontools -from core import scrapertools -from core import servertools -from core import tmdb -from core.item import Item -from channelselector import get_thumb -from platformcode import config, logger -from channels import autoplay -from channels import filtertools - - -IDIOMAS = {"Latino": "LAT"} -list_language = IDIOMAS.values() - -list_quality = [] - -list_servers = ['gvideo'] - -host = "https://www.planetadocumental.com" - -def mainlist(item): - logger.info() - itemlist = [] - autoplay.init(item.channel, list_servers, list_quality) - itemlist.append(item.clone(title="Últimos documentales", action="lista", - url= host, - thumbnail=get_thumb('lastest', auto=True))) - itemlist.append(item.clone(title="Por genero", action="generos", - url= host, thumbnail=get_thumb('genres', auto=True))) - itemlist.append(item.clone(title="", action="")) - itemlist.append(item.clone(title="Buscar...", action="search", thumbnail=get_thumb('search', auto=True))) - - return itemlist - - - -def generos(item): - logger.info() - itemlist = [] - data = httptools.downloadpage(item.url).data - bloque = scrapertools.find_single_match(data, 'sub-menu elementor-nav-menu--dropdown(.*?)/search[^\"']+).*?>(?P[^<>]+).*?badge[^>]+>(?P\d+)", data, re.DOTALL | re.MULTILINE) for url, name, counter in categories: result.append(item.clone(action = "links", title = "%s (%s videos)" % (name, counter), url = urljoin(item.url, url))) - return result + def get_page(url): page = re.search("p=(\d+)", url) if page: return int(page.group(1)) return 1 + def get_page_url(url, page): logger.debug("URL: %s to page %d" % (url, page)) resultURL = re.sub("([&\?]p=)(?:\d+)", "\g<1>%d" % page, url) if resultURL == url: resultURL += ("&" if "?" in url else "?") + "p=%d" % (page) - logger.debug("Result: %s" % (resultURL)) return resultURL @@ -64,21 +62,15 @@ def get_page_url(url, page): def links(item): logger.info() data = httptools.downloadpage(item.url).data - reExpr = "[^'\"]+)[^>]+(?:title|alt)[^'\"]*['\"](?P[^\"]+)[^>]+id[^'\"]*['\"](?P<id>[^'\"]+)[^>]*>(?:[^<]*<[^>]+>(?P<quality>[^<]+)<)?[^<]*<[^>]*duration[^>]*>(?P<duration>[^<]+)" reResults = re.findall(reExpr, data, re.MULTILINE | re.DOTALL) result = [] - for img, title, vID, quality, duration in reResults: - logger.info("[link] %(title)s [%(quality)s] [%(duration)s]: %(vid)s (%(img)s" % ({"title": title, "duration": duration, "vid": vID, "img": img, "quality": quality if quality else "--"})) - formattedQuality = "" if quality: formattedQuality += " [%s]" % (quality) - titleFormatted = "%(title)s%(quality)s [%(duration)s]" % ({"title": title, "quality": formattedQuality, "duration": duration}) result.append(item.clone(action = "play", title = titleFormatted, url = urljoin(item.url, "/view/%s" % (vID)), thumbnail = urljoin(item.url, img), vID = vID)) - # Has pagination paginationOccurences = data.count('class="prevnext"') if paginationOccurences: @@ -86,13 +78,11 @@ def links(item): logger.info("Page " + str(page) + " Ocurrences: " + str(paginationOccurences)) if page > 1: result.append(item.clone(action = "links", title = "<< Anterior", url = get_page_url(item.url, page - 1))) - if paginationOccurences > 1 or page == 1: result.append(item.clone(action = "links", title = "Siguiente >>", url = get_page_url(item.url, page + 1))) - - return result + def play(item): logger.info(item) embededURL = urljoin(item.url, "/view/%s" % (item.vID)) diff --git a/plugin.video.alfa/lib/unshortenit.py b/plugin.video.alfa/lib/unshortenit.py index 664e3bfe..9e12f629 100755 --- a/plugin.video.alfa/lib/unshortenit.py +++ b/plugin.video.alfa/lib/unshortenit.py @@ -26,7 +26,7 @@ def find_in_text(regex, text, flags=re.IGNORECASE | re.DOTALL): class UnshortenIt(object): - _adfly_regex = r'adf\.ly|j\.gs|q\.gs|u\.bb|ay\.gy|atominik\.com|tinyium\.com|microify\.com|threadsphere\.bid|clearload\.bid|activetect\.net' + _adfly_regex = r'adf\.ly|j\.gs|q\.gs|u\.bb|ay\.gy|atominik\.com|tinyium\.com|microify\.com|threadsphere\.bid|clearload\.bid|activetect\.net|swiftviz\.net' _linkbucks_regex = r'linkbucks\.com|any\.gs|cash4links\.co|cash4files\.co|dyo\.gs|filesonthe\.net|goneviral\.com|megaline\.co|miniurls\.co|qqc\.co|seriousdeals\.net|theseblogs\.com|theseforums\.com|tinylinks\.co|tubeviral\.com|ultrafiles\.net|urlbeat\.net|whackyvidz\.com|yyv\.co' _adfocus_regex = r'adfoc\.us' _lnxlu_regex = r'lnx\.lu' diff --git a/plugin.video.alfa/servers/bitp.py b/plugin.video.alfa/servers/bitp.py index 2070f04c..45d2a2f2 100644 --- a/plugin.video.alfa/servers/bitp.py +++ b/plugin.video.alfa/servers/bitp.py @@ -23,7 +23,7 @@ def get_video_url(page_url, user="", password="", video_password=""): logger.info("(page_url='%s')" % page_url) video_urls = [] data = httptools.downloadpage(page_url).data - videourl = scrapertools.find_multiple_matches(data, '<source src="(http[^"]+).*?data-res="([^"]+)') + videourl = scrapertools.find_multiple_matches(data, '<source src="(http[^"]+).*?title="([^"]+)') scrapertools.printMatches(videourl) for scrapedurl, scrapedquality in videourl: if "loadthumb" in scrapedurl: diff --git a/plugin.video.alfa/servers/dostream.py b/plugin.video.alfa/servers/dostream.py index 4d23a236..7184d286 100644 --- a/plugin.video.alfa/servers/dostream.py +++ b/plugin.video.alfa/servers/dostream.py @@ -3,33 +3,27 @@ # Conector DoStream By Alfa development Group # -------------------------------------------------------- -import re from core import httptools +from core import scrapertools from platformcode import logger def test_video_exists(page_url): logger.info("(page_url='%s')" % page_url) - data = httptools.downloadpage(page_url) - if data.code == 404: - return False, "[Dostream] El archivo no existe o ha sido borrado" - + return False, "[Dostream] El archivo no existe o ha sido borrado" return True, "" def get_video_url(page_url, premium=False, user="", password="", video_password=""): logger.info("url=" + page_url) - video_urls = [] - data = httptools.downloadpage(page_url).data - data = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data) - logger.debug(data) - patron = "(?:'src'|'url'):'(http.*?)'" - matches = re.compile(patron, re.DOTALL).findall(data) - - for url in matches: - video_urls.append(['dostream',url]) - + data = httptools.downloadpage(page_url, headers={"Referer":page_url}).data + patron = '"label":"([^"]+)".*?' + patron += '"src":"(http.*?)".*?' + matches = scrapertools.find_multiple_matches(data, patron) + for label, url in matches: + video_urls.append(['%s [dostream]' %label, url]) + video_urls.sort(key=lambda it: int(it[0].split("p ")[0])) return video_urls diff --git a/plugin.video.alfa/servers/streamplay.json b/plugin.video.alfa/servers/streamplay.json index eec0fb52..22cf998a 100755 --- a/plugin.video.alfa/servers/streamplay.json +++ b/plugin.video.alfa/servers/streamplay.json @@ -4,7 +4,7 @@ "ignore_urls": [], "patterns": [ { - "pattern": "streamplay.to/(?:embed-|player-|)([a-z0-9]+)(?:.html|)", + "pattern": "streamplay.(?:to|me)/(?:embed-|player-|)([a-z0-9]+)(?:.html|)", "url": "http://streamplay.to/player-\\1.html" } ]