Compare commits

...

35 commits

Author SHA1 Message Date
GitHub Actions Bot
448fbe17fa update M3U8 2026-05-15 17:00:50 -04:00
GitHub Actions Bot
7bf47ac1c2 update M3U8 2026-05-15 16:30:26 -04:00
GitHub Actions Bot
721167935d update EPG 2026-05-15 20:07:13 +00:00
GitHub Actions Bot
552cfc6be3 update M3U8 2026-05-15 16:01:02 -04:00
GitHub Actions Bot
89e186ea42 update M3U8 2026-05-15 15:30:29 -04:00
GitHub Actions Bot
1729e6b1c4 update M3U8 2026-05-15 15:00:54 -04:00
GitHub Actions Bot
0d9dab032d update M3U8 2026-05-15 14:31:24 -04:00
GitHub Actions Bot
4eff9d91d5 update M3U8 2026-05-15 14:00:15 -04:00
GitHub Actions Bot
5a46e5dd2d update M3U8 2026-05-15 13:31:50 -04:00
GitHub Actions Bot
bd2e50c872 update M3U8 2026-05-15 13:00:47 -04:00
GitHub Actions Bot
e6ca5213cd health log 2026-05-15 16:20:03 +00:00
GitHub Actions Bot
cf23dc40ee update M3U8 2026-05-15 12:01:14 -04:00
GitHub Actions Bot
bfd2359408 update M3U8 2026-05-15 11:00:38 -04:00
GitHub Actions Bot
86e9bdc750 update M3U8 2026-05-15 10:01:02 -04:00
GitHub Actions Bot
0a5afb2b23 update M3U8 2026-05-15 09:00:29 -04:00
GitHub Actions Bot
500591920b update EPG 2026-05-15 12:23:45 +00:00
GitHub Actions Bot
acfc7f7380 update M3U8 2026-05-15 08:00:48 -04:00
GitHub Actions Bot
f81534911e health log 2026-05-15 10:44:38 +00:00
GitHub Actions Bot
6bdf367122 update EPG 2026-05-15 06:19:53 +00:00
GitHub Actions Bot
4e6921ec80 health log 2026-05-15 06:09:12 +00:00
doms9
00000d9b7c e
- remove dami.py
- misc edits.
2026-05-15 01:20:20 -04:00
GitHub Actions Bot
469dd02839 update M3U8 2026-05-14 23:30:52 -04:00
GitHub Actions Bot
3ea4aa2070 update M3U8 2026-05-14 23:00:27 -04:00
GitHub Actions Bot
60864df184 update M3U8 2026-05-14 22:31:05 -04:00
GitHub Actions Bot
52193a2836 update M3U8 2026-05-14 22:00:38 -04:00
GitHub Actions Bot
f737d16a1e update M3U8 2026-05-14 21:31:13 -04:00
GitHub Actions Bot
ad7f2cee65 update M3U8 2026-05-14 21:00:41 -04:00
GitHub Actions Bot
484b05fde0 update M3U8 2026-05-14 20:31:07 -04:00
GitHub Actions Bot
8e1b87f8e8 update M3U8 2026-05-14 20:00:37 -04:00
GitHub Actions Bot
e3b8425392 update M3U8 2026-05-14 19:31:15 -04:00
GitHub Actions Bot
0a046d45e0 update M3U8 2026-05-14 19:01:21 -04:00
GitHub Actions Bot
d8bc03d991 update M3U8 2026-05-14 18:30:49 -04:00
GitHub Actions Bot
d51b5ed4b9 update M3U8 2026-05-14 18:00:54 -04:00
GitHub Actions Bot
d2c13b0575 health log 2026-05-14 21:43:33 +00:00
GitHub Actions Bot
262f24f6e1 update M3U8 2026-05-14 17:30:34 -04:00
8 changed files with 116221 additions and 120270 deletions

File diff suppressed because it is too large Load diff

232764
M3U8/TV.xml

File diff suppressed because one or more lines are too long

View file

@ -4,7 +4,7 @@
http://23.239.31.26:8989/aande/index.m3u8
#EXTINF:-1 tvg-chno="2" tvg-id="WABC-DT.us_locals1" tvg-name="ABC" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10003_dark_360w_270h.png" group-title="TV",ABC
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/3606.ts
http://stream.cammonitorplus.net/1809/index.m3u8
#EXTINF:-1 tvg-chno="3" tvg-id="ACC.Network.us2" tvg-name="ACC Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s111871_dark_360w_270h.png" group-title="TV",ACC Network
http://23.237.104.106:8080/USA_ACCN/mpegts
@ -64,7 +64,7 @@ http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/
http://23.237.104.106:8080/USA_CARTOON_NETWORK/index.m3u8
#EXTINF:-1 tvg-chno="22" tvg-id="WCBS-DT.us_locals1" tvg-name="CBS" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10098_dark_360w_270h.png" group-title="TV",CBS
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/89712.ts
http://stream.cammonitorplus.net/1810/index.m3u8
#EXTINF:-1 tvg-chno="23" tvg-id="CBS.News.National.Stream.us2" tvg-name="CBS News 24/7" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s104846_dark_360w_270h.png" group-title="TV",CBS News 24/7
https://cbsn-us.cbsnstream.cbsnews.com/out/v1/55a8648e8f134e82a470f83d562deeca/master.m3u8
@ -192,8 +192,8 @@ https://jmp2.uk/stvp-IN270000230
#EXTINF:-1 tvg-chno="64" tvg-id="Food.Network.HD.us2" tvg-name="Food Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s44718_dark_360w_270h.png" group-title="TV",Food Network
http://23.237.104.106:8080/USA_FOOD_NETWORK/index.m3u8
#EXTINF:-1 tvg-chno="65" tvg-id="WNYW-DT.us_locals1" tvg-name="Fox" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s28719_dark_360w_270h.png" group-title="TV",Fox
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/2544.ts
#EXTINF:-1 tvg-chno="65" tvg-id="WFLD-DT.us_locals1" tvg-name="Fox" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s28719_dark_360w_270h.png" group-title="TV",Fox
http://stream.cammonitorplus.net/1752/index.m3u8
#EXTINF:-1 tvg-chno="66" tvg-id="Fox.Business.HD.us2" tvg-name="Fox Business" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s58649_dark_360w_270h.png" group-title="TV",Fox Business
http://41.205.93.154/FOXBUSINESS/index.m3u8
@ -304,7 +304,7 @@ http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/
http://23.237.104.106:8080/USA_NBA/tracks-v1a1/mono.m3u8
#EXTINF:-1 tvg-chno="102" tvg-id="WNBC-DT.us_locals1" tvg-name="NBC" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10991_dark_360w_270h.png" group-title="TV",NBC
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/2447.ts
http://stream.cammonitorplus.net/1812/index.m3u8
#EXTINF:-1 tvg-chno="103" tvg-id="NBC.Sports.Bay.Area.HD.us2" tvg-name="NBC Sports Bay Area" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s63138_dark_360w_270h.png" group-title="TV",NBC Sports Bay Area
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/2436.ts
@ -313,7 +313,7 @@ http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/2435.ts
#EXTINF:-1 tvg-chno="105" tvg-id="NBC.Sports.California.SAT.us2" tvg-name="NBC Sports California" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s45540_dark_360w_270h.png" group-title="TV",NBC Sports California
http://realsport.scalecdn.co:8080/live/supersonicstreams/cUewZolveU8Jh18jk34BDJ/3821.ts
http://stream.cammonitorplus.net/1795/index.m3u8
#EXTINF:-1 tvg-chno="106" tvg-id="a90a91570ce0536cbb22b591ad7e0da2" tvg-name="NBC Sports NOW" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s114140_dark_360w_270h.png" group-title="TV",NBC Sports NOW
https://jmp2.uk/stvp-USBD420002446

File diff suppressed because it is too large Load diff

View file

@ -6,7 +6,6 @@ from pathlib import Path
from playwright.async_api import async_playwright
from scrapers import (
cdnlivetv,
dami,
embedhd,
fawa,
fsports,
@ -66,7 +65,6 @@ async def main() -> None:
]
httpx_tasks = [
# asyncio.create_task(dami.scrape()),
asyncio.create_task(fawa.scrape()),
asyncio.create_task(istreameast.scrape()),
asyncio.create_task(mainportal.scrape()),
@ -95,7 +93,6 @@ async def main() -> None:
additions = (
cdnlivetv.urls
| dami.urls
| embedhd.urls
| fawa.urls
| fsports.urls

View file

@ -1,80 +0,0 @@
from .utils import Cache, Time, get_logger, leagues, network
log = get_logger(__name__)
urls: dict[str, dict[str, str | float]] = {}
TAG = "DAMI"
CACHE_FILE = Cache(TAG, exp=28_800)
API_URL = "https://api.ppv.to/api/streams"
# "https://api.ppv.cx/api/streams"
# "https://api.ppv.sh/api/streams"
async def get_events() -> dict[str, dict[str, str | float]]:
now = Time.clean(Time.now())
events = {}
if not (r := await network.request(API_URL, log=log)):
return events
api_data: dict[str, dict] = r.json()
for stream_group in api_data.get("streams", []):
sport = stream_group["category"]
if sport == "24/7 Streams":
continue
for event in stream_group.get("streams", []):
name = event.get("name")
start_ts = event.get("starts_at")
logo = event.get("poster")
uri_name = event.get("uri_name")
if not (name and start_ts and uri_name):
continue
event_dt = Time.from_ts(start_ts)
if event_dt.date() != now.date():
continue
key = f"[{sport}] {name} ({TAG})"
tvg_id, pic = leagues.get_tvg_info(sport, name)
events[key] = {
"url": f"https://dami-tv.pro/live-hls/channel/{uri_name}/playlist.m3u8",
"logo": logo or pic,
"base": f"https://dami-tv.pro/player/auto/?match={uri_name}",
"timestamp": now.timestamp(),
"id": tvg_id or "Live.Event.us",
}
return events
async def scrape() -> None:
if cached_urls := CACHE_FILE.load():
urls.update(cached_urls)
log.info(f"Loaded {len(urls)} event(s) from cache")
return
log.info(f'Scraping from "{API_URL}"')
events = await get_events()
urls.update(events)
log.info(f"Collected and cached {len(urls)} event(s)")
CACHE_FILE.write(urls)

View file

@ -47,8 +47,6 @@ class Network:
self.client = httpx.AsyncClient(**client_params)
self.unvd_client = httpx.AsyncClient(**client_params, verify=False)
async def request(
self,
url: str,

View file

@ -1,4 +1,4 @@
## Base Log @ 2026-05-14 16:25 UTC
## Base Log @ 2026-05-15 16:20 UTC
### ✅ Working Streams: 160<br>❌ Dead Streams: 0