mirror of
https://github.com/doms9/iptv.git
synced 2026-01-21 03:59:03 +01:00
Compare commits
37 commits
078263e046
...
aa49f7f572
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa49f7f572 | ||
|
|
35d1f4f3dd | ||
|
|
c72112b5bc | ||
|
|
317447a436 | ||
|
|
0a32863660 | ||
|
|
5d16c195dd | ||
|
|
0d0db35e54 | ||
|
|
e10dcdce1a | ||
|
|
54c7edaa87 | ||
|
|
abe27a0223 | ||
|
|
54e89af46b | ||
|
|
0220f27dd5 | ||
|
|
9bf3bffe1e | ||
|
|
75d85953f6 | ||
|
|
d4f3269523 | ||
|
|
05cb57d95a | ||
|
|
00000d9976 | ||
|
|
e544d6fe32 | ||
|
|
44261b3791 | ||
|
|
bdcf33fe0a | ||
|
|
2dd237299f | ||
|
|
5cd3b3d436 | ||
|
|
1afaae3f3e | ||
|
|
d29c43b51b | ||
|
|
d49a354089 | ||
|
|
c0b95c1b0c | ||
|
|
f7a7fbd038 | ||
|
|
00000d9a79 | ||
|
|
f336fff671 | ||
|
|
8ed01f4a47 | ||
|
|
a693355385 | ||
|
|
02baa7cfa1 | ||
|
|
62f1a2eea8 | ||
|
|
0bc1e5dd84 | ||
|
|
cf5e009e5b | ||
|
|
821e707811 | ||
|
|
b1e2801133 |
9 changed files with 93005 additions and 93940 deletions
182014
EPG/TV.xml
182014
EPG/TV.xml
File diff suppressed because one or more lines are too long
2446
M3U8/TV.m3u8
2446
M3U8/TV.m3u8
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@ http://fl1.moveonjoy.com/BBC_WORLD_NEWS/index.m3u8
|
||||||
https://streamer1.nexgen.bz/BET/index.m3u8
|
https://streamer1.nexgen.bz/BET/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="13" tvg-id="Big.Ten.Network.HD.us2" tvg-name="Big Ten Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s56783_dark_360w_270h.png" group-title="TV",Big Ten Network
|
#EXTINF:-1 tvg-chno="13" tvg-id="Big.Ten.Network.HD.us2" tvg-name="Big Ten Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s56783_dark_360w_270h.png" group-title="TV",Big Ten Network
|
||||||
http://fl1.moveonjoy.com/BIG_TEN_NETWORK/index.m3u8
|
http://23.237.104.106:8080/USA_BTN/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="14" tvg-id="Bloomberg.HD.us2" tvg-name="Bloomberg TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s71799_dark_360w_270h.png" group-title="TV",Bloomberg TV
|
#EXTINF:-1 tvg-chno="14" tvg-id="Bloomberg.HD.us2" tvg-name="Bloomberg TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s71799_dark_360w_270h.png" group-title="TV",Bloomberg TV
|
||||||
https://live-manifest.production-public.tubi.io/live/a5aabf5a-9615-4987-8163-18edfa1360c6/playlist.m3u8
|
https://live-manifest.production-public.tubi.io/live/a5aabf5a-9615-4987-8163-18edfa1360c6/playlist.m3u8
|
||||||
|
|
@ -199,7 +199,7 @@ http://cord-cutter.net:8080/30550113/30550113/1847
|
||||||
http://fl1.moveonjoy.com/FREE_FORM/index.m3u8
|
http://fl1.moveonjoy.com/FREE_FORM/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="67" tvg-id="Fuse.HD.us2" tvg-name="FUSE" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14929_dark_360w_270h.png" group-title="TV",FUSE
|
#EXTINF:-1 tvg-chno="67" tvg-id="Fuse.HD.us2" tvg-name="FUSE" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14929_dark_360w_270h.png" group-title="TV",FUSE
|
||||||
http://fl1.moveonjoy.com/FUSE/index.m3u8
|
http://23.237.104.106:8080/USA_FUSE/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="68" tvg-id="FX.HD.us2" tvg-name="FX" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14321_dark_360w_270h.png" group-title="TV",FX
|
#EXTINF:-1 tvg-chno="68" tvg-id="FX.HD.us2" tvg-name="FX" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14321_dark_360w_270h.png" group-title="TV",FX
|
||||||
http://fl1.moveonjoy.com/FX/index.m3u8
|
http://fl1.moveonjoy.com/FX/index.m3u8
|
||||||
|
|
@ -316,7 +316,7 @@ http://cord-cutter.net:8080/30550113/30550113/31637
|
||||||
http://fl1.moveonjoy.com/NEWS_NATION/index.m3u8
|
http://fl1.moveonjoy.com/NEWS_NATION/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="106" tvg-id="NFL.Network.HD.us2" tvg-name="NFL Network" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/nfl-network-hz-us.png" group-title="TV",NFL Network
|
#EXTINF:-1 tvg-chno="106" tvg-id="NFL.Network.HD.us2" tvg-name="NFL Network" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/nfl-network-hz-us.png" group-title="TV",NFL Network
|
||||||
http://fl1.moveonjoy.com/NFL_NETWORK/index.m3u8
|
http://23.237.104.106:8080/USA_NFL_NETWORK/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="107" tvg-id="NFL.RedZone.HD.us2" tvg-name="NFL RedZone" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/nfl-red-zone-hz-us.png" group-title="TV",NFL RedZone
|
#EXTINF:-1 tvg-chno="107" tvg-id="NFL.RedZone.HD.us2" tvg-name="NFL RedZone" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/nfl-red-zone-hz-us.png" group-title="TV",NFL RedZone
|
||||||
http://cord-cutter.net:8080/30550113/30550113/208830
|
http://cord-cutter.net:8080/30550113/30550113/208830
|
||||||
|
|
@ -352,7 +352,7 @@ http://109.61.81.147:1935/cdn7/1276/video.m3u8?token=c708d1e1b86b0247d95ecf4645d
|
||||||
http://109.61.81.147:1935/cdn7/1275/mpegts?token=0abb07758b53c286d3b6b7943b7c5405
|
http://109.61.81.147:1935/cdn7/1275/mpegts?token=0abb07758b53c286d3b6b7943b7c5405
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="118" tvg-id="ReelzChannel.HD.us2" tvg-name="Reelz Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s68385_dark_360w_270h.png" group-title="TV",Reelz Channel
|
#EXTINF:-1 tvg-chno="118" tvg-id="ReelzChannel.HD.us2" tvg-name="Reelz Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s68385_dark_360w_270h.png" group-title="TV",Reelz Channel
|
||||||
http://fl1.moveonjoy.com/REELZ/index.m3u8
|
http://23.237.104.106:8080/USA_REELZ/index.m3u8
|
||||||
|
|
||||||
#EXTINF:-1 tvg-chno="119" tvg-id="ROOT.Sports.Northwest.HD.us2" tvg-name="Root Sports" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11062_dark_360w_270h.png" group-title="TV",Root Sports
|
#EXTINF:-1 tvg-chno="119" tvg-id="ROOT.Sports.Northwest.HD.us2" tvg-name="Root Sports" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11062_dark_360w_270h.png" group-title="TV",Root Sports
|
||||||
http://cord-cutter.net:8080/30550113/30550113/85232
|
http://cord-cutter.net:8080/30550113/30550113/85232
|
||||||
|
|
|
||||||
2438
M3U8/events.m3u8
2438
M3U8/events.m3u8
File diff suppressed because it is too large
Load diff
|
|
@ -37,9 +37,8 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
|
||||||
API_CACHE.write(api_data)
|
API_CACHE.write(api_data)
|
||||||
|
|
||||||
events = []
|
events = []
|
||||||
|
|
||||||
start_dt = now.delta(minutes=-30)
|
start_dt = now.delta(minutes=-30)
|
||||||
end_dt = now.delta(minutes=30)
|
end_dt = now.delta(hours=3)
|
||||||
|
|
||||||
for info in api_data.get("days", []):
|
for info in api_data.get("days", []):
|
||||||
for event in info["items"]:
|
for event in info["items"]:
|
||||||
|
|
|
||||||
|
|
@ -52,8 +52,8 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
|
||||||
|
|
||||||
events = []
|
events = []
|
||||||
|
|
||||||
start_dt = now.delta(minutes=-30)
|
start_dt = now.delta(hours=-1)
|
||||||
end_dt = now.delta(minutes=10)
|
end_dt = now.delta(minutes=5)
|
||||||
|
|
||||||
for stream_group in api_data:
|
for stream_group in api_data:
|
||||||
category_id: int = stream_group.get("categoryId")
|
category_id: int = stream_group.get("categoryId")
|
||||||
|
|
|
||||||
|
|
@ -44,13 +44,7 @@ async def get_events() -> dict[str, dict[str, str | float]]:
|
||||||
|
|
||||||
key = f"[{sport}] {name} ({TAG})"
|
key = f"[{sport}] {name} ({TAG})"
|
||||||
|
|
||||||
logo = (
|
tvg_id, logo = leagues.get_tvg_info(sport, name)
|
||||||
urljoin(BASE_URL, thumbnail)
|
|
||||||
if (thumbnail := stream.get("thumbnail_url"))
|
|
||||||
else None
|
|
||||||
)
|
|
||||||
|
|
||||||
tvg_id, pic = leagues.get_tvg_info(sport, name)
|
|
||||||
|
|
||||||
events[key] = {
|
events[key] = {
|
||||||
"url": network.build_proxy_url(
|
"url": network.build_proxy_url(
|
||||||
|
|
@ -58,7 +52,7 @@ async def get_events() -> dict[str, dict[str, str | float]]:
|
||||||
path=f"{stream_key}/index.m3u8",
|
path=f"{stream_key}/index.m3u8",
|
||||||
query={"stream_name": name},
|
query={"stream_name": name},
|
||||||
),
|
),
|
||||||
"logo": logo or pic,
|
"logo": logo,
|
||||||
"base": BASE_URL,
|
"base": BASE_URL,
|
||||||
"timestamp": now.timestamp(),
|
"timestamp": now.timestamp(),
|
||||||
"id": tvg_id or "Live.Event.us",
|
"id": tvg_id or "Live.Event.us",
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ TAG = "TOTALSPRTK"
|
||||||
|
|
||||||
CACHE_FILE = Cache(f"{TAG.lower()}.json", exp=28_800)
|
CACHE_FILE = Cache(f"{TAG.lower()}.json", exp=28_800)
|
||||||
|
|
||||||
BASE_URL = "https://live.totalsportek777.com/"
|
BASE_URL = "https://live2.totalsportek777.com/"
|
||||||
|
|
||||||
|
|
||||||
def fix_league(s: str) -> str:
|
def fix_league(s: str) -> str:
|
||||||
|
|
@ -29,15 +29,12 @@ async def process_event(url: str, url_num: int) -> tuple[str | None, str | None]
|
||||||
|
|
||||||
soup = HTMLParser(html_data.content)
|
soup = HTMLParser(html_data.content)
|
||||||
|
|
||||||
if not (iframe := soup.css_first("iframe")):
|
if not (iframe := soup.css_first(".box iframe")):
|
||||||
log.warning(f"URL {url_num}) No iframe element found.")
|
log.warning(f"URL {url_num}) No iframe element found.")
|
||||||
|
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
if (
|
if not (iframe_src := iframe.attributes.get("src")):
|
||||||
not (iframe_src := iframe.attributes.get("src"))
|
|
||||||
or "xsportportal" not in iframe_src
|
|
||||||
):
|
|
||||||
log.warning(f"URL {url_num}) No valid iframe source found.")
|
log.warning(f"URL {url_num}) No valid iframe source found.")
|
||||||
|
|
||||||
return None, None
|
return None, None
|
||||||
|
|
@ -56,7 +53,7 @@ async def process_event(url: str, url_num: int) -> tuple[str | None, str | None]
|
||||||
|
|
||||||
log.info(f"URL {url_num}) Captured M3U8")
|
log.info(f"URL {url_num}) Captured M3U8")
|
||||||
|
|
||||||
return bytes.fromhex(match[2]).decode("utf-8"), iframe_src
|
return match[2], iframe_src
|
||||||
|
|
||||||
|
|
||||||
async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
|
async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
|
||||||
|
|
|
||||||
11
readme.md
11
readme.md
|
|
@ -1,12 +1,15 @@
|
||||||
## Base Log @ 2026-01-08 20:44 UTC
|
## Base Log @ 2026-01-09 20:44 UTC
|
||||||
|
|
||||||
### ✅ Working Streams: 145<br>❌ Dead Streams: 3
|
### ✅ Working Streams: 142<br>❌ Dead Streams: 6
|
||||||
|
|
||||||
| Channel | Error (Code) | Link |
|
| Channel | Error (Code) | Link |
|
||||||
| ------- | ------------ | ---- |
|
| ------- | ------------ | ---- |
|
||||||
| BET | HTTP Error (403) | `https://streamer1.nexgen.bz/BET/index.m3u8` |
|
| C-SPAN | HTTP Error (404) | `http://fl1.moveonjoy.com/C-SPAN/index.m3u8` |
|
||||||
| CBS | HTTP Error (404) | `http://fl1.moveonjoy.com/CBSEAST/index.m3u8` |
|
| CBS | HTTP Error (404) | `http://fl1.moveonjoy.com/CBSEAST/index.m3u8` |
|
||||||
| NFL Network | HTTP Error (404) | `http://fl1.moveonjoy.com/NFL_NETWORK/index.m3u8` |
|
| Freeform TV | HTTP Error (404) | `http://fl1.moveonjoy.com/FREE_FORM/index.m3u8` |
|
||||||
|
| ION TV | HTTP Error (404) | `http://fl1.moveonjoy.com/ION_TV/index.m3u8` |
|
||||||
|
| Investigation Discovery | HTTP Error (404) | `https://fl1.moveonjoy.com/INVESTIGATION_DISCOVERY/index.m3u8` |
|
||||||
|
| Premier Sports 2 | HTTP Error (403) | `http://109.61.81.147:1935/cdn7/1275/mpegts?token=0abb07758b53c286d3b6b7943b7c5405` |
|
||||||
---
|
---
|
||||||
#### Base Channels URL
|
#### Base Channels URL
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue