Version 0.11.9

This commit is contained in:
Paco8 committed 2026-10-08 23:50:34 +02:00
1 parent 0739cca0a9
commit 6511fa80b0
2 files changed
+21 -3

No files matched your search

+20 -2
View File
@@ -38,6 +38,7 @@ import json
import requests
import threading
import socket
import time
from contextlib import closing
from .b64 import encode_base64
@@ -55,6 +56,10 @@ previous_tokens = []
reregister_needed = False
# (connect_timeout, read_timeout) in seconds for requests to upstream (CDN) servers.
MANIFEST_TIMEOUT = (2, 3)
def is_ascii(s):
try:
return s.isascii()
@@ -94,7 +99,10 @@ class RequestHandler(BaseHTTPRequestHandler):
if 'x-tcdn-token' in self.headers:
additional_headers['x-tcdn-token'] = self.headers['x-tcdn-token']
#LOG('additional_headers: {}'.format(additional_headers))
response = session.get(url, allow_redirects=True, headers=additional_headers)
t0 = time.time()
response = session.get(url, allow_redirects=True, headers=additional_headers, timeout=MANIFEST_TIMEOUT)
t1 = time.time()
LOG('manifest fetch took {:.2f}s'.format(t1 - t0))
LOG('headers: {}'.format(response.headers))
baseurl = os.path.dirname(response.url)
LOG('baseurl: {}'.format(baseurl))
@@ -129,6 +137,8 @@ class RequestHandler(BaseHTTPRequestHandler):
#LOG('content: {}'.format(content))
manifest_data = content
t2 = time.time()
LOG('manifest processing took {:.2f}s'.format(t2 - t1))
self.send_response(200)
#self.send_header('Content-type', 'application/xml')
self.send_header('Content-type', 'text/plain')
@@ -138,7 +148,7 @@ class RequestHandler(BaseHTTPRequestHandler):
pos = path.find('=')
url = path[pos+1:]
LOG('subtitle url: {}'.format(url))
response = session.get(url, allow_redirects=True)
response = session.get(url, allow_redirects=True, timeout=MANIFEST_TIMEOUT)
content = response.content
ttml.parse_ttml_from_string(content)
sub_data = ttml.generate_vtt()
@@ -156,6 +166,10 @@ class RequestHandler(BaseHTTPRequestHandler):
else:
self.send_response(404)
self.end_headers()
except (requests.exceptions.Timeout, requests.exceptions.ConnectionError) as e:
self.send_response(504)
self.end_headers()
LOG('Upstream timeout/connection error: {}'.format(str(e)))
except Exception as e:
self.send_response(500)
self.end_headers()
@@ -238,6 +252,10 @@ class RequestHandler(BaseHTTPRequestHandler):
self.send_response(response.status_code)
self.end_headers()
self.wfile.write(license_data)
except (requests.exceptions.Timeout, requests.exceptions.ConnectionError) as e:
self.send_response(504)
self.end_headers()
LOG('Upstream timeout/connection error: {}'.format(str(e)))
except Exception as e:
self.send_response(500)
self.end_headers()