From 9bef4d5087fe487831f9fd7ef36b089e271efe41 Mon Sep 17 00:00:00 2001 From: Paco8 <5084042+Paco8@users.noreply.github.com> Date: Wed, 8 Feb 2023 22:42:00 +0100 Subject: [PATCH] Update proxy --- resources/lib/b64.py | 21 +++++++++++++++++++++ resources/lib/proxy.py | 20 ++++++++++---------- 2 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 resources/lib/b64.py diff --git a/resources/lib/b64.py b/resources/lib/b64.py new file mode 100644 index 0000000..458495d --- /dev/null +++ b/resources/lib/b64.py @@ -0,0 +1,21 @@ +# encoding: utf-8 +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +from __future__ import unicode_literals, absolute_import, division + +import base64 +import sys + +if sys.version_info[0] >= 3: + unicode = str + +def encode_base64(data): + if isinstance(data, unicode): + data = data.encode("utf-8") + return base64.b64encode(data).decode("utf-8") + +def decode_base64(data): + if isinstance(data, unicode): + data = data.encode("utf-8") + return base64.b64decode(data).decode("utf-8") diff --git a/resources/lib/proxy.py b/resources/lib/proxy.py index 402b570..4832d01 100644 --- a/resources/lib/proxy.py +++ b/resources/lib/proxy.py @@ -38,9 +38,10 @@ import json import requests import threading import socket -import base64 from contextlib import closing import xbmcaddon + +from .b64 import encode_base64 from .log import LOG from .addon import profile_dir @@ -92,16 +93,16 @@ class RequestHandler(BaseHTTPRequestHandler): baseurl = os.path.dirname(response.url) LOG('baseurl: {}'.format(baseurl)) content = response.content.decode('utf-8') - pos = content.find(' -1: - content = content[:pos] + '' + baseurl + '/' + content[pos:] - content = content.replace('lang="qaa"', 'lang="eng"') if not xbmcaddon.Addon().getSettingBool('use_ttml2ssa'): LOG(self.headers.get('Host')) my_address = 'http://' + self.headers.get('Host') LOG('my_address: {}'.format(my_address)) content = content.replace('mimeType="application/ttml+xml"', 'mimeType="text/vtt"') content = re.sub(r'(.*?)\.ttml<\/BaseURL>', r'{}/?subtitle={}/\1.ttml'.format(my_address, baseurl), content) + pos = content.find(' -1: + content = content[:pos] + '' + baseurl + '/' + content[pos:] + content = content.replace('lang="qaa"', 'lang="eng"') #LOG('content: {}'.format(content)) manifest_data = content self.send_response(200) @@ -153,7 +154,7 @@ class RequestHandler(BaseHTTPRequestHandler): length = int(self.headers.get('content-length', 0)) isa_data = self.rfile.read(length) LOG('isa_data length: {}'.format(length)) - LOG('isa_data: {}'.format(base64.b64encode(isa_data))) + LOG('isa_data: {}'.format(encode_base64(isa_data))) token = params['token'] LOG('token: {}'.format(token)) @@ -196,11 +197,10 @@ class RequestHandler(BaseHTTPRequestHandler): if d['errorCode'] == 4027: if not reregister_needed and xbmcaddon.Addon().getSettingBool('reregister'): reregister_needed = True - else: - break + continue else: - LOG('license response: {}'.format(base64.b64encode(license_data))) - break + LOG('license response: {}'.format(encode_base64(license_data))) + break self.send_response(response.status_code) self.end_headers()