diff --git a/M3U8/Base.m3u8 b/M3U8/Base.m3u8 new file mode 100644 index 0000000..21c8605 --- /dev/null +++ b/M3U8/Base.m3u8 @@ -0,0 +1,199 @@ +#EXTM3U url-tvg="https://raw.githubusercontent.com/doms9/iptv/refs/heads/default/EPG/TV.xml" + +#EXTINF:-1 tvg-chno="1" tvg-id="ABC.(WABC).New.York,.NY.us" 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://tv14s.xyz:8080/A1Jay5/362586/121139 + +#EXTINF:-1 tvg-chno="2" tvg-id="ACC.Network.us" tvg-name="ACC Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s111871_dark_360w_270h.png" group-title="TV",ACC Network +http://tv14s.xyz:8080/A1Jay5/362586/9273 + +#EXTINF:-1 tvg-chno="3" tvg-id="AMC.-.Eastern.Feed.us" 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://tv14s.xyz:8080/A1Jay5/362586/18925 + +#EXTINF:-1 tvg-chno="4" tvg-id="BET.-.Eastern.Feed.us" tvg-name="BET" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10051_dark_360w_270h.png" group-title="TV",BET +http://origin.thetvapp.to/hls/BETEast/mono.m3u8 + +#EXTINF:-1 tvg-chno="5" tvg-id="Big.Ten.Network.us" tvg-name="Big Ten Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s56783_dark_360w_270h.png" group-title="TV",Big Ten Network +http://tv14s.xyz:8080/A1Jay5/362586/9828 + +#EXTINF:-1 tvg-chno="6" tvg-id="Boomerang.us" tvg-name="Boomerang" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s21883_dark_360w_270h.png" group-title="TV",Boomerang +http://origin.thetvapp.to/hls/Boomerang/mono.m3u8 + +#EXTINF:-1 tvg-chno="7" tvg-id="Cartoon.Network.USA.-.Eastern.Feed.us" tvg-name="Cartoon Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s12131_dark_360w_270h.png" group-title="TV",Cartoon Network +http://tv14s.xyz:8080/A1Jay5/362586/46708 + +#EXTINF:-1 tvg-chno="8" tvg-id="CBS.(WCBS).New.York,.NY.us" tvg-name="CBS" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10098_dark_360w_270h.png" group-title="TV",CBS +http://tv14s.xyz:8080/A1Jay5/362586/120749 + +#EXTINF:-1 tvg-chno="9" tvg-id="CBS.Sports.Network.USA.us" tvg-name="CBS Sports Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16365_dark_360w_270h.png" group-title="TV",CBS Sports Network +http://tv14s.xyz:8080/A1Jay5/362586/10454 + +#EXTINF:-1 tvg-chno="10" tvg-id="CNBC.USA.us" tvg-name="CNBC" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10139_dark_360w_270h.png" group-title="TV",CNBC +http://origin.thetvapp.to/hls/CNBC/mono.m3u8 + +#EXTINF:-1 tvg-chno="11" tvg-id="CNN.us" tvg-name="CNN" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s58646_dark_360w_270h.png" group-title="TV",CNN +https://turnerlive.warnermediacdn.com/hls/live/586495/cnngo/cnn_slate/VIDEO_0_3564000.m3u8 + +#EXTINF:-1 tvg-chno="12" tvg-id="Comedy.Central.(US).-.Eastern.Feed.us" tvg-name="Comedy Central" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10149_dark_360w_270h.png" group-title="TV",Comedy Central +http://origin.thetvapp.to/hls/ComedyCentralEast/mono.m3u8 + +#EXTINF:-1 tvg-chno="13" tvg-id="WPIX.New.York.(SUPERSTATION).us" tvg-name="CW" tvg-logo="https://i.gyazo.com/afd5b481b327d204087dfde6a7741f9d.png" group-title="TV",CW +http://user.scalecdn.co:8080/live/26725074/92867131/93093.m3u8 + +#EXTINF:-1 tvg-chno="14" tvg-id="Discovery.Channel.(US).-.Eastern.Feed.us" tvg-name="Discovery Channel" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11150_dark_360w_270h.png" group-title="TV",Discovery Channel +http://tv14s.xyz:8080/A1Jay5/362586/46720 + +#EXTINF:-1 tvg-chno="15" tvg-id="Disney.-.Eastern.Feed.us" tvg-name="Disney" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10171_dark_360w_270h.png" group-title="TV",Disney +http://tv14s.xyz:8080/A1Jay5/362586/2206 + +#EXTINF:-1 tvg-chno="16" tvg-id="Disney.XD.USA.-.Eastern.Feed.us" tvg-name="Disney XD" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s18279_dark_360w_270h.png" group-title="TV",Disney XD +http://tv14s.xyz:8080/A1Jay5/362586/75621 + +#EXTINF:-1 tvg-chno="17" tvg-id="E!.Entertainment.USA.-.Eastern.Feed.us" tvg-name="E!" tvg-logo="https://i.gyazo.com/f73b80e3eb56cec06df6705d00e2f422.png" group-title="TV",E! +http://origin.thetvapp.to/hls/EEast/mono.m3u8 + +#EXTINF:-1 tvg-chno="18" tvg-id="ESPN.us" tvg-name="ESPN" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10179_dark_360w_270h.png" group-title="TV",ESPN +http://tv14s.xyz:8080/A1Jay5/362586/14197 + +#EXTINF:-1 tvg-chno="19" tvg-id="ESPN.News.us" tvg-name="ESPN News" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16485_dark_360w_270h.png" group-title="TV",ESPN News +http://tv14s.xyz:8080/A1Jay5/362586/17707 + +#EXTINF:-1 tvg-chno="20" tvg-id="ESPN.U.us" tvg-name="ESPN U" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s45654_dark_360w_270h.png" group-title="TV",ESPN U +http://tv14s.xyz:8080/A1Jay5/362586/10255 + +#EXTINF:-1 tvg-chno="21" tvg-id="ESPN2.us" tvg-name="ESPN2" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s12444_dark_360w_270h.png" group-title="TV",ESPN2 +http://origin.thetvapp.to/hls/ESPN2/mono.m3u8 + +#EXTINF:-1 tvg-chno="22" tvg-id="FanDuel.Sports.Network.Detroit.24/7.HDTV.us" tvg-name="FDSN Detroit" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s54286_dark_360w_270h.png" group-title="TV",FDSN Detroit +http://tv14s.xyz:8080/A1Jay5/362586/20936 + +#EXTINF:-1 tvg-chno="23" tvg-id="FanDuel.Sports.Network.North.HDTV.us" tvg-name="FDSN North" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10977_dark_360w_270h.png" group-title="TV",FDSN North +http://tv14s.xyz:8080/A1Jay5/362586/58827 + +#EXTINF:-1 tvg-chno="24" tvg-id="FanDuel.Sports.Network.Oklahoma.24/7.HDTV.(Tulsa).us" tvg-name="FDSN Oklahoma" tvg-logo="https://i.gyazo.com/80ad6fd142cd67f06eef58d9ce5aa72b.png" group-title="TV",FDSN Oklahoma +http://tv14s.xyz:8080/A1Jay5/362586/20934 + +#EXTINF:-1 tvg-chno="25" tvg-id="FanDuel.Sports.Network.Southwest.HDTV.24/7.(Main).us" tvg-name="FDSN Southwest" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s59629_dark_360w_270h.png" group-title="TV",FDSN Southwest +http://tv14s.xyz:8080/A1Jay5/362586/21843 + +#EXTINF:-1 tvg-chno="26" tvg-id="FanDuel.Sports.Network.West.HDTV.us" tvg-name="FDSN West" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s59627_dark_360w_270h.png" group-title="TV",FDSN West +http://tv14s.xyz:8080/A1Jay5/362586/20932 + +#EXTINF:-1 tvg-chno="27" tvg-id="FOX.(WNYW).New.York,.NY.us" tvg-name="Fox" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s28719_dark_360w_270h.png" group-title="TV",Fox +http://tv14s.xyz:8080/A1Jay5/362586/120750 + +#EXTINF:-1 tvg-chno="28" tvg-id="Fox.News.us" tvg-name="Fox News" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16374_dark_360w_270h.png" group-title="TV",Fox News +https://stream.livenewsplay.com:9443/hls/foxnews/foxsd.m3u8 + +#EXTINF:-1 tvg-chno="29" tvg-id="Fox.Sports.1.us" tvg-name="Fox Sports 1" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s82541_dark_360w_270h.png" group-title="TV",Fox Sports 1 +http://23.237.104.106:8080/USA_FS1/index.m3u8 + +#EXTINF:-1 tvg-chno="30" tvg-id="Fox.Sports.2.us" tvg-name="Fox Sports 2" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s33178_dark_360w_270h.png" group-title="TV",Fox Sports 2 +http://23.237.104.106:8080/USA_FS2/index.m3u8 + +#EXTINF:-1 tvg-chno="31" tvg-id="FUSE.TV.-.Eastern.feed.us" tvg-name="FUSE" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14929_dark_360w_270h.png" group-title="TV",FUSE +http://origin.thetvapp.to/hls/FuseEast/mono.m3u8 + +#EXTINF:-1 tvg-chno="32" tvg-id="FX.Networks.East.Coast.us" tvg-name="FX" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14321_dark_360w_270h.png" group-title="TV",FX +http://tv14s.xyz:8080/A1Jay5/362586/46690 + +#EXTINF:-1 tvg-chno="33" tvg-id="FX.Movie.Channel.us" tvg-name="FX Movie Channel" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s70253_dark_360w_270h.png" group-title="TV",FX Movie Channel +http://origin.thetvapp.to/hls/FXMovieChannel/mono.m3u8 + +#EXTINF:-1 tvg-chno="34" tvg-id="FXX.USA.-.Eastern.us" 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://tv14s.xyz:8080/A1Jay5/362586/46699 + +#EXTINF:-1 tvg-chno="35" tvg-id="Game.Show.Network.-.East.us" tvg-name="Game Show Network" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s14909_dark_360w_270h.png" group-title="TV",Game Show Network +http://tv14s.xyz:8080/A1Jay5/362586/120633 + +#EXTINF:-1 tvg-chno="36" tvg-id="HBO.-.Eastern.Feed.us" tvg-name="HBO" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10240_dark_360w_270h.png" group-title="TV",HBO +http://tv14s.xyz:8080/A1Jay5/362586/46713 + +#EXTINF:-1 tvg-chno="37" tvg-id="ION..-.Eastern.Feed.us" 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://tv14s.xyz:8080/A1Jay5/362586/9297 + +#EXTINF:-1 tvg-chno="38" tvg-id="Marquee.Sports.Network.us" 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://tv14s.xyz:8080/A1Jay5/362586/13379 + +#EXTINF:-1 tvg-chno="39" tvg-id="MLB.Network.us" 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://tv14s.xyz:8080/A1Jay5/362586/21360 + +#EXTINF:-1 tvg-chno="40" tvg-id="MSG.(Madison.Square.Gardens).us" 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://cord-cutter.net:8080/k4Svp2/645504/21090 + +#EXTINF:-1 tvg-chno="41" tvg-id="MSNBC.USA.us" tvg-name="MSNBC" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s16300_dark_360w_270h.png" group-title="TV",MSNBC +http://origin.thetvapp.to/hls/MSNBC/mono.m3u8 + +#EXTINF:-1 tvg-chno="42" tvg-id="NBA.TV.USA.us" tvg-name="NBA TV" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s32281_dark_360w_270h.png" group-title="TV",NBA TV +http://origin.thetvapp.to/hls/NBATV/mono.m3u8 + +#EXTINF:-1 tvg-chno="43" tvg-id="NBC.(WNBC).New.York,.NY.us" tvg-name="NBC" tvg-logo="https://i.gyazo.com/39d42952500205d04e448247b7889256.png" group-title="TV",NBC +http://tv14s.xyz:8080/A1Jay5/362586/120751 + +#EXTINF:-1 tvg-chno="44" tvg-id="NBC.Sports.Boston.us" tvg-name="NBC Sports Boston" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s49198_dark_360w_270h.png" group-title="TV",NBC Sports Boston +http://tv14s.xyz:8080/A1Jay5/362586/20939 + +#EXTINF:-1 tvg-chno="45" tvg-id="NBC.Sports.Philadelphia.HDTV.(NBCSPAHD).us" tvg-name="NBC Sports Philadelphia" tvg-logo="https://i.gyazo.com/c5204722cef60da756f1b994d6d71c28.png" group-title="TV",NBC Sports Philadelphia +http://tv14s.xyz:8080/A1Jay5/362586/20943 + +#EXTINF:-1 tvg-chno="46" tvg-id="The.NFL.Network.us" tvg-name="NFL Network" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/nfl-network-hz-us.png" group-title="TV",NFL Network +http://tv14s.xyz:8080/A1Jay5/362586/159117 + +#EXTINF:-1 tvg-chno="47" tvg-id="NFL.RedZone.us" tvg-name="NFL RedZone" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/nfl-red-zone-hz-us.png" group-title="TV",NFL RedZone +http://tv14s.xyz:8080/A1Jay5/362586/208830 + +#EXTINF:-1 tvg-chno="48" tvg-id="NHL.Network.USA.us" 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://tv14s.xyz:8080/A1Jay5/362586/20179 + +#EXTINF:-1 tvg-chno="49" tvg-id="Nickelodeon.USA.-.East.Feed.us" tvg-name="Nickelodeon" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11006_dark_360w_270h.png" group-title="TV",Nickelodeon +http://tv14s.xyz:8080/A1Jay5/362586/38 + +#EXTINF:-1 tvg-chno="50" tvg-id="Nicktoons.-.East.us" tvg-name="Nicktoons" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s30420_dark_360w_270h.png" group-title="TV",Nicktoons +http://origin.thetvapp.to/hls/NicktoonsEast/mono.m3u8 + +#EXTINF:-1 tvg-chno="51" tvg-id="Root.Sports.Northwest.us" tvg-name="Root Sports" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11062_dark_360w_270h.png" group-title="TV",Root Sports +http://tv14s.xyz:8080/A1Jay5/362586/85232 + +#EXTINF:-1 tvg-chno="52" tvg-id="SEC.Network.us" tvg-name="SEC Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s89535_dark_360w_270h.png" group-title="TV",SEC Network +http://origin.thetvapp.to/hls/SECN/mono.m3u8 + +#EXTINF:-1 tvg-chno="53" tvg-id="Paramount+.with.Showtime.-.Eastern.Feed.us" tvg-name="Showtime" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/refs/heads/main/countries/united-states/showtime-us.png" group-title="TV",Showtime +http://origin.thetvapp.to/hls/ShowtimeEast/mono.m3u8 + +#EXTINF:-1 tvg-chno="54" tvg-id="SNY:.SportsNet.New.York.(Comcast).us" tvg-name="SportsNet New York" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s50038_dark_360w_270h.png" group-title="TV",SportsNet New York +http://origin.thetvapp.to/hls/sny-sportsnet-new-york-comcast/mono.m3u8 + +#EXTINF:-1 tvg-chno="55" tvg-id="Sportsnet.One.ca" tvg-name="Sportsnet One" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s68859_dark_360w_270h.png" group-title="TV",Sportsnet One +http://tv14s.xyz:8080/A1Jay5/362586/10247 + +#EXTINF:-1 tvg-chno="56" tvg-id="SportsNet.Pittsburgh.us" 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://tv14s.xyz:8080/A1Jay5/362586/108178 + +#EXTINF:-1 tvg-chno="57" tvg-id="Starz.-.Eastern.us" 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://tv14s.xyz:8080/A1Jay5/362586/9299 + +#EXTINF:-1 tvg-chno="58" tvg-id="Syfy.-.Eastern.Feed.us" tvg-name="Syfy" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11097_dark_360w_270h.png" group-title="TV",Syfy +http://tv14s.xyz:8080/A1Jay5/362586/46685 + +#EXTINF:-1 tvg-chno="59" tvg-id="TBS.-.East.us" tvg-name="TBS" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11867_dark_360w_270h.png" group-title="TV",TBS +https://turnerlive.warnermediacdn.com/hls/live/2023172/tbseast/slate/VIDEO_0_3564000.m3u8 + +#EXTINF:-1 tvg-chno="60" tvg-id="TLC.USA.-.Eastern.us" tvg-name="TLC" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11158_dark_360w_270h.png" group-title="TV",TLC +http://tv14s.xyz:8080/A1Jay5/362586/12734 + +#EXTINF:-1 tvg-chno="61" tvg-id="TNT.-.Eastern.Feed.us" tvg-name="TNT" tvg-logo="https://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 + +#EXTINF:-1 tvg-chno="62" tvg-id="truTV.USA.-.Eastern.us" tvg-name="truTV" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s10153_dark_360w_270h.png" group-title="TV",truTV +https://turnerlive.warnermediacdn.com/hls/live/2023176/trueast/slate/VIDEO_0_3564000.m3u8 + +#EXTINF:-1 tvg-chno="63" tvg-id="TSN1.ca" tvg-name="TSN1" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11182_dark_360w_270h.png" group-title="TV",TSN1 +http://tv14s.xyz:8080/A1Jay5/362586/57292 + +#EXTINF:-1 tvg-chno="64" tvg-id="TSN2.ca" tvg-name="TSN2" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s61474_dark_360w_270h.png" group-title="TV",TSN2 +http://origin.thetvapp.to/hls/tsn2/mono.m3u8 + +#EXTINF:-1 tvg-chno="65" tvg-id="USA.Network.-.Eastern.Feed.us" tvg-name="USA East" tvg-logo="https://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s11207_dark_360w_270h.png" group-title="TV",USA East +http://4c66041f.tvclub.xyz/iptv/E3TZUWKUS8PTA7/31124/index.m3u8 + +#EXTINF:-1 tvg-chno="66" tvg-id="YES.Network.us" tvg-name="YES Network" tvg-logo="http://schedulesdirect-api20141201-logos.s3.dualstack.us-east-1.amazonaws.com/stationLogos/s30017_dark_360w_270h.png" group-title="TV",YES Network +http://origin.thetvapp.to/hls/yes-network/mono.m3u8 diff --git a/M3U8/fetch.py b/M3U8/fetch.py index 042b571..da514e9 100644 --- a/M3U8/fetch.py +++ b/M3U8/fetch.py @@ -2,39 +2,29 @@ import asyncio from pathlib import Path -import httpx from scrapers import fstv, livetvsx, ppv, streambtw, streameast, tvpass -from scrapers.utils import UA, get_logger +from scrapers.utils import CLIENT, UA, get_logger log = get_logger(__name__) -BASE_URL = "https://s.id/ePwXT" +BASE_FILE = Path(__file__).parent / "Base.m3u8" M3U8_FILE = Path(__file__).parent / "TV.m3u8" -CLIENT = httpx.AsyncClient( - timeout=5, - follow_redirects=True, - headers={"User-Agent": UA}, -) - -async def vanilla_fetch() -> tuple[list[str], int]: +def vanilla_fetch() -> tuple[list[str], int]: log.info("Fetching base M3U8") - try: - r = await CLIENT.get(BASE_URL) - r.raise_for_status() - except Exception as e: - log.error(f'Failed to fetch "{BASE_URL}"\n{e}') - raise SystemExit(e) from e + data = BASE_FILE.read_text(encoding="utf-8") - last_chnl_num = int(r.text.split("tvg-chno=")[-1].split('"')[1]) + last_chnl_num = int(data.split("tvg-chno=")[-1].split('"')[1]) - return r.text.splitlines()[1:], last_chnl_num + return data.splitlines(), last_chnl_num async def main() -> None: + base_m3u8, tvg_chno = vanilla_fetch() + tasks = [ asyncio.create_task(fstv.main(CLIENT)), asyncio.create_task(livetvsx.main(CLIENT)), @@ -42,12 +32,9 @@ async def main() -> None: asyncio.create_task(streambtw.main(CLIENT)), asyncio.create_task(streameast.main(CLIENT)), asyncio.create_task(tvpass.main(CLIENT)), - vanilla_fetch(), ] - results = await asyncio.gather(*tasks) - - base_m3u8, tvg_chno = results[-1] + await asyncio.gather(*tasks) additions = ( fstv.urls @@ -74,15 +61,7 @@ async def main() -> None: ) ) - m3u8_content = "\n".join( - [ - '#EXTM3U url-tvg="https://raw.githubusercontent.com/doms9/iptv/refs/heads/default/EPG/TV.xml"\n' - ] - + base_m3u8 - + live_events - ) - - M3U8_FILE.write_text(m3u8_content, encoding="utf-8") + M3U8_FILE.write_text("\n".join(base_m3u8 + live_events), encoding="utf-8") log.info(f"M3U8 saved to {M3U8_FILE.name}") diff --git a/M3U8/scrapers/utils/__init__.py b/M3U8/scrapers/utils/__init__.py index a090b51..079753d 100644 --- a/M3U8/scrapers/utils/__init__.py +++ b/M3U8/scrapers/utils/__init__.py @@ -1,9 +1,10 @@ from .cache import load_cache, write_cache from .config import LOGOS, TZ, UA, now from .logger import get_logger -from .network import capture_req, get_base, new_browser, safe_process_event +from .network import CLIENT, capture_req, get_base, new_browser, safe_process_event __all__ = [ + "CLIENT", "LOGOS", "TZ", "UA", diff --git a/M3U8/scrapers/utils/network.py b/M3U8/scrapers/utils/network.py index ca8ac39..36ce186 100644 --- a/M3U8/scrapers/utils/network.py +++ b/M3U8/scrapers/utils/network.py @@ -9,6 +9,12 @@ from playwright.async_api import Browser, BrowserContext, Playwright, Request from .config import UA +CLIENT = httpx.AsyncClient( + timeout=5, + follow_redirects=True, + headers={"User-Agent": UA}, +) + async def check_status(client: httpx.AsyncClient, url: str) -> bool: try: diff --git a/health.sh b/health.sh index 97d4ab9..093cb6b 100644 --- a/health.sh +++ b/health.sh @@ -1,5 +1,5 @@ #!/bin/bash -base_url="https://s.id/ePwXT" +base_file="./M3U8/Base.m3u8" UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0" MAX_JOBS=10 RETRY_COUNT=3 @@ -59,10 +59,9 @@ get_status() { } check_links() { - echo "Checking links from: $base_url" + echo "Checking links from: $base_file" channel_num=0 name="" - jobs_running=0 echo "| Channel | Error (Code) | Link |" >"$STATUSLOG" echo "| ------- | ------------ | ---- |" >>"$STATUSLOG" @@ -78,7 +77,7 @@ check_links() { get_status "$line" "$name" & ((channel_num++)) fi - done < <(curl -sL -A "$UA" "$base_url") + done < <(cat "$base_file") wait echo "Done."