Compare commits

...

36 commits

Author SHA1 Message Date
GitHub Actions Bot
f41268a1b4 update M3U8 2025-12-11 15:03:41 -05:00
GitHub Actions Bot
775761d09a update M3U8 2025-12-11 14:31:40 -05:00
GitHub Actions Bot
7c0b087508 update M3U8 2025-12-11 14:01:07 -05:00
GitHub Actions Bot
82e1146ae4 update EPG 2025-12-11 18:59:38 +00:00
GitHub Actions Bot
f7f4c95971 update M3U8 2025-12-11 13:31:02 -05:00
GitHub Actions Bot
9262230358 update M3U8 2025-12-11 13:05:21 -05:00
GitHub Actions Bot
b9caa0d6cb update M3U8 2025-12-11 12:01:40 -05:00
GitHub Actions Bot
84de8daf42 update M3U8 2025-12-11 11:01:48 -05:00
GitHub Actions Bot
0ac583cee7 update M3U8 2025-12-11 10:01:13 -05:00
GitHub Actions Bot
58a96baa11 health log 2025-12-11 14:46:48 +00:00
GitHub Actions Bot
962443c90c update M3U8 2025-12-11 09:01:18 -05:00
GitHub Actions Bot
18521ad725 update M3U8 2025-12-11 08:02:36 -05:00
GitHub Actions Bot
6e0b6cec5a update EPG 2025-12-11 10:55:21 +00:00
GitHub Actions Bot
7093862c94 health log 2025-12-11 08:50:37 +00:00
GitHub Actions Bot
920f236ab6 update M3U8 2025-12-10 23:30:16 -05:00
GitHub Actions Bot
991e0d2bc5 update M3U8 2025-12-10 23:00:53 -05:00
GitHub Actions Bot
068ab77a7e update EPG 2025-12-11 03:47:50 +00:00
GitHub Actions Bot
c86abdec33 health log 2025-12-11 03:44:29 +00:00
GitHub Actions Bot
5e08b21b6a update M3U8 2025-12-10 22:31:22 -05:00
GitHub Actions Bot
7048c5b851 update M3U8 2025-12-10 22:00:46 -05:00
GitHub Actions Bot
d331fa9708 update M3U8 2025-12-10 21:30:56 -05:00
GitHub Actions Bot
677c5253e6 update M3U8 2025-12-10 21:01:20 -05:00
GitHub Actions Bot
1935c2adb0 update M3U8 2025-12-10 20:31:14 -05:00
GitHub Actions Bot
885e695e00 update M3U8 2025-12-10 20:01:24 -05:00
GitHub Actions Bot
ed875a42ae update M3U8 2025-12-10 19:32:00 -05:00
GitHub Actions Bot
469af444b2 update M3U8 2025-12-10 19:02:33 -05:00
GitHub Actions Bot
c0c7188a0a update M3U8 2025-12-10 18:30:58 -05:00
GitHub Actions Bot
9210304c6f update M3U8 2025-12-10 18:01:28 -05:00
GitHub Actions Bot
3a07311dc0 update M3U8 2025-12-10 17:30:28 -05:00
GitHub Actions Bot
af3ad8c3ee update M3U8 2025-12-10 17:00:56 -05:00
GitHub Actions Bot
977b9ad556 update M3U8 2025-12-10 16:31:23 -05:00
GitHub Actions Bot
985a58804c update M3U8 2025-12-10 16:01:38 -05:00
GitHub Actions Bot
f5f95dff9e health log 2025-12-10 20:45:41 +00:00
GitHub Actions Bot
773a05b74e update M3U8 2025-12-10 15:31:14 -05:00
GitHub Actions Bot
830434bce4 update M3U8 2025-12-10 15:03:35 -05:00
doms9
00000d9b0f e 2025-12-10 14:58:27 -05:00
7 changed files with 89855 additions and 91637 deletions

175297
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 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

@ -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"] "names": ["BASEBALL", "MAJOR LEAGUE BASEBALL", "MLB PLAYOFFS"]
} }
} }
], ],
@ -37,6 +37,8 @@
"names": [ "names": [
"NATIONAL BASKETBALL ASSOCIATION", "NATIONAL BASKETBALL ASSOCIATION",
"NBA BASKETBALL", "NBA BASKETBALL",
"NBA CUP",
"NBA PLAYOFFS",
"NBA PRESEASON" "NBA PRESEASON"
] ]
} }
@ -49,8 +51,11 @@
"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",
@ -75,6 +80,7 @@
"names": [ "names": [
"AMERICAN FOOTBALL", "AMERICAN FOOTBALL",
"NATIONAL FOOTBALL LEAGUE", "NATIONAL FOOTBALL LEAGUE",
"NFL PLAYOFFS",
"NFL PRESEASON", "NFL PRESEASON",
"USA NFL" "USA NFL"
] ]
@ -89,6 +95,7 @@
"HOCKEY", "HOCKEY",
"NATIONAL HOCKEY LEAGUE", "NATIONAL HOCKEY LEAGUE",
"NHL HOCKEY", "NHL HOCKEY",
"NHL PLAYOFFS",
"NHL PRESEASON" "NHL PRESEASON"
] ]
} }

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)

View file

@ -1,11 +1,13 @@
## Base Log @ 2025-12-10 14:47 UTC ## Base Log @ 2025-12-11 14:46 UTC
### ✅ Working Streams: 144<br>❌ Dead Streams: 2 ### ✅ Working Streams: 142<br>❌ Dead Streams: 4
| Channel | Error (Code) | Link | | Channel | Error (Code) | Link |
| ------- | ------------ | ---- | | ------- | ------------ | ---- |
| Cartoon Network | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/46708` | | BBC World News | HTTP Error (403) | `http://cord-cutter.net:8080/30550113/30550113/139752` |
| 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
``` ```