Compare commits

..

No commits in common. "dec16dd888f814eb9a9fd26f72f695080878639d" and "eadd60d12695ce6e3a678bb84278fb9ba6c9848e" have entirely different histories.

7 changed files with 127857 additions and 130822 deletions

File diff suppressed because it is too large Load diff

254311
M3U8/TV.xml

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -141,10 +141,12 @@ async def main() -> None:
f'tvg-name="{event}" tvg-logo="{info["logo"]}" group-title="Live Events",{event}' f'tvg-name="{event}" tvg-logo="{info["logo"]}" group-title="Live Events",{event}'
) )
UA = info.get("UA", network.UA)
vlc_block = [ vlc_block = [
f'#EXTVLCOPT:http-referrer={info["base"]}', f'#EXTVLCOPT:http-referrer={info["base"]}',
f'#EXTVLCOPT:http-origin={info["base"]}', f'#EXTVLCOPT:http-origin={info["base"]}',
f"#EXTVLCOPT:http-user-agent={info.get('UA', network.UA)}", f"#EXTVLCOPT:http-user-agent={UA}",
info["url"], info["url"],
] ]

View file

@ -105,13 +105,6 @@ async def process_event(
return return
try: try:
if btn := page.locator("button.streambutton").first:
await btn.click(
force=True,
click_count=2,
timeout=3_000,
)
await page.wait_for_function( await page.wait_for_function(
"() => typeof clapprPlayer !== 'undefined'", "() => typeof clapprPlayer !== 'undefined'",
timeout=6_000, timeout=6_000,

View file

@ -18,15 +18,15 @@ API_CACHE = Cache(f"{TAG}-api", exp=28_800)
API_URL = "https://s2watch.me/api/v1/schedule/list" API_URL = "https://s2watch.me/api/v1/schedule/list"
BASE_URL = "https://gopst.link" EVENT_BASE = "https://gopst.link"
async def process_event(event_id: int, url_num: int) -> tuple[str | None, str | None]: async def process_event(event_id: int, url_num: int) -> tuple[str | None, str | None]:
nones = None, None nones = None, None
if not ( if not (
base_api_src := await network.request( event_api_src := await network.request(
urljoin(BASE_URL, "api/player.php"), urljoin(EVENT_BASE, "api/player.php"),
params={"id": event_id}, params={"id": event_id},
log=log, log=log,
) )
@ -34,7 +34,7 @@ async def process_event(event_id: int, url_num: int) -> tuple[str | None, str |
log.warning(f"URL {url_num}) Failed to get iframe url.") log.warning(f"URL {url_num}) Failed to get iframe url.")
return nones return nones
if not (embed_url := base_api_src.json().get("url")): if not (embed_url := event_api_src.json().get("url")):
log.warning(f"URL {url_num}) No iframe url available.") log.warning(f"URL {url_num}) No iframe url available.")
return nones return nones
@ -44,11 +44,11 @@ async def process_event(event_id: int, url_num: int) -> tuple[str | None, str |
log=log, log=log,
headers={ headers={
"User-Agent": "curl/8.19.0", "User-Agent": "curl/8.19.0",
"Referer": f"{base_api_src.url}", "Referer": f"{event_api_src.url}",
}, },
) )
): ):
log.warning(f"URL {url_num}) Failed to load iframe url.") log.warning(f"URL {url_num}) Failed to get load iframe url.")
return nones return nones
pattern = re.compile(r'var\s+src\s+=\s+"([^"]*)"', re.I) pattern = re.compile(r'var\s+src\s+=\s+"([^"]*)"', re.I)
@ -162,7 +162,7 @@ async def scrape() -> None:
"base": iframe, "base": iframe,
"timestamp": ts, "timestamp": ts,
"id": tvg_id or "Live.Event.us", "id": tvg_id or "Live.Event.us",
"link": urljoin(BASE_URL, f"ch?id={event_id}"), "link": urljoin(EVENT_BASE, f"ch?id={event_id}"),
"UA": "curl/8.19.0", "UA": "curl/8.19.0",
} }

View file

@ -1,13 +1,14 @@
## Base Log @ 2026-03-22 08:57 UTC ## Base Log @ 2026-03-21 08:55 UTC
### ✅ Working Streams: 158<br>❌ Dead Streams: 4 ### ✅ Working Streams: 157<br>❌ Dead Streams: 5
| Channel | Error (Code) | Link | | Channel | Error (Code) | Link |
| ------- | ------------ | ---- | | ------- | ------------ | ---- |
| FDSN Midwest | HTTP Error (000) | `http://mytvstream.net:8080/live/30550113/30550113/66795.m3u8` | | Altitude Sports | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/79545.m3u8` |
| Hallmark Family | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/9307.m3u8` | | Hallmark Family | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/9307.m3u8` |
| NBC Sports California | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/20940.m3u8` | | NBC Sports California | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/20940.m3u8` |
| NHL Network | HTTP Error (000) | `http://mytvstream.net:8080/live/30550113/30550113/20179.m3u8` | | NHL Network | HTTP Error (000) | `http://mytvstream.net:8080/live/30550113/30550113/20179.m3u8` |
| Pop TV | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/20976.m3u8` |
--- ---
#### Base Channels URL #### Base Channels URL
``` ```