From f0f41b217ec81a45dc43bba4005a7d3d84d574ab Mon Sep 17 00:00:00 2001 From: mac12m99 Date: Sun, 17 Mar 2019 11:41:47 +0100 Subject: [PATCH] add zcrypt --- plugin.video.alfa/core/servertools.py | 3 + .../servers/decrypters/zcrypt.py | 121 ++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 plugin.video.alfa/servers/decrypters/zcrypt.py diff --git a/plugin.video.alfa/core/servertools.py b/plugin.video.alfa/core/servertools.py index 64b5030c..ffadfa99 100644 --- a/plugin.video.alfa/core/servertools.py +++ b/plugin.video.alfa/core/servertools.py @@ -15,6 +15,7 @@ from core import jsontools from core.item import Item from platformcode import config, logger from platformcode import platformtools +from servers.decrypters import zcrypt dict_servers_parameters = {} @@ -40,6 +41,8 @@ def find_video_items(item=None, data=None): if data is None: data = httptools.downloadpage(item.url).data + data = zcrypt.get_video_url(data) + # Crea un item si no hay item if item is None: item = Item() diff --git a/plugin.video.alfa/servers/decrypters/zcrypt.py b/plugin.video.alfa/servers/decrypters/zcrypt.py new file mode 100644 index 00000000..995488d6 --- /dev/null +++ b/plugin.video.alfa/servers/decrypters/zcrypt.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +# Ringraziamo errmax e dr-z3r0 +import re + +from core import httptools, scrapertools, scrapertoolsV2 + +from servers.decrypters import expurl +from platformcode import logger + + +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + # import web_pdb; web_pdb.set_trace() + encontrados = { + 'https://vcrypt.net/images/logo', 'https://vcrypt.net/css/out', + 'https://vcrypt.net/images/favicon', 'https://vcrypt.net/css/open', + 'http://linkup.pro/js/jquery', 'https://linkup.pro/js/jquery', + 'http://www.rapidcrypt.net/open' + } + devuelve = [] + + patronvideos = [ + r'(https?://(gestyy|rapidteria|sprysphere)\.com/[a-zA-Z0-9]+)', + r'(https?://(?:www\.)?(vcrypt|linkup)\.[^/]+/[^/]+/[a-zA-Z0-9_]+)' + ] + + for patron in patronvideos: + logger.info(" find_videos #" + patron + "#") + matches = re.compile(patron).findall(page_url) + + for url, host in matches: + if url not in encontrados: + logger.info(" url=" + url) + encontrados.add(url) + + import requests + headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:59.0) Gecko/20100101 Firefox/59.0'} + + if host == 'gestyy': + resp = httptools.downloadpage( + url, + follow_redirects=False, + cookies=False, + only_headers=True, + replace_headers=True, + headers={'User-Agent': 'curl/7.59.0'}) + data = resp.headers.get("location", "") + elif 'vcrypt.net' in url: + # req = httptools.downloadpage(url) + req = requests.get(url, headers=headers) + idata = req.content + print(idata) + patron = r"document.cookie\s=\s.*?'(.*)'" + # matches = re.compile(patron, re.IGNORECASE).findall(idata) + matches = re.finditer(patron, idata, re.MULTILINE) + mcookie = {} + for matchNum, match in enumerate(matches, start=1): + for c in match.group(1).split("; "): + c, v = c.split('=') + mcookie[c] = v + + try: + patron = r';URL=([^\"]+)\">' + dest = scrapertools.get_match(idata, patron) + r = requests.post(dest, cookies=mcookie, headers=headers) + url = r.url + except: + r = requests.get(req.url, headers=headers) + if r.url == url: + url = "" + + if "4snip" in url: + desturl = url.replace("/out/", "/outlink/") + import os + par = os.path.basename(desturl) + rdata = requests.post(desturl, data={'url': par}) + url = rdata.url + + if "wstream" in url: + # import web_pdb; web_pdb.set_trace() + url = url.replace("/video/", "/") + + data = url + elif 'linkup' in url: + idata = httptools.downloadpage(url).data + data = scrapertoolsV2.get_match(idata, "]*src=\\'([^'>]*)\\'[^<>]*>") + else: + data = "" + while host in url: + resp = httptools.downloadpage( + url, follow_redirects=False) + url = resp.headers.get("location", "") + if not url: + data = resp.data + elif host not in url: + data = url + if data: + devuelve.append(data) + else: + logger.info(" url duplicada=" + url) + + patron = r"""(https?://(?:www\.)?(?:threadsphere\.bid|adf\.ly|q\.gs|j\.gs|u\.bb|ay\.gy|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|adfoc\.us|lnx\.lu|sh\.st|href\.li|anonymz\.com|shrink-service\.it|rapidcrypt\.net)/[^"']+)""" + + logger.info(" find_videos #" + patron + "#") + matches = re.compile(patron).findall(page_url) + + for url in matches: + if url not in encontrados: + logger.info(" url=" + url) + encontrados.add(url) + + long_url = expurl.expand_url(url) + if long_url: + devuelve.append(long_url) + else: + logger.info(" url duplicada=" + url) + + ret = page_url+" "+str(devuelve) if devuelve else page_url + logger.info(" RET=" + str(ret)) + return ret + +