Compare commits

..

No commits in common. "8d4d6c5751d734b77e17334406163c52a66fe190" and "1a050be1bd6e71ee8da0dbc46802a3bd38d69848" have entirely different histories.

8 changed files with 89934 additions and 90090 deletions

176153
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

@ -21,7 +21,7 @@ BASE_URL = "https://roxiestreams.live"
SPORT_ENDPOINTS = {
"fighting": "Fighting",
# "mlb": "MLB",
"mlb": "MLB",
"motorsports": "Racing",
"nba": "NBA",
"nfl": "American Football",

View file

@ -24,12 +24,12 @@ CATEGORIES = {
"American Football": "sport_68c02a4465113",
# "Baseball": "sport_68c02a446582f",
"Basketball": "sport_68c02a4466011",
"Cricket": "sport_68c02a44669f3",
# "Cricket": "sport_68c02a44669f3",
"Hockey": "sport_68c02a4466f56",
"MMA": "sport_68c02a44674e9",
"Racing": "sport_68c02a4467a48",
# "Rugby": "sport_68c02a4467fc1",
"Tennis": "sport_68c02a4468cf7",
# "Tennis": "sport_68c02a4468cf7",
# "Volleyball": "sport_68c02a4469422",
}
@ -135,11 +135,9 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
async def scrape() -> None:
cached_urls = CACHE_FILE.load()
valid_urls = {k: v for k, v in cached_urls.items() if v["url"]}
cached_count = len(cached_urls)
valid_count = cached_count = len(valid_urls)
urls.update(valid_urls)
urls.update(cached_urls)
log.info(f"Loaded {cached_count} event(s) from cache")
@ -171,6 +169,7 @@ async def scrape() -> None:
log=log,
)
if url:
sport, event, logo, link, ts = (
ev["sport"],
ev["event"],
@ -192,17 +191,12 @@ async def scrape() -> None:
"link": link,
}
cached_urls[key] = entry
if url:
valid_count += 1
urls[key] = entry
urls[key] = cached_urls[key] = entry
finally:
await browser.close()
if new_count := valid_count - cached_count:
if new_count := len(cached_urls) - cached_count:
log.info(f"Collected and cached {new_count} new event(s)")
else:

View file

@ -549,7 +549,7 @@
{
"LIGUE 1": {
"logo": "https://ligue1.com/images/Logo_Ligue_1.webp",
"names": ["FRANCE LIGUE 1", "FRENCH LIGUE 1", "LIGUE 1 FRANCE"]
"names": ["FRANCE LIGUE 1", "FRENCH LIGUE 1"]
}
},
{
@ -591,11 +591,7 @@
{
"PRIMEIRA LIGA": {
"logo": "https://a.espncdn.com/combiner/i?img=/i/leaguelogos/soccer/500/14.png",
"names": [
"LIGA PORTUGAL",
"PORTUGAL PRIMEIRA LIGA",
"PORTUGUESE PRIMEIRA LIGA"
]
"names": ["LIGA PORTUGAL", "PORTUGUESE PRIMEIRA LIGA"]
}
},
{

View file

@ -32,16 +32,16 @@ VALID_SPORTS = [
# "australian-football",
# "baseball",
"basketball",
"cricket",
"darts",
# "cricket",
# "darts",
"fighting",
"football",
"golf",
"hockey",
"racing",
# "rugby",
"tennis",
"volleyball",
# "tennis",
# "volleyball",
]

View file

@ -1,10 +1,15 @@
## Base Log @ 2026-01-02 17:36 UTC
## Base Log @ 2026-01-01 20:43 UTC
### ✅ Working Streams: 145<br>❌ Dead Streams: 1
### ✅ Working Streams: 140<br>❌ Dead Streams: 6
| Channel | Error (Code) | Link |
| ------- | ------------ | ---- |
| BET | HTTP Error (404) | `http://fl1.moveonjoy.com/BET_EAST/index.m3u8` |
| Bounce TV | HTTP Error (404) | `http://fl1.moveonjoy.com/BOUNCE_TV/index.m3u8` |
| FX Movie Channel | HTTP Error (404) | `http://fl1.moveonjoy.com/FX_MOVIE/index.m3u8` |
| HBO Family | HTTP Error (404) | `https://fl1.moveonjoy.com/HBO_FAMILY/index.m3u8` |
| HBO | HTTP Error (404) | `http://fl1.moveonjoy.com/HBO/index.m3u8` |
| Hallmark Channel | HTTP Error (404) | `http://fl1.moveonjoy.com/HALLMARK_CHANNEL/index.m3u8` |
| Root Sports | HTTP Error (403) | `http://cord-cutter.net:8080/k4Svp2/645504/85232` |
---
#### Base Channels URL
```