Compare commits

..

No commits in common. "26c5e0ec9e2dbb0b24e9a242ddf3c5e72b8acef3" and "4fca45dd52d89987b9634126d16b02cbf3e7d379" have entirely different histories.

6 changed files with 122715 additions and 106118 deletions

File diff suppressed because it is too large Load diff

225846
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

@ -1,4 +1,5 @@
import asyncio
import re
from functools import partial
from urllib.parse import urljoin
@ -15,7 +16,7 @@ TAG = "ROXIE"
CACHE_FILE = Cache(TAG, exp=19_800)
BASE_URL = "https://roxiestreams.info"
BASE_URL = "https://roxiestreams.su"
SPORT_URLS = {
# "March Madness": urljoin(BASE_URL, "march-madness"),
@ -101,10 +102,18 @@ async def get_events() -> list[dict[str, str]]:
if not (href := a_tag.attributes.get("href")):
continue
if not (event_time_elem := row.css_first("td.event-start-time")):
if not (span := row.css_first("span.countdown-timer")) or not (
data_start := span.attributes.get("data-start")
):
continue
event_dt = Time.from_str(event_time_elem.text(strip=True), timezone="EST")
event_time = (
data_start.rsplit(":", 1)[0]
if (re.search(r"\d+:\d+:\d+", data_start) or "M:00" in data_start)
else data_start
)
event_dt = Time.from_str(event_time, timezone="PST")
if event_dt.date() != now.date():
continue

View file

@ -2,11 +2,11 @@ import asyncio
import logging
import random
import re
from collections.abc import AsyncGenerator, Awaitable, Callable
from collections.abc import Awaitable, Callable
from contextlib import asynccontextmanager
from functools import cache, partial
from pathlib import Path
from typing import TypeVar
from typing import AsyncGenerator, TypeVar
from urllib.parse import urlparse
import httpx
@ -158,7 +158,7 @@ class Network:
browser: Browser,
stealth: bool = True,
ignore_https: bool = False,
) -> AsyncGenerator[BrowserContext]:
) -> AsyncGenerator[BrowserContext, None]:
context: BrowserContext | None = None
@ -195,7 +195,7 @@ class Network:
@staticmethod
@asynccontextmanager
async def event_page(context: BrowserContext) -> AsyncGenerator[Page]:
async def event_page(context: BrowserContext) -> AsyncGenerator[Page, None]:
page = await context.new_page()
try:

View file

@ -1,11 +1,7 @@
## Base Log @ 2026-06-04 21:59 UTC
## Base Log @ 2026-06-03 23:06 UTC
### ✅ Working Streams: 142<br>❌ Dead Streams: 2
### ✅ Working Streams: 144<br>❌ Dead Streams: 0
| Channel | Error (Code) | Link |
| ------- | ------------ | ---- |
| BBC America | HTTP Error (403) | `https://bcovlive-a.akamaihd.net/7f5ec16d102f4b5d92e8e27bc95ff424/us-east-1/6240731308001/playlist.m3u8` |
| Lifetime | HTTP Error (403) | `http://cdn1host.online:2999/live/bongus/35zqYxrbg0/148.ts` |
---
#### Base Channels URL
```