Fix Mega per Kodi 19
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
from client import Client
|
from lib.megaserver.client import Client
|
||||||
from server import Server
|
from lib.megaserver.server import Server
|
||||||
__all__ = ['Client', 'Server']
|
__all__ = ['Client', 'Server']
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
import base64, json, random, struct, time, sys, traceback
|
import base64, json, random, struct, time, sys, traceback
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
|
PY3 = True
|
||||||
import urllib.request as urllib
|
import urllib.request as urllib
|
||||||
xrange = range
|
xrange = range
|
||||||
else:
|
else:
|
||||||
|
PY3 = False
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from core import httptools
|
from core import httptools
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
from file import File
|
from lib.megaserver.file import File
|
||||||
from handler import Handler
|
from lib.megaserver.handler import Handler
|
||||||
from platformcode import logger
|
from platformcode import logger
|
||||||
from server import Server
|
from lib.megaserver.server import Server
|
||||||
|
|
||||||
|
|
||||||
class Client(object):
|
class Client(object):
|
||||||
@@ -184,7 +186,7 @@ class Client(object):
|
|||||||
from Cryptodome.Cipher import AES
|
from Cryptodome.Cipher import AES
|
||||||
except:
|
except:
|
||||||
from Crypto.Cipher import AES
|
from Crypto.Cipher import AES
|
||||||
decryptor = AES.new(key, AES.MODE_CBC, '\0' * 16)
|
decryptor = AES.new(key, AES.MODE_CBC, b'\0' * 16)
|
||||||
return decryptor.decrypt(data)
|
return decryptor.decrypt(data)
|
||||||
|
|
||||||
def aes_cbc_decrypt_a32(self,data, key):
|
def aes_cbc_decrypt_a32(self,data, key):
|
||||||
@@ -194,7 +196,7 @@ class Client(object):
|
|||||||
return sum((self.aes_cbc_decrypt_a32(a[i:i+4], key) for i in xrange(0, len(a), 4)), ())
|
return sum((self.aes_cbc_decrypt_a32(a[i:i+4], key) for i in xrange(0, len(a), 4)), ())
|
||||||
|
|
||||||
def dec_attr(self, attr, key):
|
def dec_attr(self, attr, key):
|
||||||
attr = self.aes_cbc_decrypt(attr, self.a32_to_str(key)).rstrip('\0')
|
attr = self.aes_cbc_decrypt(attr, self.a32_to_str(key)).rstrip(b'\0')
|
||||||
if not attr.endswith("}"):
|
if not attr.endswith(b"}"):
|
||||||
attr = attr.rsplit("}", 1)[0] + "}"
|
attr = attr.rsplit(b"}", 1)[0] + b"}"
|
||||||
return json.loads(attr[4:]) if attr[:6] == 'MEGA{"' else False
|
return json.loads(attr[4:]) if attr[:6] == b'MEGA{"' else False
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from cursor import Cursor
|
from lib.megaserver.cursor import Cursor
|
||||||
|
|
||||||
|
|
||||||
class File(object):
|
class File(object):
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
import time, os, re, sys
|
import time, os, re, sys
|
||||||
|
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
|
PY3 = True
|
||||||
from http.server import BaseHTTPRequestHandler
|
from http.server import BaseHTTPRequestHandler
|
||||||
import urllib.request as urllib
|
import urllib.request as urllib
|
||||||
import urllib.parse as urlparse
|
import urllib.parse as urlparse
|
||||||
else:
|
else:
|
||||||
|
PY3 = False
|
||||||
from BaseHTTPServer import BaseHTTPRequestHandler
|
from BaseHTTPServer import BaseHTTPRequestHandler
|
||||||
import urlparse
|
import urlparse
|
||||||
import urllib
|
import urllib
|
||||||
@@ -61,15 +63,17 @@ class Handler(BaseHTTPRequestHandler):
|
|||||||
self.send_pls(self.server._client.files)
|
self.send_pls(self.server._client.files)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if PY3: filename = urllib.unquote(url)[1:]
|
||||||
|
else: filename = urllib.unquote(url)[1:].decode("utf-8")
|
||||||
|
|
||||||
if not self.server._client.file or urllib.unquote(url)[1:] != self.server._client.file.name:
|
if not self.server._client.file or urllib.unquote(url)[1:] != self.server._client.file.name:
|
||||||
for f in self.server._client.files:
|
for f in self.server._client.files:
|
||||||
if f.name == urllib.unquote(url)[1:].decode("utf-8"):
|
if f.name == filename:
|
||||||
self.server._client.file = f
|
self.server._client.file = f
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
if self.server._client.file and urllib.unquote(url)[1:].decode("utf-8") == self.server._client.file.name:
|
if self.server._client.file and filename == 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()
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import sys, traceback
|
import sys, traceback
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
from http.server import HTTPServer
|
from http.server import HTTPServer
|
||||||
|
from socketserver import ThreadingMixIn
|
||||||
else:
|
else:
|
||||||
from BaseHTTPServer import HTTPServer
|
from BaseHTTPServer import HTTPServer
|
||||||
from SocketServer import ThreadingMixIn
|
from SocketServer import ThreadingMixIn
|
||||||
|
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from platformcode import logger
|
from platformcode import logger
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ from platformcode import platformtools, logger
|
|||||||
files = None
|
files = None
|
||||||
|
|
||||||
def test_video_exists(page_url):
|
def test_video_exists(page_url):
|
||||||
|
# from core .support import dbg;dbg()
|
||||||
types= "File"
|
types= "File"
|
||||||
msg = "The link has a problem."
|
msg = "The link has a problem."
|
||||||
id_video = None
|
id_video = None
|
||||||
|
|||||||
Reference in New Issue
Block a user