This commit is contained in:
Alhaziel01
2020-05-21 16:15:41 +02:00
parent e30fcc0ef2
commit 1700c43a33
6 changed files with 67 additions and 62 deletions
+8 -7
View File
@@ -1,9 +1,10 @@
import base64 import base64, json, random, struct, time, sys, traceback
import json if sys.version_info[0] >= 3:
import random import urllib.request as urllib
import struct xrange = range
import time else:
import urllib import urllib
from core import httptools from core import httptools
from threading import Thread from threading import Thread
@@ -102,7 +103,7 @@ class Client(object):
return files return files
except: except:
print(traceback.format_exc()) logger.info(traceback.format_exc())
pass pass
return files return files
+10 -5
View File
@@ -1,5 +1,10 @@
import urllib2 import sys, traceback
import traceback from platformcode import logger
if sys.version_info[0] >= 3:
from urllib.request import Request, urlopen
else:
from urllib2 import Request, urlopen
class Cursor(object): class Cursor(object):
def __init__(self, file): def __init__(self, file):
@@ -18,14 +23,14 @@ class Cursor(object):
file = self._file._client.api_req({'a': 'g', 'g': 1, 'p': self._file.file_id}) file = self._file._client.api_req({'a': 'g', 'g': 1, 'p': self._file.file_id})
self._file.url= file["g"] self._file.url= file["g"]
req = urllib2.Request(self._file.url) req = Request(self._file.url)
req.headers['Range'] = 'bytes=%s-' % (offset) req.headers['Range'] = 'bytes=%s-' % (offset)
try: try:
self.conn = urllib2.urlopen(req) self.conn = urlopen(req)
try: try:
self.prepare_decoder(offset) self.prepare_decoder(offset)
except: except:
print(traceback.format_exc()) logger.error(traceback.format_exc())
except: except:
self.mega_request(offset, True) self.mega_request(offset, True)
-5
View File
@@ -28,8 +28,3 @@ class File(object):
self.cursor = True self.cursor = True
self.cursors.append(c) self.cursors.append(c)
return c return c
+18 -16
View File
@@ -1,13 +1,16 @@
import BaseHTTPServer import time, os, re, sys
import urlparse
import time if sys.version_info[0] >= 3:
import urllib from http.server import BaseHTTPRequestHandler
import types import urllib.request as urllib
import os import urllib.parse as urlparse
import re else:
from BaseHTTPServer import BaseHTTPRequestHandler
import urlparse
import urllib
class Handler(BaseHTTPServer.BaseHTTPRequestHandler): class Handler(BaseHTTPRequestHandler):
protocol_version = 'HTTP/1.1' protocol_version = 'HTTP/1.1'
def log_message(self, format, *args): def log_message(self, format, *args):
@@ -68,19 +71,19 @@ class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
if self.server._client.file and urllib.unquote(url)[1:].decode("utf-8") == self.server._client.file.name: if self.server._client.file and urllib.unquote(url)[1:].decode("utf-8") == self.server._client.file.name:
range = False range = False
self.offset=0 self.offset = 0
size, mime = self._file_info() size, mime = self._file_info()
start, end = self.parse_range(self.headers.get('Range', "")) start, end = self.parse_range(self.headers.get('Range', ""))
self.size = size self.size = size
if start <> None: if start != None:
if end == None: end = size - 1 if end == None: end = size - 1
self.offset=int(start) self.offset=int(start)
self.size=int(end) - int(start) + 1 self.size=int(end) - int(start) + 1
range=(int(start), int(end), int(size)) range=(int(start), int(end), int(size))
else: else:
range = None range = None
self.send_resp_header(mime, size, range) self.send_resp_header(mime, size, range)
return True return True
@@ -98,7 +101,7 @@ class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
def send_resp_header(self, cont_type, size, range=False): def send_resp_header(self, cont_type, size, range=False):
if range: if range:
self.send_response(206, 'Partial Content') self.send_response(206, 'Partial Content')
else: else:
@@ -108,15 +111,14 @@ class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
self.send_header('Accept-Ranges', 'bytes') self.send_header('Accept-Ranges', 'bytes')
if range: if range:
if isinstance(range, (types.TupleType, types.ListType)) and len(range)==3: if isinstance(range, (tuple, list)) and len(range)==3:
self.send_header('Content-Range', 'bytes %d-%d/%d' % range) self.send_header('Content-Range', 'bytes %d-%d/%d' % range)
self.send_header('Content-Length', range[1]-range[0]+1) self.send_header('Content-Length', range[1]-range[0]+1)
else: else:
raise ValueError('Invalid range value') raise ValueError('Invalid range value')
else: else:
self.send_header('Content-Length', size) self.send_header('Content-Length', size)
self.send_header('Connection', 'close') self.send_header('Connection', 'close')
self.end_headers() self.end_headers()
+10 -6
View File
@@ -1,14 +1,18 @@
import traceback import sys, traceback
import BaseHTTPServer if sys.version_info[0] >= 3:
from http.server import HTTPServer
else:
from BaseHTTPServer import HTTPServer
from SocketServer import ThreadingMixIn from SocketServer import ThreadingMixIn
from threading import Thread from threading import Thread
from platformcode import logger
class Server(ThreadingMixIn, BaseHTTPServer.HTTPServer): class Server(ThreadingMixIn, HTTPServer):
daemon_threads = True daemon_threads = True
timeout = 1 timeout = 1
def __init__(self, address, handler, client): def __init__(self, address, handler, client):
BaseHTTPServer.HTTPServer.__init__(self,address,handler) HTTPServer.__init__(self,address,handler)
self._client = client self._client = client
self.running=True self.running=True
self.request = None self.request = None
@@ -21,7 +25,7 @@ class Server(ThreadingMixIn, BaseHTTPServer.HTTPServer):
try: try:
self.handle_request() self.handle_request()
except: except:
print traceback.format_exc() logger.error(traceback.format_exc())
def run(self): def run(self):
t=Thread(target=self.serve, name='HTTP Server') t=Thread(target=self.serve, name='HTTP Server')
@@ -30,4 +34,4 @@ class Server(ThreadingMixIn, BaseHTTPServer.HTTPServer):
def handle_error(self, request, client_address): def handle_error(self, request, client_address):
if not "socket.py" in traceback.format_exc(): if not "socket.py" in traceback.format_exc():
print traceback.format_exc() logger.error(traceback.format_exc())
+21 -23
View File
@@ -12,9 +12,8 @@ from platformcode import platformtools, logger
files = None files = None
def test_video_exists(page_url): def test_video_exists(page_url):
types= "Archivo" types= "File"
gen = "o" msg = "The link has a problem."
msg = "El link tiene algún problema."
id_video = None id_video = None
get = "" get = ""
seqno = random.randint(0, 0xFFFFFFFF) seqno = random.randint(0, 0xFFFFFFFF)
@@ -29,25 +28,24 @@ def test_video_exists(page_url):
get = "&n=" + f_id get = "&n=" + f_id
post = {"a":"f","c":1,"r":0} post = {"a":"f","c":1,"r":0}
isfolder = True isfolder = True
types= "Carpeta" types= "Folder"
gen = "a"
if id_video: if id_video:
#Aqui ya para hacer un check se complica, no hay una manera directa aún teniendo la id del video dentro de la carpeta #Aqui ya para hacer un check se complica, no hay una manera directa aún teniendo la id del video dentro de la carpeta
return True, "" return True, ""
codes = {-1: 'Se ha producido un error interno en Mega.nz', codes = {-1: 'An internal error has occurred in Mega.nz',
-2: 'Error en la petición realizada, Cod -2', -2: 'Error in the request made, Cod -2',
-3: 'Un atasco temporal o malfuncionamiento en el servidor de Mega impide que se procese su link', -3: 'A temporary jam or malfunction in the Mega server prevents your link from being processed',
-4: 'Ha excedido la cuota de transferencia permitida. Vuelva a intentarlo más tarde', -4: 'You have exceeded the allowed transfer fee. Try it again later',
-6: types + ' no encontrad' + gen + ', cuenta eliminada', -6: types + ' not find deleted account',
-9: types + ' no encontrad'+ gen, -9: types + ' not find',
-11: 'Acceso restringido', -11: 'Restricted access',
-13: 'Está intentando acceder a un archivo incompleto', -13: 'You are trying to access an incomplete file',
-14: 'Una operación de desencriptado ha fallado', -14: 'Decryption operation failed',
-15: 'Sesión de usuario expirada o invalida, logueese de nuevo', -15: 'User session expired or invalid, log in again',
-16: types + ' no disponible, la cuenta del uploader fue baneada', -16: types + ' not available, the uploader account was banned',
-17: 'La petición sobrepasa su cuota de transferiencia permitida', -17: 'The request exceeds your allowable transfer fee',
-18: types + ' temporalmente no disponible, intentelo de nuevo más tarde' -18: types + ' temporarily unavailable, please try again later'
} }
api = 'https://g.api.mega.co.nz/cs?id=%d%s' % (seqno, get) api = 'https://g.api.mega.co.nz/cs?id=%d%s' % (seqno, get)
req_api = httptools.downloadpage(api, post=json.dumps([post])).data req_api = httptools.downloadpage(api, post=json.dumps([post])).data
@@ -65,16 +63,16 @@ def test_video_exists(page_url):
return False, msg return False, msg
else: else:
#Comprobación limite cuota restante #Comprobación limite cuota restante
from megaserver import Client from lib.megaserver import Client
global c
c = Client(url=page_url, is_playing_fnc=platformtools.is_playing) c = Client(url=page_url, is_playing_fnc=platformtools.is_playing)
global files global files
files = c.get_files() files = c.get_files()
if files == 509: if files == 509:
msg1 = "[B][COLOR tomato]El video excede el limite de visionado diario que Mega impone a los usuarios Free." msg1 = "The video exceeds the daily viewing limit."
msg1 += " Prueba en otro servidor o canal.[/B][/COLOR]"
return False, msg1 return False, msg1
elif isinstance(files, (int, long)): elif isinstance(files, (int, long)):
return False, "Error codigo %s" % str(files) return False, "Error code %s" % str(files)
return True, "" return True, ""