mirror of
https://github.com/doms9/iptv.git
synced 2026-03-06 11:08:25 +01:00
Compare commits
34 commits
b6abb9371f
...
12918042b7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12918042b7 | ||
|
|
2adbb9e81a | ||
|
|
4ec3a47c3a | ||
|
|
62c0eff318 | ||
|
|
ca26b057a1 | ||
|
|
a2c2dd4925 | ||
|
|
3bbb3731ad | ||
|
|
cfbd90e7d3 | ||
|
|
c0b39fa011 | ||
|
|
afa1a8c966 | ||
|
|
fb0aaee81b | ||
|
|
96421b7217 | ||
|
|
1deb6a2daf | ||
|
|
f9ab0e9d24 | ||
|
|
00000d9eed | ||
|
|
b2f11e6da5 | ||
|
|
c416ba1a78 | ||
|
|
2828452ac7 | ||
|
|
6db07997be | ||
|
|
fe2bc9f055 | ||
|
|
e1f9b85c87 | ||
|
|
92de8ffdcd | ||
|
|
92d6c492be | ||
|
|
3de82cc902 | ||
|
|
91c305331a | ||
|
|
0d43d58461 | ||
|
|
370a74e1cf | ||
|
|
b795342ad4 | ||
|
|
f114d1000b | ||
|
|
b4dce214bd | ||
|
|
71491aa64b | ||
|
|
e844ca4ced | ||
|
|
cce93e9cf9 | ||
|
|
029e0fb210 |
16 changed files with 181657 additions and 178003 deletions
2714
M3U8/TV.m3u8
2714
M3U8/TV.m3u8
File diff suppressed because it is too large
Load diff
353771
M3U8/TV.xml
353771
M3U8/TV.xml
File diff suppressed because one or more lines are too long
|
|
@ -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
|
||||
|
|
|
|||
2618
M3U8/events.m3u8
2618
M3U8/events.m3u8
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]]:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
170
M3U8/scrapers/totalsportek1.py
Normal file
170
M3U8/scrapers/totalsportek1.py
Normal 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)
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
18
readme.md
18
readme.md
|
|
@ -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
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue