mirror of
https://github.com/doms9/iptv.git
synced 2026-01-20 03:49:03 +01:00
Compare commits
35 commits
1a050be1bd
...
8d4d6c5751
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d4d6c5751 | ||
|
|
b077b7db65 | ||
|
|
a4d3d20528 | ||
|
|
0429cb0805 | ||
|
|
3ff690d637 | ||
|
|
47bcdd1e40 | ||
|
|
00000d9cd4 | ||
|
|
501a8d2847 | ||
|
|
146b248d6f | ||
|
|
100ba1de00 | ||
|
|
ebf4e87d1c | ||
|
|
bca4b1e697 | ||
|
|
bfa2278017 | ||
|
|
99ed70b40d | ||
|
|
91113f8bcc | ||
|
|
8d60656c5e | ||
|
|
edac57a177 | ||
|
|
2d9cf9c04f | ||
|
|
6e7d6bd886 | ||
|
|
6904e0fa95 | ||
|
|
222e517ef4 | ||
|
|
e24a475845 | ||
|
|
5d632c26b1 | ||
|
|
0f7eddd923 | ||
|
|
9587ca3f2c | ||
|
|
f32df7e27a | ||
|
|
3998a71038 | ||
|
|
e91b812205 | ||
|
|
8b54ee247a | ||
|
|
85bf4d653c | ||
|
|
cee3c7aa76 | ||
|
|
0d2f78d556 | ||
|
|
9a5de3d581 | ||
|
|
1360f0d3cc | ||
|
|
2027e28087 |
8 changed files with 89484 additions and 89328 deletions
174793
EPG/TV.xml
174793
EPG/TV.xml
File diff suppressed because one or more lines are too long
1966
M3U8/TV.m3u8
1966
M3U8/TV.m3u8
File diff suppressed because it is too large
Load diff
1966
M3U8/events.m3u8
1966
M3U8/events.m3u8
File diff suppressed because it is too large
Load diff
|
|
@ -21,7 +21,7 @@ BASE_URL = "https://roxiestreams.live"
|
|||
|
||||
SPORT_ENDPOINTS = {
|
||||
"fighting": "Fighting",
|
||||
"mlb": "MLB",
|
||||
# "mlb": "MLB",
|
||||
"motorsports": "Racing",
|
||||
"nba": "NBA",
|
||||
"nfl": "American Football",
|
||||
|
|
|
|||
|
|
@ -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,9 +135,11 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
|
|||
async def scrape() -> None:
|
||||
cached_urls = CACHE_FILE.load()
|
||||
|
||||
cached_count = len(cached_urls)
|
||||
valid_urls = {k: v for k, v in cached_urls.items() if v["url"]}
|
||||
|
||||
urls.update(cached_urls)
|
||||
valid_count = cached_count = len(valid_urls)
|
||||
|
||||
urls.update(valid_urls)
|
||||
|
||||
log.info(f"Loaded {cached_count} event(s) from cache")
|
||||
|
||||
|
|
@ -169,34 +171,38 @@ async def scrape() -> None:
|
|||
log=log,
|
||||
)
|
||||
|
||||
sport, event, logo, link, ts = (
|
||||
ev["sport"],
|
||||
ev["event"],
|
||||
ev["logo"],
|
||||
ev["link"],
|
||||
ev["event_ts"],
|
||||
)
|
||||
|
||||
key = f"[{sport}] {event} ({TAG})"
|
||||
|
||||
tvg_id, pic = leagues.get_tvg_info(sport, event)
|
||||
|
||||
entry = {
|
||||
"url": url,
|
||||
"logo": logo or pic,
|
||||
"base": "https://storytrench.net/",
|
||||
"timestamp": ts,
|
||||
"id": tvg_id or "Live.Event.us",
|
||||
"link": link,
|
||||
}
|
||||
|
||||
cached_urls[key] = entry
|
||||
|
||||
if url:
|
||||
sport, event, logo, link, ts = (
|
||||
ev["sport"],
|
||||
ev["event"],
|
||||
ev["logo"],
|
||||
ev["link"],
|
||||
ev["event_ts"],
|
||||
)
|
||||
valid_count += 1
|
||||
|
||||
key = f"[{sport}] {event} ({TAG})"
|
||||
|
||||
tvg_id, pic = leagues.get_tvg_info(sport, event)
|
||||
|
||||
entry = {
|
||||
"url": url,
|
||||
"logo": logo or pic,
|
||||
"base": "https://storytrench.net/",
|
||||
"timestamp": ts,
|
||||
"id": tvg_id or "Live.Event.us",
|
||||
"link": link,
|
||||
}
|
||||
|
||||
urls[key] = cached_urls[key] = entry
|
||||
urls[key] = entry
|
||||
|
||||
finally:
|
||||
await browser.close()
|
||||
|
||||
if new_count := len(cached_urls) - cached_count:
|
||||
if new_count := valid_count - cached_count:
|
||||
log.info(f"Collected and cached {new_count} new event(s)")
|
||||
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -549,7 +549,7 @@
|
|||
{
|
||||
"LIGUE 1": {
|
||||
"logo": "https://ligue1.com/images/Logo_Ligue_1.webp",
|
||||
"names": ["FRANCE LIGUE 1", "FRENCH LIGUE 1"]
|
||||
"names": ["FRANCE LIGUE 1", "FRENCH LIGUE 1", "LIGUE 1 FRANCE"]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -591,7 +591,11 @@
|
|||
{
|
||||
"PRIMEIRA LIGA": {
|
||||
"logo": "https://a.espncdn.com/combiner/i?img=/i/leaguelogos/soccer/500/14.png",
|
||||
"names": ["LIGA PORTUGAL", "PORTUGUESE PRIMEIRA LIGA"]
|
||||
"names": [
|
||||
"LIGA PORTUGAL",
|
||||
"PORTUGAL PRIMEIRA LIGA",
|
||||
"PORTUGUESE PRIMEIRA LIGA"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,16 +32,16 @@ VALID_SPORTS = [
|
|||
# "australian-football",
|
||||
# "baseball",
|
||||
"basketball",
|
||||
# "cricket",
|
||||
# "darts",
|
||||
"cricket",
|
||||
"darts",
|
||||
"fighting",
|
||||
"football",
|
||||
"golf",
|
||||
"hockey",
|
||||
"racing",
|
||||
# "rugby",
|
||||
# "tennis",
|
||||
# "volleyball",
|
||||
"tennis",
|
||||
"volleyball",
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
11
readme.md
11
readme.md
|
|
@ -1,15 +1,10 @@
|
|||
## Base Log @ 2026-01-01 20:43 UTC
|
||||
## Base Log @ 2026-01-02 17:36 UTC
|
||||
|
||||
### ✅ Working Streams: 140<br>❌ Dead Streams: 6
|
||||
### ✅ Working Streams: 145<br>❌ Dead Streams: 1
|
||||
|
||||
| Channel | Error (Code) | Link |
|
||||
| ------- | ------------ | ---- |
|
||||
| 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` |
|
||||
| BET | HTTP Error (404) | `http://fl1.moveonjoy.com/BET_EAST/index.m3u8` |
|
||||
---
|
||||
#### Base Channels URL
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue