Compare commits

..

No commits in common. "f41268a1b4a1ce3f67d4a86b72cd7e24fc5cac52" and "47171025860673ee9a49cd6d4749821ce63ce512" have entirely different histories.

7 changed files with 92788 additions and 91006 deletions

177687
EPG/TV.xml

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
from urllib.parse import urljoin from urllib.parse import quote, urljoin
import httpx import httpx
from .utils import Cache, Time, get_logger, leagues, network from .utils import Cache, Time, get_logger, leagues
log = get_logger(__name__) log = get_logger(__name__)
@ -62,11 +62,7 @@ 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": network.build_proxy_url( "url": f"https://stream.nvrmind.xyz/strmfr/{stream_key}720p/index.m3u8?stream_name={quote(name)}",
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

@ -26,7 +26,7 @@
{ {
"MLB": { "MLB": {
"logo": "https://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png", "logo": "https://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png",
"names": ["BASEBALL", "MAJOR LEAGUE BASEBALL", "MLB PLAYOFFS"] "names": ["BASEBALL", "MAJOR LEAGUE BASEBALL"]
} }
} }
], ],
@ -37,8 +37,6 @@
"names": [ "names": [
"NATIONAL BASKETBALL ASSOCIATION", "NATIONAL BASKETBALL ASSOCIATION",
"NBA BASKETBALL", "NBA BASKETBALL",
"NBA CUP",
"NBA PLAYOFFS",
"NBA PRESEASON" "NBA PRESEASON"
] ]
} }
@ -51,11 +49,8 @@
"names": [ "names": [
"CBB", "CBB",
"CFB", "CFB",
"CFB PLAYOFFS",
"CFP",
"COLLEGE BASKETBALL", "COLLEGE BASKETBALL",
"COLLEGE FOOTBALL", "COLLEGE FOOTBALL",
"MARCH MADNESS",
"NCAA - BASKETBALL", "NCAA - BASKETBALL",
"NCAA - FOOTBALL", "NCAA - FOOTBALL",
"NCAA AMERICAN FOOTBALL", "NCAA AMERICAN FOOTBALL",
@ -80,7 +75,6 @@
"names": [ "names": [
"AMERICAN FOOTBALL", "AMERICAN FOOTBALL",
"NATIONAL FOOTBALL LEAGUE", "NATIONAL FOOTBALL LEAGUE",
"NFL PLAYOFFS",
"NFL PRESEASON", "NFL PRESEASON",
"USA NFL" "USA NFL"
] ]
@ -95,7 +89,6 @@
"HOCKEY", "HOCKEY",
"NATIONAL HOCKEY LEAGUE", "NATIONAL HOCKEY LEAGUE",
"NHL HOCKEY", "NHL HOCKEY",
"NHL PLAYOFFS",
"NHL PRESEASON" "NHL PRESEASON"
] ]
} }

View file

@ -5,7 +5,6 @@ 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
@ -16,8 +15,6 @@ 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) "
@ -34,23 +31,6 @@ 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)

View file

@ -1,13 +1,11 @@
## Base Log @ 2025-12-11 14:46 UTC ## Base Log @ 2025-12-10 14:47 UTC
### ✅ Working Streams: 142<br>❌ Dead Streams: 4 ### ✅ Working Streams: 144<br>❌ Dead Streams: 2
| Channel | Error (Code) | Link | | Channel | Error (Code) | Link |
| ------- | ------------ | ---- | | ------- | ------------ | ---- |
| BBC World News | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/139752` | | Cartoon Network | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/46708` |
| FDSN Florida | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/46794` | | FDSN Florida | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/46794` |
| Fox Sports 2 | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/1847` |
| NESN | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/31637` |
--- ---
#### Base Channels URL #### Base Channels URL
``` ```