Compare commits

...

34 commits

Author SHA1 Message Date
GitHub Actions Bot
12918042b7 health log 2026-03-05 09:05:33 +00:00
GitHub Actions Bot
2adbb9e81a update M3U8 2026-03-04 23:30:41 -05:00
GitHub Actions Bot
4ec3a47c3a update EPG 2026-03-05 04:25:24 +00:00
GitHub Actions Bot
62c0eff318 health log 2026-03-05 04:22:54 +00:00
GitHub Actions Bot
ca26b057a1 update M3U8 2026-03-04 23:01:10 -05:00
GitHub Actions Bot
a2c2dd4925 update M3U8 2026-03-04 22:31:27 -05:00
GitHub Actions Bot
3bbb3731ad update M3U8 2026-03-04 22:03:08 -05:00
GitHub Actions Bot
cfbd90e7d3 update M3U8 2026-03-04 21:31:45 -05:00
GitHub Actions Bot
c0b39fa011 update M3U8 2026-03-04 21:02:34 -05:00
GitHub Actions Bot
afa1a8c966 update M3U8 2026-03-04 20:31:34 -05:00
GitHub Actions Bot
fb0aaee81b update M3U8 2026-03-04 20:04:39 -05:00
GitHub Actions Bot
96421b7217 update M3U8 2026-03-04 19:31:51 -05:00
GitHub Actions Bot
1deb6a2daf update M3U8 2026-03-04 19:04:33 -05:00
GitHub Actions Bot
f9ab0e9d24 update M3U8 2026-03-04 18:32:02 -05:00
doms9
00000d9eed e
- add totalsportek1.py
- misc edits
2026-03-04 18:15:39 -05:00
GitHub Actions Bot
b2f11e6da5 update M3U8 2026-03-04 17:31:23 -05:00
GitHub Actions Bot
c416ba1a78 update M3U8 2026-03-04 17:01:59 -05:00
GitHub Actions Bot
2828452ac7 update M3U8 2026-03-04 16:31:04 -05:00
GitHub Actions Bot
6db07997be update M3U8 2026-03-04 16:01:18 -05:00
GitHub Actions Bot
fe2bc9f055 health log 2026-03-04 20:55:42 +00:00
GitHub Actions Bot
e1f9b85c87 update M3U8 2026-03-04 15:32:10 -05:00
GitHub Actions Bot
92de8ffdcd update M3U8 2026-03-04 15:04:06 -05:00
GitHub Actions Bot
92d6c492be update M3U8 2026-03-04 14:34:49 -05:00
GitHub Actions Bot
3de82cc902 update EPG 2026-03-04 19:26:04 +00:00
GitHub Actions Bot
91c305331a update M3U8 2026-03-04 14:04:03 -05:00
GitHub Actions Bot
0d43d58461 update M3U8 2026-03-04 13:33:38 -05:00
GitHub Actions Bot
370a74e1cf update M3U8 2026-03-04 13:06:19 -05:00
GitHub Actions Bot
b795342ad4 update M3U8 2026-03-04 12:04:51 -05:00
GitHub Actions Bot
f114d1000b update M3U8 2026-03-04 11:03:04 -05:00
GitHub Actions Bot
b4dce214bd health log 2026-03-04 15:04:01 +00:00
GitHub Actions Bot
71491aa64b update M3U8 2026-03-04 10:01:21 -05:00
GitHub Actions Bot
e844ca4ced update M3U8 2026-03-04 09:01:44 -05:00
GitHub Actions Bot
cce93e9cf9 update M3U8 2026-03-04 08:01:44 -05:00
GitHub Actions Bot
029e0fb210 update EPG 2026-03-04 11:07:02 +00:00
16 changed files with 181657 additions and 178003 deletions

File diff suppressed because it is too large Load diff

353771
M3U8/TV.xml

File diff suppressed because one or more lines are too long

View file

@ -4,7 +4,7 @@
http://41.205.93.154/AandE/index.m3u8
#EXTINF:-1 tvg-chno="2" tvg-id="ABC.National.Feed.us2" 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://stream.cammonitorplus.net/1762/index.m3u8?token=MnE3ZWg1YkgxdFdWZlo2c2hLMkltWnJhcFo1OHhxcXVyb2pKazZXaWxZRERxNEduaVp1UnBxU2VlWmF0ZnRlRGxaMm1zNStDbnJOOXFZMlhtcStybmc9PQ==
http://stream.cammonitorplus.net/1740/index.m3u8?token=MnE3ZWg1YkgxdFdWZlo2c2hLMkltWnJhcFo1OHhxcXVyb2pKazZXaWxZRERxNEduaVp1UnBxU2VlWmF0ZnRlRGxaMm1zNStDbnJOOXFZMlhtcStybmc9PQ==
#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.239.31.26:8989/accnetwork/index.m3u8
@ -13,7 +13,7 @@ http://23.239.31.26:8989/accnetwork/index.m3u8
https://turnerlive.warnermediacdn.com/hls/live/2023183/aseast/noslate/VIDEO_1_5128000.m3u8
#EXTINF:-1 tvg-chno="5" tvg-id="Altitude.Sports.us2" tvg-name="Altitude Sports" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s44263_dark_360w_270h.png" group-title="TV",Altitude Sports
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/141447.ts
http://mytvstream.net:8080/live/30550113/30550113/79545.m3u8
#EXTINF:-1 tvg-chno="6" tvg-id="AMC.HD.us2" tvg-name="AMC" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10021_dark_360w_270h.png" group-title="TV",AMC
http://41.205.93.154/AMC/index.m3u8
@ -22,13 +22,13 @@ http://41.205.93.154/AMC/index.m3u8
http://23.239.31.26:8989/animalplanet/index.m3u8
#EXTINF:-1 tvg-chno="8" tvg-id="Antenna.TV.us2" tvg-name="Antenna TV" tvg-logo="https://cdn.tvpassport.com/image/station/240x135/v3/70248-224D0.png" group-title="TV",Antenna TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129826.ts
http://mytvstream.net:8080/live/30550113/30550113/20180.m3u8
#EXTINF:-1 tvg-chno="9" tvg-id="ASPiRE.HD.us2" tvg-name="Aspire" tvg-logo="https://i.gyazo.com/0dec42cc5ef48c489cc10db906dc5b9b.png" group-title="TV",Aspire
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129827.ts
http://mytvstream.net:8080/live/30550113/30550113/21927.m3u8
#EXTINF:-1 tvg-chno="10" tvg-id="AXS.TV.us2" tvg-name="AXS TV" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s28506_dark_360w_270h.png" group-title="TV",AXS TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129830.ts
http://23.239.31.26:8989/axstv/index.m3u8
#EXTINF:-1 tvg-chno="11" tvg-id="BBC.America.HD.us2" tvg-name="BBC America" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s64492_dark_360w_270h.png" group-title="TV",BBC America
https://bcovlive-a.akamaihd.net/7f5ec16d102f4b5d92e8e27bc95ff424/us-east-1/6240731308001/playlist.m3u8
@ -106,25 +106,25 @@ http://23.237.104.106:8080/USA_COOKING/index.m3u8
https://cdn-uw2-prod.tsv2.amagi.tv/linear/amg01438-ewscrippscompan-courttv-tablo/playlist.m3u8
#EXTINF:-1 tvg-chno="36" tvg-id="COZI.TV.us2" tvg-name="Cozi TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s78851_dark_360w_270h.png" group-title="TV",Cozi TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129858.ts
http://mytvstream.net:8080/live/30550113/30550113/11868.m3u8
#EXTINF:-1 tvg-chno="37" tvg-id="Crime.and.Investigation.Network.HD.us2" tvg-name="Crime & Investigation Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s61469_dark_360w_270h.png" group-title="TV",Crime & Investigation Network
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129860.ts
http://23.237.104.106:8080/USA_CRIME_INVESTIGATION/mpegts
#EXTINF:-1 tvg-chno="38" tvg-id="KTLA-DT.us_locals1" tvg-name="CW" tvg-logo="https://i.gyazo.com/afd5b481b327d204087dfde6a7741f9d.png" group-title="TV",CW
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/117093.ts
http://mytvstream.net:8080/live/30550113/30550113/120889.m3u8
#EXTINF:-1 tvg-chno="39" tvg-id="Discovery.Channel.HD.us2" tvg-name="Discovery Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11150_dark_360w_270h.png" group-title="TV",Discovery Channel
http://23.237.104.106:8080/USA_DISCOVERY/index.m3u8
#EXTINF:-1 tvg-chno="40" tvg-id="Discovery.Family.Channel.HD.us2" tvg-name="Discovery Family Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16618_dark_360w_270h.png" group-title="TV",Discovery Family Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129865.ts
http://mytvstream.net:8080/live/30550113/30550113/57347.m3u8
#EXTINF:-1 tvg-chno="41" tvg-id="Discovery.Life.Channel.us2" tvg-name="Discovery Life" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16125_dark_360w_270h.png" group-title="TV",Discovery Life
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129866.ts
http://mytvstream.net:8080/live/30550113/30550113/9861.m3u8
#EXTINF:-1 tvg-chno="42" tvg-id="Science.Channel.HD.us2" tvg-name="Discovery Science" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s24282_dark_360w_270h.png" group-title="TV",Discovery Science
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129867.ts
http://mytvstream.net:8080/live/30550113/30550113/20866.m3u8
#EXTINF:-1 tvg-chno="43" tvg-id="Disney.Channel.HD.us2" tvg-name="Disney" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10171_dark_360w_270h.png" group-title="TV",Disney Channel
http://89.105.221.127/Disney/index.m3u8?token=test
@ -193,10 +193,10 @@ http://23.237.104.106:8080/USA_FOOD_NETWORK/index.m3u8
http://stream.cammonitorplus.net/1772/index.m3u8?token=MnE3ZWg1YkgxdFdWZlo2c2hLMkltWnJhcFo1OHhxcXVyb2pKazZXaWxZRERxNEduaVp1UnBxU2VlWmF0ZnRlRGxaMm1zNStDbnJOOXFZMlhtcStybmc9PQ==
#EXTINF:-1 tvg-chno="65" 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://hardcoremedia.xyz/live/rabdsbmz/3731346838/8258.ts
http://mytvstream.net:8080/live/30550113/30550113/17639.m3u8
#EXTINF:-1 tvg-chno="66" tvg-id="Fox.News.Channel.HD.us2" tvg-name="Fox News" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16374_dark_360w_270h.png" group-title="TV",Fox News
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/136761.ts
http://104.255.88.155/foxnews/index.m3u8
#EXTINF:-1 tvg-chno="67" tvg-id="FS1.Fox.Sports.1.HD.us2" tvg-name="Fox Sports 1" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s82541_dark_360w_270h.png" group-title="TV",Fox Sports 1
https://starshare.st/live/P4B9TB9xR8/humongous2tonight/3420.ts
@ -205,7 +205,7 @@ https://starshare.st/live/P4B9TB9xR8/humongous2tonight/3420.ts
https://starshare.st/live/P4B9TB9xR8/humongous2tonight/55.ts
#EXTINF:-1 tvg-chno="69" tvg-id="Freeform.HD.us2" tvg-name="Freeform TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10093_dark_360w_270h.png" group-title="TV",Freeform TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/11205.ts
http://mytvstream.net:8080/live/30550113/30550113/13370.m3u8
#EXTINF:-1 tvg-chno="70" 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://23.237.104.106:8080/USA_FUSE/index.m3u8
@ -214,34 +214,34 @@ http://23.237.104.106:8080/USA_FUSE/index.m3u8
http://23.237.104.106:8080/USA_FX/index.m3u8
#EXTINF:-1 tvg-chno="72" tvg-id="FX.Movie.Channel.HD.us2" tvg-name="FX Movie Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s70253_dark_360w_270h.png" group-title="TV",FX Movie Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129878.ts
http://mytvstream.net:8080/live/30550113/30550113/10260.m3u8
#EXTINF:-1 tvg-chno="73" tvg-id="FXX.HD.us2" tvg-name="FXX" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/fxx-us.png" group-title="TV",FXX
http://23.237.104.106:8080/USA_FXX/index.m3u8
#EXTINF:-1 tvg-chno="74" tvg-id="FYI.Channel.HD.us2" tvg-name="FYI TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16834_dark_360w_270h.png" group-title="TV",FYI TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/130105.ts
http://mytvstream.net:8080/live/30550113/30550113/9240.m3u8
#EXTINF:-1 tvg-chno="75" tvg-id="Game.Show.Network.HD.us2" tvg-name="Game Show Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14909_dark_360w_270h.png" group-title="TV",Game Show Network
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/130111.ts
http://mytvstream.net:8080/live/30550113/30550113/120633.m3u8
#EXTINF:-1 tvg-chno="76" tvg-id="get.us2" tvg-name="getTV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s82563_dark_360w_270h.png" group-title="TV",getTV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129884.ts
http://mytvstream.net:8080/live/30550113/30550113/18366.m3u8
#EXTINF:-1 tvg-chno="77" tvg-id="Golf.Channel.HD.us2" tvg-name="Golf Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14899_dark_360w_270h.png" group-title="TV",Golf Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/258721.ts
http://mytvstream.net:8080/live/30550113/30550113/9806.m3u8
#EXTINF:-1 tvg-chno="78" tvg-id="Grit.us2" tvg-name="Grit TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s89922_dark_360w_270h.png" group-title="TV",Grit TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129885.ts
http://mytvstream.net:8080/live/30550113/30550113/20861.m3u8
#EXTINF:-1 tvg-chno="79" tvg-id="Hallmark.Channel.HD.us2" tvg-name="Hallmark Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11221_dark_360w_270h.png" group-title="TV",Hallmark Channel
http://23.237.104.106:8080/USA_HALLMARK/index.m3u8
#EXTINF:-1 tvg-chno="80" tvg-id="Hallmark.Family.us2" tvg-name="Hallmark Family" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s105723_dark_360w_270h.png" group-title="TV",Hallmark Family
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/130118.ts
http://mytvstream.net:8080/live/30550113/30550113/9307.m3u8
#EXTINF:-1 tvg-chno="81" tvg-id="Hallmark.Mystery.HD.us2" tvg-name="Hallmark Mystery" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s61522_dark_360w_270h.png" group-title="TV",Hallmark Mystery
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129888.ts
http://mytvstream.net:8080/live/30550113/30550113/10289.m3u8
#EXTINF:-1 tvg-chno="82" tvg-id="HBO.East.us2" tvg-name="HBO" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10240_dark_360w_270h.png" group-title="TV",HBO
http://23.237.104.106:8080/USA_HBO/index.m3u8
@ -259,19 +259,19 @@ http://mytvstream.net:8080/live/30550113/30550113/17772.m3u8
http://23.237.104.106:8080/USA_HBO_ZONE/index.m3u8
#EXTINF:-1 tvg-chno="87" tvg-id="History.HD.us2" tvg-name="History Channel" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s87679_dark_360w_270h.png" group-title="TV",History Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129892.ts
http://mytvstream.net:8080/live/30550113/30550113/15017.m3u8
#EXTINF:-1 tvg-chno="88" tvg-id="HLN.HD.us2" tvg-name="HLN TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10145_dark_360w_270h.png" group-title="TV",HLN TV
http://23.237.104.106:8080/USA_HLN/index.m3u8
#EXTINF:-1 tvg-chno="89" tvg-id="INSP.HD.us2" tvg-name="INSP" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11066_dark_360w_270h.png" group-title="TV",INSP
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/130121.ts
http://mytvstream.net:8080/live/30550113/30550113/16262.m3u8
#EXTINF:-1 tvg-chno="90" tvg-id="Investigation.Discovery.HD.us2" tvg-name="Investigation Discovery" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16615_dark_360w_270h.png" group-title="TV",Investigation Discovery
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129899.ts
http://mytvstream.net:8080/live/30550113/30550113/46810.m3u8
#EXTINF:-1 tvg-chno="91" tvg-id="ION.Television.HD.us2" tvg-name="ION TV" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s18633_dark_360w_270h.png" group-title="TV",ION TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129903.ts
http://mytvstream.net:8080/live/30550113/30550113/9297.m3u8
#EXTINF:-1 tvg-chno="92" tvg-id="Lifetime.HD.us2" tvg-name="Lifetime" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10918_dark_360w_270h.png" group-title="TV",Lifetime
http://41.205.93.154/LIFETIME/index.m3u8
@ -280,13 +280,13 @@ http://41.205.93.154/LIFETIME/index.m3u8
http://23.237.104.106:8080/USA_LMN/index.m3u8
#EXTINF:-1 tvg-chno="94" tvg-id="Marquee.Sports.Network.HD.us2" tvg-name="Marquee Sports Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s113768_dark_360w_270h.png" group-title="TV",Marquee Sports Network
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/141475.ts
http://mytvstream.net:8080/live/30550113/30550113/13379.m3u8
#EXTINF:-1 tvg-chno="95" tvg-id="MLB.Network.HD.us2" tvg-name="MLB Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s62081_dark_360w_270h.png" group-title="TV",MLB Network
http://stream.cammonitorplus.net/337626/index.m3u8?token=MnE3ZWg1YkgxdFdWZlo2c2hLMkltWnJhcFo1OHhxcXVyb2pKazZXaWxZRERxNEduaVp1UnBxU2VlWmF0ZnRlRGxaMm1zNStDbnJOOXFZMlhtcStybmc9PQ==
#EXTINF:-1 tvg-chno="96" tvg-id="MOTORTREND.HD.us2" tvg-name="MotorTrend TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s31046_dark_360w_270h.png" group-title="TV",MotorTrend TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129917.ts
http://mytvstream.net:8080/live/30550113/30550113/10399.m3u8
#EXTINF:-1 tvg-chno="97" tvg-id="MSG.National.us2" tvg-name="MSG" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10979_dark_360w_270h.png" group-title="TV",MSG
http://23.237.104.106:8080/USA_MSG/index.m3u8
@ -313,19 +313,19 @@ http://mytvstream.net:8080/live/30550113/30550113/9900.m3u8
http://mytvstream.net:8080/live/30550113/30550113/20939.m3u8
#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://hardcoremedia.xyz/live/rabdsbmz/3731346838/136474.ts
http://mytvstream.net:8080/live/30550113/30550113/20940.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://starshare.st/live/P4B9TB9xR8/humongous2tonight/1001.ts
#EXTINF:-1 tvg-chno="107" 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/live/rabdsbmz/3731346838/136477.ts
http://mytvstream.net:8080/live/30550113/30550113/20943.m3u8
#EXTINF:-1 tvg-chno="108" tvg-id="New.England.Sports.Network.HD.us2" tvg-name="NESN" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s35038_dark_360w_270h.png" group-title="TV",NESN
http://23.237.104.106:8080/USA_NESN/index.m3u8
#EXTINF:-1 tvg-chno="109" tvg-id="NewsNation.us2" tvg-name="NewsNation" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s91096_dark_360w_270h.png" group-title="TV",NewsNation
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129931.ts
http://mytvstream.net:8080/live/30550113/30550113/161450.m3u8
#EXTINF:-1 tvg-chno="110" 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
https://stream.decentdoubts.net/6128524/index.m3u8?token=Mm9QYnQ1ZkpyYWllaEoydWhheUVsOGl1cGNpQW1xcUczNGVZeHRuWHlYL0RxNEduaVp1UnBxU2VlWmF0ZnRlRGxaMm1zNStDbnJOOXFZMlhtcStybmc9PQ==
@ -334,10 +334,10 @@ https://stream.decentdoubts.net/6128524/index.m3u8?token=Mm9QYnQ1ZkpyYWllaEoydWh
https://starshare.st/live/P4B9TB9xR8/humongous2tonight/23550.ts
#EXTINF:-1 tvg-chno="112" tvg-id="NHL.Network.HD.us2" tvg-name="NHL Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s58570_dark_360w_270h.png" group-title="TV",NHL Network
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/167982.ts
http://mytvstream.net:8080/live/30550113/30550113/20179.m3u8
#EXTINF:-1 tvg-chno="113" tvg-id="Nick.Jr.HD.us2" tvg-name="Nick Jr" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s19211_dark_360w_270h.png" group-title="TV",Nick Jr
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/137683.ts
http://mytvstream.net:8080/live/30550113/30550113/46710.m3u8
#EXTINF:-1 tvg-chno="114" tvg-id="Nickelodeon.HD.us2" tvg-name="Nickelodeon" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11006_dark_360w_270h.png" group-title="TV",Nickelodeon
http://23.237.104.106:8080/USA_NICKELODEON/index.m3u8
@ -346,13 +346,13 @@ http://23.237.104.106:8080/USA_NICKELODEON/index.m3u8
http://212.102.60.231/NICKTOONS/index.m3u8
#EXTINF:-1 tvg-chno="116" tvg-id="Outdoor.Channel.HD.us2" tvg-name="Outdoor Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14776_dark_360w_270h.png" group-title="TV",Outdoor Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129933.ts
http://23.237.104.106:8080/USA_OUTDOOR/mpegts
#EXTINF:-1 tvg-chno="117" tvg-id="Ovation.HD.us2" tvg-name="Ovation" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s15807_dark_360w_270h.png" group-title="TV",Ovation
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129935.ts
#EXTINF:-1 tvg-chno="118" tvg-id="Oxygen.True.Crime.HD.us2" tvg-name="Oxygen" tvg-logo="https://i.gyazo.com/68db5ec4dba40181592406e7c3128fc7.png" group-title="TV",Oxygen
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/15912.ts
http://89.105.221.127/Oxygen/index.m3u8?token=test
#EXTINF:-1 tvg-chno="119" tvg-id="Paramount.Network.HD.us2" tvg-name="Paramount Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11163_dark_360w_270h.png" group-title="TV",Paramount Network
http://23.237.104.106:8080/USA_PARAMOUNT_NETWORK/index.m3u8
@ -361,7 +361,7 @@ http://23.237.104.106:8080/USA_PARAMOUNT_NETWORK/index.m3u8
https://2-fss-2.streamhoster.com/pl_140/amlst:200914-1298290/playlist.m3u8
#EXTINF:-1 tvg-chno="121" tvg-id="POP.HD.us2" tvg-name="Pop TV" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16715_dark_360w_270h.png" group-title="TV",Pop TV
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129943.ts
http://mytvstream.net:8080/live/30550113/30550113/20976.m3u8
#EXTINF:-1 tvg-chno="122" tvg-id="Premier.Sports.1.HD.uk" tvg-name="Premier Sports 1" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s79027_dark_360w_270h.png" group-title="TV",Premier Sports 1
https://starshare.st/live/P4B9TB9xR8/humongous2tonight/5029.ts
@ -391,19 +391,19 @@ https://starshare.st/live/P4B9TB9xR8/humongous2tonight/274.ts
https://starshare.st/live/P4B9TB9xR8/humongous2tonight/23.ts
#EXTINF:-1 tvg-chno="131" tvg-id="Smithsonian.HD.Network.us2" tvg-name="Smithsonian Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s58532_dark_360w_270h.png" group-title="TV",Smithsonian Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129953.ts
http://mytvstream.net:8080/live/30550113/30550113/31150.m3u8
#EXTINF:-1 tvg-chno="132" tvg-id="Sony.Movie.Channel.HD.us2" tvg-name="Sony Movie Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s69130_dark_360w_270h.png" group-title="TV",Sony Movie Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/130020.ts
http://mytvstream.net:8080/live/30550113/30550113/2214.m3u8
#EXTINF:-1 tvg-chno="133" tvg-id="Space.City.Home.Network.HD.us2" tvg-name="Space City Home Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s77744_dark_360w_270h.png" group-title="TV",Space City Home Network
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/229934.ts
http://mytvstream.net:8080/live/30550113/30550113/213668.m3u8
#EXTINF:-1 tvg-chno="134" tvg-id="Spectrum.SportsNet.LA.Dodgers.HD.us2" tvg-name="Spectrum SportsNet LA Dodgers" tvg-logo="https://i.gyazo.com/765cce528ddda366695bb178d9dee6da.png" group-title="TV",Spectrum SportsNet LA Dodgers
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/141497.ts
http://mytvstream.net:8080/live/30550113/30550113/31636.m3u8
#EXTINF:-1 tvg-chno="135" tvg-id="Spectrum.SportsNet.Lakers.HD.us2" tvg-name="Spectrum SportsNet Lakers" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s77422_dark_360w_270h.png" group-title="TV",Spectrum SportsNet Lakers
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/141498.ts
http://mytvstream.net:8080/live/30550113/30550113/21842.m3u8
#EXTINF:-1 tvg-chno="136" tvg-id="Sportsman.Channel.us2" tvg-name="Sportsman Channel" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s33930_dark_360w_270h.png" group-title="TV",Sportsman Channel
http://212.102.60.231/SPORTSMAN_CHANNEL/index.m3u8
@ -421,7 +421,7 @@ http://212.102.60.231/SNY/index.m3u8
https://stream.decentdoubts.net/808/index.m3u8?token=MnJPcXQ1NlRydE9iZ3BqYXNxMjJ5SlNucTV5dG02K0QyNHZJeDZlbmxZVERxNEduaVp1UnBxU2VlWmF0ZnRlRGxaMm0wNStDbnJOOXJJM0puSytpbkE9PQ==
#EXTINF:-1 tvg-chno="141" tvg-id="SportsNet.Pittsburgh.HD.us2" tvg-name="SportsNet Pittsburgh" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s26028_dark_360w_270h.png" group-title="TV",SportsNet Pittsburgh
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/141448.ts
http://mytvstream.net:8080/live/30550113/30550113/108178.m3u8
#EXTINF:-1 tvg-chno="142" tvg-id="Starz.HD.us2" tvg-name="Starz" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s12719_dark_360w_270h.png" group-title="TV",Starz
http://23.237.104.106:8080/USA_STARZ/index.m3u8
@ -436,13 +436,13 @@ http://41.205.93.154/SYFY/index.m3u8
https://turnerlive.warnermediacdn.com/hls/live/2023172/tbseast/slate/VIDEO_0_3564000.m3u8
#EXTINF:-1 tvg-chno="146" tvg-id="Tennis.Channel.HD.us2" tvg-name="Tennis Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s60316_dark_360w_270h.png" group-title="TV",Tennis Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/136481.ts
http://mytvstream.net:8080/live/30550113/30550113/20184.m3u8
#EXTINF:-1 tvg-chno="147" tvg-id="The.Weather.Channel.HD.us2" tvg-name="The Weather Channel" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s58812_dark_360w_270h.png" group-title="TV",The Weather Channel
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/8359.ts
http://mytvstream.net:8080/live/30550113/30550113/18926.m3u8
#EXTINF:-1 tvg-chno="148" tvg-id="TLC.HD.(US).us2" tvg-name="TLC" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11158_dark_360w_270h.png" group-title="TV",TLC
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129765.ts
http://89.105.221.127/tlc/mpegts?token=test
#EXTINF:-1 tvg-chno="149" tvg-id="TNT.HD.us2" tvg-name="TNT" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11164_dark_360w_270h.png" group-title="TV",TNT
https://turnerlive.warnermediacdn.com/hls/live/2023168/tnteast/slate/VIDEO_0_3564000.m3u8
@ -460,13 +460,13 @@ https://stream.decentdoubts.net/806/index.m3u8?token=MnJPcXQ1NlRydE9iZ3BqYXNxMjJ
https://turnerlive.warnermediacdn.com/hls/live/2023186/tcmeast/noslate/VIDEO_1_5128000.m3u8
#EXTINF:-1 tvg-chno="154" tvg-id="TV.Land.HD.us2" tvg-name="TV Land" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16123_dark_360w_270h.png" group-title="TV",TV Land
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/130158.ts
http://mytvstream.net:8080/live/30550113/30550113/46696.m3u8
#EXTINF:-1 tvg-chno="155" tvg-id="TV.ONE.HD.us2" tvg-name="TV One" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s35513_dark_360w_270h.png" group-title="TV",TV One
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129971.ts
http://mytvstream.net:8080/live/30550113/30550113/20868.m3u8
#EXTINF:-1 tvg-chno="156" tvg-id="USA.Network.HD.us2" tvg-name="USA East" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11207_dark_360w_270h.png" group-title="TV",USA East
http://hardcoremedia.xyz/live/rabdsbmz/3731346838/129973.ts
http://mytvstream.net:8080/live/30550113/30550113/10252.m3u8
#EXTINF:-1 tvg-chno="157" tvg-id="VH1.HD.us2" tvg-name="VH1" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11218_dark_360w_270h.png" group-title="TV",VH1
http://23.237.104.106:8080/USA_VH1/index.m3u8

File diff suppressed because it is too large Load diff

View file

@ -22,7 +22,8 @@ from scrapers import (
streamhub,
streamsgate,
timstreams,
totalsportek,
totalsportek1,
totalsportek3,
tvapp,
volokit,
watchfooty,
@ -80,10 +81,11 @@ async def main() -> None:
asyncio.create_task(fawa.scrape()),
asyncio.create_task(istreameast.scrape()),
asyncio.create_task(ovogoal.scrape()),
# asyncio.create_task(pawa.scrape()),
asyncio.create_task(pawa.scrape()),
asyncio.create_task(shark.scrape()),
asyncio.create_task(streambtw.scrape()),
asyncio.create_task(totalsportek.scrape()),
asyncio.create_task(totalsportek1.scrape()),
asyncio.create_task(totalsportek3.scrape()),
asyncio.create_task(tvapp.scrape()),
asyncio.create_task(volokit.scrape()),
# asyncio.create_task(xstreameast.scrape()),
@ -121,7 +123,8 @@ async def main() -> None:
| streamhub.urls
| streamsgate.urls
| timstreams.urls
| totalsportek.urls
| totalsportek1.urls
| totalsportek3.urls
| tvapp.urls
| volokit.urls
| watchfooty.urls

View file

@ -50,7 +50,9 @@ async def process_event(url: str, url_num: int) -> str | None:
log.info(f"URL {url_num}) Captured M3U8")
return base64.b64decode(match[1]).decode("utf-8")
m3u = base64.b64decode(match[1]).decode("utf-8")
return m3u.split("&remote")[0]
async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:

View file

@ -19,14 +19,18 @@ HTML_CACHE = Cache(f"{TAG}-html", exp=19_800)
BASE_URL = "https://roxiestreams.info"
SPORT_ENDPOINTS = {
"fighting": "Fighting",
"mlb": "MLB",
"motorsports": "Racing",
"nba": "NBA",
# "nfl": "American Football",
"nhl": "NHL",
"soccer": "Soccer",
SPORT_URLS = {
"Racing": urljoin(BASE_URL, "motorsports"),
# "American Football": urljoin(BASE_URL, "nfl"),
} | {
sport: urljoin(BASE_URL, sport.lower())
for sport in [
"Fighting",
"MLB",
"NBA",
"NHL",
"Soccer",
]
}
@ -59,7 +63,7 @@ async def refresh_html_cache(
event_dt = Time.from_str(data_start, timezone="PST")
event_sport = SPORT_ENDPOINTS[sport]
event_sport = next((k for k, v in SPORT_URLS.items() if v == url), "Live Event")
key = f"[{event_sport}] {event} ({TAG})"
@ -159,15 +163,13 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
if not (events := HTML_CACHE.load()):
log.info("Refreshing HTML cache")
sport_urls = {sport: urljoin(BASE_URL, sport) for sport in SPORT_ENDPOINTS}
tasks = [
refresh_html_cache(
url,
sport,
now.timestamp(),
)
for sport, url in sport_urls.items()
for sport, url in SPORT_URLS.items()
]
results = await asyncio.gather(*tasks)

View file

@ -19,16 +19,19 @@ HTML_CACHE = Cache(f"{TAG}-html", exp=19_800)
BASE_URL = "https://livesports4u.net"
CATEGORIES = {
# "American Football": "sport_68c02a4465113",
"Baseball": "sport_68c02a446582f",
"Basketball": "sport_68c02a4466011",
"Hockey": "sport_68c02a4466f56",
"MMA": "sport_68c02a44674e9",
"Racing": "sport_68c02a4467a48",
"Soccer": "sport_68c02a4464a38",
"Tennis": "sport_68c02a4468cf7",
}
SPORT_ENDPOINTS = [
f"sport_{sport_id}"
for sport_id in [
# "68c02a4465113", # American Football
"68c02a446582f", # Baseball
"68c02a4466011", # Basketball
"68c02a4466f56", # Hockey
"68c02a44674e9", # MMA
"68c02a4467a48", # Racing
"68c02a4464a38", # Soccer
"68c02a4468cf7", # Tennis
]
]
async def refresh_html_cache(
@ -104,7 +107,7 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
now.timestamp(),
)
for date in [now.date(), now.delta(days=1).date()]
for sport_id in CATEGORIES.values()
for sport_id in SPORT_ENDPOINTS.values()
]
results = await asyncio.gather(*tasks)

View file

@ -20,16 +20,19 @@ API_FILE = Cache(f"{TAG}-api", exp=19_800)
BASE_URL = "https://streamingon.org"
SPORT_ENDPOINTS = [
"boxing",
# "cfb",
"f1",
"mlb",
"nba",
# "nfl",
"nhl",
"soccer",
"ufc",
SPORT_URLS = [
urljoin(BASE_URL, f"data/{sport}.json")
for sport in [
"boxing",
# "cfb",
"f1",
"mlb",
"nba",
# "nfl",
"nhl",
"soccer",
"ufc",
]
]
@ -46,13 +49,7 @@ def get_event(t1: str, t2: str) -> str:
async def refresh_api_cache(now_ts: float) -> list[dict[str, Any]]:
tasks = [
network.request(
urljoin(BASE_URL, f"data/{sport}.json"),
log=log,
)
for sport in SPORT_ENDPOINTS
]
tasks = [network.request(url, log=log) for url in SPORT_URLS]
results = await asyncio.gather(*tasks)

View file

@ -0,0 +1,170 @@
import re
from functools import partial
from urllib.parse import urljoin, urlparse
from selectolax.parser import HTMLParser
from .utils import Cache, Time, get_logger, leagues, network
log = get_logger(__name__)
urls: dict[str, dict[str, str | float]] = {}
TAG = "TOTALSPRTK1"
CACHE_FILE = Cache(TAG, exp=28_800)
BASE_URL = "https://live.totalsportekarmy.com"
def fix_txt(s: str) -> str:
s = " ".join(s.split())
return s.upper() if s.islower() else s
async def process_event(url: str, url_num: int) -> str | None:
if not (event_data := await network.request(url, log=log)):
log.warning(f"URL {url_num}) Failed to load url.")
return
soup_1 = HTMLParser(event_data.content)
if not (iframe := soup_1.css_first("iframe")):
log.warning(f"URL {url_num}) No iframe element found.")
return
if not (iframe_url := iframe.attributes.get("src")):
log.warning(f"URL {url_num}) No iframe source found.")
return
if not (iframe_src := await network.request(iframe_url, log=log)):
log.warning(f"URL {url_num}) Failed to load iframe source.")
return
valid_m3u8 = re.compile(r'const\s+hexEncoded\s+=\s+"([^"]*)"', re.I)
if not (match := valid_m3u8.search(iframe_src.text)):
log.warning(f"URL {url_num}) No Clappr source found.")
return
log.info(f"URL {url_num}) Captured M3U8")
return bytes.fromhex(match[1]).decode("utf-8")
async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
events = []
if not (html_data := await network.request(BASE_URL, log=log)):
return events
soup = HTMLParser(html_data.content)
sport = "Live Event"
for node in soup.css("a"):
if not node.attributes.get("class"):
continue
if (parent := node.parent) and "my-1" in parent.attributes.get("class", ""):
if span := node.css_first("span"):
sport = span.text(strip=True)
sport = fix_txt(sport)
if not (teams := [t.text(strip=True) for t in node.css(".col-7 .col-12")]):
continue
if not (href := node.attributes.get("href")):
continue
href = urlparse(href).path if href.startswith("http") else href
if not (time_node := node.css_first(".col-3 span")):
continue
if time_node.text(strip=True).lower() != "matchstarted":
continue
event_name = fix_txt(" vs ".join(teams))
if f"[{sport}] {event_name} ({TAG})" in cached_keys:
continue
events.append(
{
"sport": sport,
"event": event_name,
"link": urljoin(BASE_URL, href),
}
)
return events
async def scrape() -> None:
cached_urls = CACHE_FILE.load()
valid_urls = {k: v for k, v in cached_urls.items() if v["url"]}
valid_count = cached_count = len(valid_urls)
urls.update(valid_urls)
log.info(f"Loaded {cached_count} event(s) from cache")
log.info(f'Scraping from "{BASE_URL}"')
if events := await get_events(cached_urls.keys()):
log.info(f"Processing {len(events)} new URL(s)")
now = Time.clean(Time.now())
for i, ev in enumerate(events, start=1):
handler = partial(
process_event,
url=(link := ev["link"]),
url_num=i,
)
url = await network.safe_process(
handler,
url_num=i,
semaphore=network.HTTP_S,
log=log,
)
sport, event = ev["sport"], ev["event"]
key = f"[{sport}] {event} ({TAG})"
tvg_id, logo = leagues.get_tvg_info(sport, event)
entry = {
"url": url,
"logo": logo,
"base": link,
"timestamp": now.timestamp(),
"id": tvg_id or "Live.Event.us",
"link": link,
}
cached_urls[key] = entry
if url:
valid_count += 1
urls[key] = entry
log.info(f"Collected and cached {valid_count - cached_count} new event(s)")
else:
log.info("No new events found")
CACHE_FILE.write(cached_urls)

View file

@ -11,7 +11,7 @@ log = get_logger(__name__)
urls: dict[str, dict[str, str | float]] = {}
TAG = "TOTALSPRTK"
TAG = "TOTALSPRTK3"
CACHE_FILE = Cache(TAG, exp=28_800)
@ -33,29 +33,29 @@ async def process_event(url: str, url_num: int) -> str | None:
soup_1 = HTMLParser(event_data.content)
if not (iframe_1 := soup_1.css_first("iframe")):
log.warning(f"URL {url_num}) No iframe element found.")
log.warning(f"URL {url_num}) No iframe element found. (IFR1)")
return
if not (iframe_1_src := iframe_1.attributes.get("src")):
log.warning(f"URL {url_num}) No iframe source found.")
log.warning(f"URL {url_num}) No iframe source found. (IFR1)")
return
if not (iframe_1_src_data := await network.request(iframe_1_src, log=log)):
log.warning(f"URL {url_num}) Failed to load iframe source.")
log.warning(f"URL {url_num}) Failed to load iframe source. (IFR1)")
return
soup_2 = HTMLParser(iframe_1_src_data.content)
if not (iframe_2 := soup_2.css_first("iframe")):
log.warning(f"URL {url_num}) No iframe element found.")
log.warning(f"URL {url_num}) No iframe element found. (IFR2)")
return
if not (iframe_2_src := iframe_2.attributes.get("src")):
log.warning(f"URL {url_num}) No iframe source found.")
log.warning(f"URL {url_num}) No iframe source found. (IFR2)")
return
@ -66,14 +66,14 @@ async def process_event(url: str, url_num: int) -> str | None:
headers={"Referer": iframe_1_src},
)
):
log.warning(f"URL {url_num}) Failed to load iframe source.")
log.warning(f"URL {url_num}) Failed to load iframe source. (IFR2)")
return
valid_m3u8 = re.compile(r'currentStreamUrl\s+=\s+"([^"]*)"', re.I)
if not (match := valid_m3u8.search(iframe_2_src_data.text)):
log.warning(f"URL {url_num}) No Clappr source found.")
log.warning(f"URL {url_num}) No Clappr source found. (IFR2)")
return

View file

@ -194,6 +194,13 @@ class Leagues:
else self.info("Hockey")
)
case "Baseball" | "MLB":
return (
self.info("MLB")
if self.is_valid(event, "MLB")
else self.info("Baseball")
)
case _:
return self.info(sport)

View file

@ -1,5 +1,13 @@
{
"leagues": {
"Baseball.Dummy.us": [
{
"BASEBALL": {
"logo": "https://i.gyazo.com/3e1119df65dee3290afdad55b84ac332.webp",
"names": ["WBC", "WORLD BASEBALL CLASSIC"]
}
}
],
"Basketball.Dummy.us": [
{
"BASKETBALL": {
@ -40,7 +48,7 @@
{
"MLB": {
"logo": "https://a.espncdn.com/combiner/i?img=/i/teamlogos/leagues/500/mlb.png",
"names": ["BASEBALL", "MAJOR LEAGUE BASEBALL", "MLB PLAYOFFS"]
"names": ["MAJOR LEAGUE BASEBALL", "MLB PLAYOFFS"]
}
}
],
@ -827,6 +835,102 @@
]
},
"teams": {
"MLB": [
"Angels",
"Arizona",
"Arizona Diamondbacks",
"Astros",
"Athletics",
"Atlanta",
"Atlanta Braves",
"Baltimore",
"Baltimore Orioles",
"Blue Jays",
"Boston",
"Boston Red Sox",
"Braves",
"Cardinals",
"Chicago",
"Chicago Cubs",
"Chicago White Sox",
"Cincinnati",
"Cincinnati Reds",
"Cleveland Guardians",
"Colorado",
"Colorado Rockies",
"Cubs",
"D-Backs",
"DBacks",
"Detroit",
"Detroit Tigers",
"Diamondbacks",
"Dodgers",
"Giants",
"Guardians",
"Houston",
"Houston Astros",
"Jays",
"KC Royals",
"Kansas City",
"Kansas City Royals",
"LA Angels",
"LA Dodgers",
"Los Angeles Angels",
"Los Angeles Dodgers",
"Mariners",
"Marlins",
"Mets",
"Miami",
"Miami Marlins",
"Minnesota",
"Minnesota Twins",
"NY Mets",
"NY Yankees",
"NYM",
"NYY",
"Nationals",
"New York",
"New York Mets",
"New York Yankees",
"Oakland",
"Oakland Athletics",
"Orioles",
"Padres",
"Philadelphia",
"Philadelphia Phillies",
"Phillies",
"Pirates",
"Pittsburgh",
"Pittsburgh Pirates",
"Rangers",
"Rays",
"Red Sons",
"Reds",
"Rockies",
"Royals",
"San Diego",
"San Diego Padres",
"San Francisco",
"San Francisco Giants",
"Seattle",
"Seattle Mariners",
"St Louis",
"St Louis Cardinals",
"St. Louis",
"St. Louis Cardinals",
"Tampa Bay",
"Tampa Bay Rays",
"Texas",
"Texas Rangers",
"Tigers",
"Toronto",
"Toronto Blue Jays",
"Twins",
"Washington",
"Washington Nationals",
"White Sox",
"Yankees"
],
"NBA": [
"76ers",
"Atlanta",

View file

@ -17,10 +17,14 @@ CACHE_FILE = Cache(TAG, exp=19_800)
BASE_URL = "http://volokit.xyz"
SPORT_ENDPOINTS = {
"mlb": "MLB",
# "nfl": "NFL",
"nhl": "NHL",
SPORT_URLS = {
sport: urljoin(BASE_URL, f"sport/{sport.lower()}/")
for sport in [
"MLB",
"NHL",
# "NFL",
"WBC",
]
}
@ -70,11 +74,7 @@ async def process_event(url: str, url_num: int) -> str | None:
async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
sport_urls = {
sport.upper(): urljoin(BASE_URL, f"sport/{sport}/") for sport in SPORT_ENDPOINTS
}
tasks = [network.request(url, log=log) for url in sport_urls.values()]
tasks = [network.request(url, log=log) for url in SPORT_URLS.values()]
results = await asyncio.gather(*tasks)
@ -95,7 +95,7 @@ async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
name = fix_event(name_node.text(strip=True))
sport = next((k for k, v in sport_urls.items() if v == url), "Live Event")
sport = next((k for k, v in SPORT_URLS.items() if v == url), "Live Event")
if f"[{sport}] {name} ({TAG})" in cached_keys:
continue

View file

@ -17,14 +17,17 @@ CACHE_FILE = Cache(TAG, exp=10_800)
BASE_URL = "https://xstreameast.com"
SPORT_ENDPOINTS = [
# "mlb",
"mma",
"nba",
# "nfl",
# "nhl",
"soccer",
"wwe",
SPORT_URLS = [
urljoin(BASE_URL, f"categories/{sport}/")
for sport in [
# "mlb",
"mma",
"nba",
# "nfl",
# "nhl",
"soccer",
"wwe",
]
]
@ -66,13 +69,7 @@ async def process_event(url: str, url_num: int) -> tuple[str | None, str | None]
async def get_events(cached_keys: list[str]) -> list[dict[str, str]]:
tasks = [
network.request(
urljoin(BASE_URL, f"categories/{sport}/"),
log=log,
)
for sport in SPORT_ENDPOINTS
]
tasks = [network.request(url, log=log) for url in SPORT_URLS]
results = await asyncio.gather(*tasks)

View file

@ -1,11 +1,21 @@
## Base Log @ 2026-03-04 09:02 UTC
## Base Log @ 2026-03-05 09:05 UTC
### ✅ Working Streams: 159<br>❌ Dead Streams: 2
### ✅ Working Streams: 149<br>❌ Dead Streams: 12
| Channel | Error (Code) | Link |
| ------- | ------------ | ---- |
| Altitude Sports | HTTP Error (403) | `http://hardcoremedia.xyz/live/rabdsbmz/3731346838/141447.ts` |
| Space City Home Network | HTTP Error (403) | `http://hardcoremedia.xyz/live/rabdsbmz/3731346838/229934.ts` |
| Altitude Sports | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/79545.m3u8` |
| CNBC | HTTP Error (404) | `http://41.205.93.154/CNBC/index.m3u8` |
| Cozi TV | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/11868.m3u8` |
| Discovery Family Channel | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/57347.m3u8` |
| FDSN Florida | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/46794.m3u8` |
| FDSN Oklahoma | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/20934.m3u8` |
| FDSN SoCal | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/221151.m3u8` |
| FDSN Wisconsin | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/78599.m3u8` |
| NHL Network | HTTP Error (000) | `http://mytvstream.net:8080/live/30550113/30550113/20179.m3u8` |
| Smithsonian Channel | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/31150.m3u8` |
| Space City Home Network | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/213668.m3u8` |
| SportsNet Pittsburgh | HTTP Error (403) | `http://mytvstream.net:8080/live/30550113/30550113/108178.m3u8` |
---
#### Base Channels URL
```