# -*- coding: utf-8 -*- from core import httptools from core import scrapertools from platformcode import config, logger headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'} def test_video_exists(page_url): logger.info("(page_url='%s')" % page_url) header = {} if "|" in page_url: page_url, referer = page_url.split("|", 1) header = {'Referer': referer} data = httptools.downloadpage(page_url, headers=header, cookies=False).data if 'We’re Sorry!' in data: data = httptools.downloadpage(page_url.replace("/embed/", "/f/"), headers=header, cookies=False).data if 'We’re Sorry!' in data: return False, "[Openload] 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 = [] header = {} if "|" in page_url: page_url, referer = page_url.split("|", 1) header = {'Referer': referer} data = httptools.downloadpage(page_url, headers=header, cookies=False).data subtitle = scrapertools.find_single_match(data, '([^<]+)<' % var_r) numeros = scrapertools.find_single_match(data, '_[A-f0-9]+x[A-f0-9]+\s*(?:=|\^)\s*([0-9]{4,}|0x[A-f0-9]{4,})') op1, op2 = scrapertools.find_single_match(data, '\(0x(\d),0x(\d)\);') idparse, hexparse = scrapertools.find_multiple_matches(data, "parseInt\('([0-9]+)'") # numeros = [numeros, str(int(hexparse, 8))] rangos, rangos2 = scrapertools.find_single_match(data, "\)-([0-9]+).0x4\)/\(([0-9]+)") videourl = "" for encode in var_encodes: text_decode = "" try: mult = int(op1) * int(op2) rango1 = encode[:mult] decode1 = [] for i in range(0, len(rango1), 8): decode1.append(int(rango1[i:i + 8], 16)) rango1 = encode[mult:] j = 0 i = 0 while i < len(rango1): index1 = 64 value1 = 0 value2 = 0 value3 = 0 while True: if (i + 1) >= len(rango1): index1 = 143 value3 = int(rango1[i:i + 2], 16) i += 2 data = value3 & 63 value2 += data << value1 value1 += 6 if value3 < index1: break # value4 = value2 ^ decode1[j % (mult / 8)] ^ int(idparse,8) # for n in numeros: # if not n.isdigit(): # n = int(n, 16) # value4 ^= int(n) value4 = value2 ^ decode1[(j % 9)] ^ (int(idparse, 8) - int(rangos) + 4) / (int(rangos2) - 8) ^ int(hexparse, 8) value5 = index1 * 2 + 127 for h in range(4): valorfinal = (value4 >> 8 * h) & (value5) valorfinal = chr(valorfinal - 1) if valorfinal != "%": text_decode += valorfinal j += 1 except: continue videourl = "https://openload.co/stream/%s?mime=true" % text_decode resp_headers = httptools.downloadpage(videourl, follow_redirects=False, only_headers=True) videourl = resp_headers.headers["location"].replace("https", "http").replace("?mime=true", "") extension = resp_headers.headers["content-type"] break # Falla el método, se utiliza la api aunque en horas punta no funciona if not videourl: videourl, extension = get_link_api(page_url) except: import traceback logger.info(traceback.format_exc()) # Falla el método, se utiliza la api aunque en horas punta no funciona videourl, extension = get_link_api(page_url) extension = extension.replace("video/", ".").replace("application/x-", ".") if not extension: try: extension = scrapertools.find_single_match(data, '