fail play fix2

This commit is contained in:
2026-04-06 14:47:12 +09:00
parent 1aa7cd777d
commit 95059b1963
2 changed files with 66 additions and 19 deletions
+30 -1
View File
@@ -46,6 +46,20 @@ class ModuleBasic(PluginModuleBase):
+ urllib.parse.urlsplit(referer or P.ModelSetting.get("linkkf_url")).netloc,
}
@staticmethod
def _is_optional_proxy_target(target):
lower = str(target or "").lower()
optional_exts = [
".vtt",
".srt",
".jpg",
".jpeg",
".png",
".webp",
".gif",
]
return any(lower.endswith(ext) for ext in optional_exts)
@staticmethod
def _rewrite_m3u8(content, target_url, referer):
def replace_uri_attr(line):
@@ -262,10 +276,25 @@ class ModuleBasic(PluginModuleBase):
headers = self._get_proxy_headers(referer)
if req.headers.get("Range") is not None:
headers["Range"] = req.headers.get("Range")
upstream = requests.get(target, headers=headers, stream=True, timeout=30)
upstream = None
last_exception = None
for attempt in range(3):
try:
upstream = requests.get(target, headers=headers, stream=True, timeout=30)
break
except requests.exceptions.RequestException as e:
last_exception = e
if attempt < 2:
continue
if upstream is None:
if self._is_optional_proxy_target(target):
return Response(status=204)
raise last_exception
content_type = upstream.headers.get("content-type", "")
if upstream.status_code >= 400:
if self._is_optional_proxy_target(target):
return Response(status=204)
return Response(
upstream.content,
status=upstream.status_code,