mirror of
https://github.com/doms9/iptv.git
synced 2026-03-07 11:18:25 +01:00
Compare commits
No commits in common. "ad40759ec2c3b28049c5c074a75ef44027bdf270" and "0d0ba7a0155d3a11fbc205dc6cda12707768dbb2" have entirely different histories.
ad40759ec2
...
0d0ba7a015
8 changed files with 108504 additions and 105519 deletions
2730
M3U8/TV.m3u8
2730
M3U8/TV.m3u8
File diff suppressed because it is too large
Load diff
208498
M3U8/TV.xml
208498
M3U8/TV.xml
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
#EXTM3U url-tvg="https://raw.githubusercontent.com/doms9/iptv/refs/heads/default/M3U8/TV.xml"
|
||||
#EXTM3U url-tvg="https://raw.githubusercontent.com/doms9/iptv/refs/heads/default/EPG/TV.xml"
|
||||
|
||||
#EXTINF:-1 tvg-chno="1" tvg-id="A.and.E.HD.East.us2" tvg-name="A&E TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s51529_dark_360w_270h.png" group-title="TV",A&E TV
|
||||
http://fl1.moveonjoy.com/ANE/index.m3u8
|
||||
|
|
@ -308,7 +308,7 @@ http://mytvstream.net:8080/live/bn80NG/909467/20939.m3u8
|
|||
http://mytvstream.net:8080/live/bn80NG/909467/20940.m3u8
|
||||
|
||||
#EXTINF:-1 tvg-chno="101" 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
|
||||
https://jmp2.uk/rok-a90a91570ce0536cbb22b591ad7e0da2.m3u8
|
||||
|
||||
#EXTINF:-1 tvg-chno="102" tvg-id="NBC.Sports.Philadelphia.HD.us2" tvg-name="NBC Sports Philadelphia" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s32571_dark_360w_270h.png" group-title="TV",NBC Sports Philadelphia
|
||||
http://hardcoremedia.xyz:80/NW3Vk7xXwW/8375773282/136477
|
||||
|
|
|
|||
2726
M3U8/events.m3u8
2726
M3U8/events.m3u8
File diff suppressed because it is too large
Load diff
|
|
@ -82,7 +82,7 @@ async def main() -> None:
|
|||
asyncio.create_task(pawa.scrape()),
|
||||
asyncio.create_task(roxie.scrape()),
|
||||
asyncio.create_task(shark.scrape()),
|
||||
# asyncio.create_task(streambtw.scrape()),
|
||||
asyncio.create_task(streambtw.scrape()),
|
||||
asyncio.create_task(streamfree.scrape()),
|
||||
asyncio.create_task(tvpass.scrape()),
|
||||
asyncio.create_task(xstreameast.scrape()),
|
||||
|
|
|
|||
|
|
@ -18,11 +18,7 @@ XML_CACHE = Cache(f"{TAG}-xml", exp=28_000)
|
|||
|
||||
BASE_URL = "https://cdn.livetv861.me/rss/upcoming_en.xml"
|
||||
|
||||
VALID_SPORTS = {
|
||||
"Football",
|
||||
"Basketball",
|
||||
"Ice Hockey",
|
||||
}
|
||||
VALID_SPORTS = {"NBA", "NHL", "NFL", "NCAA", "MLB"}
|
||||
|
||||
|
||||
async def process_event(
|
||||
|
|
@ -54,22 +50,22 @@ async def process_event(
|
|||
|
||||
buttons = await page.query_selector_all(".lnktbj a[href*='webplayer']")
|
||||
|
||||
labels = await page.eval_on_selector_all(
|
||||
".lnktyt span",
|
||||
"elements => elements.map(el => el.textContent.trim().toLowerCase())",
|
||||
)
|
||||
href = None
|
||||
|
||||
for btn, label in zip(buttons, labels):
|
||||
if label in ["web", "youtube"]:
|
||||
continue
|
||||
|
||||
if not (href := await btn.get_attribute("href")):
|
||||
for btn in buttons:
|
||||
img = await btn.query_selector("img")
|
||||
|
||||
label = (await img.get_attribute("alt") or "").lower()
|
||||
|
||||
if not label or label == "web":
|
||||
continue
|
||||
|
||||
href = await btn.get_attribute("href")
|
||||
break
|
||||
|
||||
else:
|
||||
log.warning(f"URL {url_num}) No valid sources found.")
|
||||
log.warning(f"URL {url_num}) No available stream links.")
|
||||
|
||||
return
|
||||
|
||||
href = href if href.startswith("http") else f"https:{href}"
|
||||
|
|
@ -134,20 +130,17 @@ async def refresh_xml_cache(now_ts: float) -> dict[str, dict[str, str | float]]:
|
|||
if not all([title, link, sport_sum, date]):
|
||||
continue
|
||||
|
||||
sprt = sport_sum.split(".", 1)
|
||||
|
||||
sport, league = sprt[0], "".join(sprt[1:]).strip()
|
||||
sport = sport_sum.split()[-1]
|
||||
|
||||
if sport not in VALID_SPORTS:
|
||||
continue
|
||||
|
||||
event_dt = Time.from_str(date)
|
||||
|
||||
key = f"[{sport} - {league}] {title} ({TAG})"
|
||||
key = f"[{sport}] {title} ({TAG})"
|
||||
|
||||
events[key] = {
|
||||
"sport": sport,
|
||||
"league": league,
|
||||
"event": title,
|
||||
"link": link,
|
||||
"event_ts": event_dt.timestamp(),
|
||||
|
|
@ -217,15 +210,14 @@ async def scrape(browser: Browser) -> None:
|
|||
log=log,
|
||||
)
|
||||
|
||||
sport, league, event, ts, link = (
|
||||
sport, event, ts, link = (
|
||||
ev["sport"],
|
||||
ev["league"],
|
||||
ev["event"],
|
||||
ev["timestamp"],
|
||||
ev["link"],
|
||||
)
|
||||
|
||||
key = f"[{sport} - {league}] {event} ({TAG})"
|
||||
key = f"[{sport}] {event} ({TAG})"
|
||||
|
||||
tvg_id, logo = leagues.get_tvg_info(sport, event)
|
||||
|
||||
|
|
|
|||
|
|
@ -107,9 +107,8 @@ async def scrape(browser: Browser) -> None:
|
|||
url = await network.safe_process(
|
||||
handler,
|
||||
url_num=i,
|
||||
semaphore=network.PW_S,
|
||||
semaphore=network.HTTP_S,
|
||||
log=log,
|
||||
timeout=6,
|
||||
)
|
||||
|
||||
sport, event, link = (
|
||||
|
|
|
|||
22
readme.md
22
readme.md
|
|
@ -1,13 +1,27 @@
|
|||
## Base Log @ 2026-01-30 04:20 UTC
|
||||
## Base Log @ 2026-01-29 04:16 UTC
|
||||
|
||||
### ✅ Working Streams: 142<br>❌ Dead Streams: 4
|
||||
### ✅ Working Streams: 128<br>❌ Dead Streams: 18
|
||||
|
||||
| Channel | Error (Code) | Link |
|
||||
| ------- | ------------ | ---- |
|
||||
| ESPN2 | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/2210.m3u8` |
|
||||
| FDSN Detroit | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/20930.m3u8` |
|
||||
| FDSN Florida | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/46794.m3u8` |
|
||||
| FDSN Midwest | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/66795.m3u8` |
|
||||
| FDSN North | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/58827.m3u8` |
|
||||
| FDSN Oklahoma | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/20934.m3u8` |
|
||||
| FDSN SoCal | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/221151.m3u8` |
|
||||
| FDSN West | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/20932.m3u8` |
|
||||
| FDSN Wisconsin | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/78599.m3u8` |
|
||||
| FXX | HTTP Error (404) | `https://fl1.moveonjoy.com/FXX/index.m3u8` |
|
||||
| Premier Sports 1 | HTTP Error (403) | `http://hardcoremedia.xyz:80/NW3Vk7xXwW/8375773282/117037` |
|
||||
| NBC Sports Boston | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/20939.m3u8` |
|
||||
| NBC Sports California | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/20940.m3u8` |
|
||||
| NESN | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/46726.m3u8` |
|
||||
| Premier Sports 2 | HTTP Error (502) | `http://hardcoremedia.xyz:80/NW3Vk7xXwW/8375773282/117038` |
|
||||
| Sportsnet One | HTTP Error (403) | `http://mytvstream.net:8080/live/bn80NG/909467/57297.m3u8` |
|
||||
| Space City Home Network | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/213668.m3u8` |
|
||||
| Sportsnet East | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/57298.m3u8` |
|
||||
| Sportsnet One | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/57297.m3u8` |
|
||||
| The Weather Channel | HTTP Error (404) | `http://mytvstream.net:8080/live/bn80NG/909467/18926.m3u8` |
|
||||
---
|
||||
#### Base Channels URL
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue