Fix Mega per Kodi 19

This commit is contained in:
Alhaziel01
2020-08-18 16:42:18 +02:00
parent a6a301e855
commit 293948d189
6 changed files with 23 additions and 14 deletions
+2 -2
View File
@@ -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']
+10 -8
View File
@@ -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 -1
View File
@@ -1,4 +1,4 @@
from cursor import Cursor from lib.megaserver.cursor import Cursor
class File(object): class File(object):
+6 -2
View File
@@ -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()
+2
View File
@@ -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
+1
View File
@@ -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