This commit is contained in:
doms9 2025-12-10 14:58:27 -05:00
parent 4717102586
commit 00000d9b0f
2 changed files with 27 additions and 3 deletions

View file

@ -1,8 +1,8 @@
from urllib.parse import quote, urljoin from urllib.parse import urljoin
import httpx import httpx
from .utils import Cache, Time, get_logger, leagues from .utils import Cache, Time, get_logger, leagues, network
log = get_logger(__name__) log = get_logger(__name__)
@ -62,7 +62,11 @@ async def get_events(client: httpx.AsyncClient) -> dict[str, dict[str, str | flo
tvg_id, pic = leagues.get_tvg_info(sport, name) tvg_id, pic = leagues.get_tvg_info(sport, name)
events[key] = { events[key] = {
"url": f"https://stream.nvrmind.xyz/strmfr/{stream_key}720p/index.m3u8?stream_name={quote(name)}", "url": network.build_proxy_url(
tag=TAG,
path=f"{stream_key}720p/index.m3u8",
query={"stream_name": name},
),
"logo": logo or pic, "logo": logo or pic,
"base": BASE_URL, "base": BASE_URL,
"timestamp": now, "timestamp": now,

View file

@ -5,6 +5,7 @@ import re
from collections.abc import Awaitable, Callable from collections.abc import Awaitable, Callable
from functools import partial from functools import partial
from typing import TypeVar from typing import TypeVar
from urllib.parse import urlencode, urljoin
import httpx import httpx
from playwright.async_api import Browser, BrowserContext, Playwright, Request from playwright.async_api import Browser, BrowserContext, Playwright, Request
@ -15,6 +16,8 @@ T = TypeVar("T")
class Network: class Network:
proxy_base = "https://stream.nvrmind.xyz"
UA = ( UA = (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) " "AppleWebKit/537.36 (KHTML, like Gecko) "
@ -31,6 +34,23 @@ class Network:
self._logger = get_logger("network") self._logger = get_logger("network")
@staticmethod
def build_proxy_url(
tag: str,
path: str,
query: dict | None = None,
) -> str:
base = network.proxy_base
tag = tag.lower()
return (
f"{urljoin(base, f'{tag}/{path}')}?{urlencode(query)}"
if query
else urljoin(base, f"{tag}/{path}")
)
async def check_status(self, url: str) -> bool: async def check_status(self, url: str) -> bool:
try: try:
r = await self.client.get(url) r = await self.client.get(url)