diff --git a/plugin.video.alfa/channels/datoporn.py b/plugin.video.alfa/channels/datoporn.py index b70f37af..2d51cf51 100755 --- a/plugin.video.alfa/channels/datoporn.py +++ b/plugin.video.alfa/channels/datoporn.py @@ -1,73 +1,57 @@ # -*- coding: utf-8 -*- -import re - from core import httptools from core import scrapertools +from lib import jsunpack from platformcode import logger -def mainlist(item): - logger.info() - itemlist = [] +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) - itemlist.append(item.clone(action="categorias", title="Categorías", url="http://dato.porn/categories_all", contentType="movie", viewmode="movie")) - itemlist.append(item.clone(title="Buscar...", action="search", contentType="movie", viewmode="movie")) - return itemlist + data = httptools.downloadpage(page_url).data + + if 'File Not Found' in data or '404 Not Found' in data: + return False, "[Datoporn] El archivo no existe o ha sido borrado" + + return True, "" -def search(item, texto): - logger.info() - item.url = "http://dato.porn/?k=%s&op=search" % texto.replace(" ", "+") - return lista(item) +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + logger.info("url=" + page_url) + data = httptools.downloadpage(page_url).data + logger.debug(data) + media_urls = scrapertools.find_multiple_matches(data, 'src: "([^"]+)",.*?label: "([^"]+)"') + #media_urls = scrapertools.find_multiple_matches(data, 'file\:"([^"]+\.mp4)",label:"([^"]+)"') + # if not media_urls: + # match = scrapertools.find_single_match(data, "p,a,c,k(.*?)") + # try: + # data = jsunpack.unpack(match) + # except: + # pass + # media_urls = scrapertools.find_multiple_matches(data, 'file\:"([^"]+\.mp4)",label:"([^"]+)"') -def lista(item): - logger.info() - itemlist = [] + # Extrae la URL + calidades = [] + video_urls = [] + for media_url in sorted(media_urls, key=lambda x: int(x[1][-3:])): + calidades.append(int(media_url[1][-3:])) + try: + title = ".%s %sp [datoporn]" % (media_url[0].rsplit('.', 1)[1], media_url[1][-3:]) + except: + title = ".%s %sp [datoporn]" % (media_url[-4:], media_url[1][-3:]) + video_urls.append([title, media_url[0]]) - # Descarga la pagina - data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) + sorted(calidades) + m3u8 = scrapertools.find_single_match(data, 'file\:"([^"]+\.m3u8)"') + if not m3u8: + m3u8 = str(scrapertools.find_multiple_matches(data, 'player.updateSrc\({src:.?"([^"]+\.m3u8)"')).replace("['", "").replace("']", "") + calidades = ['720p'] + if m3u8: + video_urls.insert(0, [".m3u8 %s [datoporn]" % calidades[-1], m3u8]) - # Extrae las entradas - patron = '
\s*(.*?)<\/span><\/div><\/a>.*?class="title">(.*?)<\/a>.*?<\/a><\/span><\/div> ' - matches = scrapertools.find_multiple_matches(data, patron) - for scrapedurl, scrapedthumbnail, duration, scrapedtitle in matches: - if "/embed-" not in scrapedurl: - #scrapedurl = scrapedurl.replace("dato.porn/", "dato.porn/embed-") + ".html" - scrapedurl = scrapedurl.replace("datoporn.co/", "datoporn.co/embed-") + ".html" - if duration: - scrapedtitle = "%s - %s" % (duration, scrapedtitle) - scrapedtitle += ' gb' - scrapedtitle = scrapedtitle.replace(":", "'") + for video_url in video_urls: + logger.info("%s - %s" % (video_url[0], video_url[1])) - #logger.debug(scrapedurl + ' / ' + scrapedthumbnail + ' / ' + duration + ' / ' + scrapedtitle) - itemlist.append(item.clone(action="play", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, - server="datoporn", fanart=scrapedthumbnail.replace("_t.jpg", ".jpg"))) - - # Extrae la marca de siguiente página - #next_page = scrapertools.find_single_match(data, 'Next') - next_page = scrapertools.find_single_match(data, 'Next') - if next_page and itemlist: - itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page)) - - return itemlist - - -def categorias(item): - logger.info() - itemlist = [] - - # Descarga la pagina - data = httptools.downloadpage(item.url).data - - # Extrae las entradas (carpetas) - patron = '
\s*(.*?).*?(.*?)' - matches = scrapertools.find_multiple_matches(data, patron) - for scrapedurl, scrapedthumbnail, numero, scrapedtitle in matches: - if numero: - scrapedtitle = "%s (%s)" % (scrapedtitle, numero) - - itemlist.append(item.clone(action="lista", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail)) - - return itemlist + return video_urls diff --git a/plugin.video.alfa/channels/rexpelis.py b/plugin.video.alfa/channels/rexpelis.py index 26f925b2..7cf20bef 100644 --- a/plugin.video.alfa/channels/rexpelis.py +++ b/plugin.video.alfa/channels/rexpelis.py @@ -104,9 +104,9 @@ def sub_search(item): data = httptools.downloadpage(item.url).data token = scrapertools.find_single_match(data, 'csrf-token" content="([^"]+)') data = httptools.downloadpage(item.url + "&_token=" + token, headers=headers).data - logger.info("Intel33 %s" %data) + #logger.info("Intel33 %s" %data) data_js = jsontools.load(data)["data"]["m"] - logger.info("Intel44 %s" %data_js) + #logger.info("Intel44 %s" %data_js) for js in data_js: itemlist.append(Item(channel = item.channel, action = "findvideos", @@ -139,14 +139,15 @@ def peliculas(item): post = "page=%s&type=%s&_token=%s" %(item.page, item.type, token) if item.slug: post += "&slug=%s" %item.slug - logger.info("Intel11 %s" %post) + #logger.info("Intel11 %s" %post) data = httptools.downloadpage(host + "/pagination", post=post, headers=headers).data - patron = 'href="([^"]+)".*?' + #logger.info("Intel11 %s" %data) + patron = '(?s)href="([^"]+)".*?' patron += 'src="([^"]+)".*?' - patron += '

([^<]+).*?' - patron += '([^<]+)' + patron += 'text-center">([^<]+).*?' + patron += '

([^<]+)' matches = scrapertools.find_multiple_matches(data, patron) - for scrapedurl, scrapedthumbnail, scrapedtitle , scrapedyear in matches: + for scrapedurl, scrapedthumbnail, scrapedyear, scrapedtitle in matches: itemlist.append(Item(channel = item.channel, action = "findvideos", contentTitle = scrapedtitle,