diff --git a/FGBLH/Nettv.txt b/FGBLH/Nettv.txt new file mode 100644 index 00000000..0e98bb4a --- /dev/null +++ b/FGBLH/Nettv.txt @@ -0,0 +1,144 @@ +nettv亞洲,#genre# +香港衛視,https://www.hkstv.tv/api/m3u8-proxy?url=http%3A%2F%2Fwebcast.hkstv.tv%2Flivestream%2Fmutfysrq%2Fplaylist.m3u8 +China Travel,https://amg01314-amg01314c7-distrotv-us-10219.playouts.now.amagi.tv/playlist/amg01314-cgtn-cgtnchinatravel-distrotvus/playlist.m3u8 +MBO TV,https://1777604606.rsc.cdn77.org/1777604606/index.m3u8 +環球綜合頻道,http://utv1.hqtvzb.com:9999/hls/world.m3u8 +面包台,https://video.bread-tv.com:8091/hls-live24/online/index.m3u8 +耀才財經台,https://v3.mediacast.hk/webcast/bshdlive-pc/playlist.m3u8 +GSTV,https://rch01e-alive-hls.akamaized.net/15bcd044c531aa99/out/v1/339db39dc83c421f94a8cebb777e4d02/index.m3u8 +Gujarati News,https://cdnplay.peanutsquare.com/560828843292539228453915.m3u8 +CGTN,https://english-livetx.cgtn.com/hls/yypdyyctzb_hd.m3u8 +CNA,https://amg01082-cna-amg01082c1-rlaxx-us-11304.playouts.now.amagi.tv/playlist.m3u8 +Maah TV,https://hls.maahtv.live/hls/stream.m3u8 +CNA Insider,https://amg01082-cna-amg01082c1-rlaxx-us-11304.playouts.now.amagi.tv/playlist.m3u8 +Channel News Asia,https://d2e1asnsl7br7b.cloudfront.net/7782e205e72f43aeb4a48ec97f66ebbe/index_5.m3u8 +九州朝日放送,https://livetv.fastv.jp/channel_assembly/696090F573F51039B31F/master.m3u8 +時代劇専門チャンネル HD,https://livetv.fastv.jp/channel_assembly/696074B664B80F46A876/master.m3u8 +Bloomberg Mongolia,https://cdn3.skygo.mn/live/disk1/BloombergMon/HLS-FTA/BloombergMon.m3u8 +好消息真理台,https://akamai-live.akamaized.net/osmflivech2.m3u8 +好消息綜合台,https://akamai-live.akamaized.net/osmflivech1.m3u8 +希望電視台,https://videodelivery.net/07c709813199692f475a30a22afa1c5a/manifest/video.m3u8 +原住民族電視台,https://live.wcetv.com/hls/master-titv.m3u8 +客家電視台,https://live.wcetv.com/hls/master-hakkatv.m3u8 +紅豆電視台,https://hls.hongdou.com.tw/redbeanlife-hongdou/hongdou-001/playlist.m3u8 +大立電視台,http://www.dalitv.com.tw:4568/live/dali/index.m3u8 +人間衛視,https://5ddce30eb4b55.streamlock.net/bltvhd/bltv1/playlist.m3u8 +孝廉文化網路電視台,https://cdn257.ccdntech.com/live-http/_definst_/vod257_Live/live/playlist.m3u8 +ETTV America,http://udnhls.skilldns.com:80/dsmz.m3u8 +PET CLUB TV,https://cdn-apse1-prod.tsv2.amagi.tv/linear/amg01076-lightningintern-petclub-samsungnz/playlist.m3u8 +東森美洲新聞台,http://udnhls.skilldns.com:80/dsxw.m3u8 +儒釋道電視台,https://js1.amtb.cn/liveedge/_definst_/livetv/playlist.m3u8 +唯心電視台,https://mobile.ccdntech.com/transcoder/_definst_/vod164_Live/live/playlist.m3u8 +東森購物CH60,https://broadcast-ettoday.cdn.hinet.net/ettoday-broadcast/smil:etmall2.smil/playlist.m3u8 +東森購物CH47,https://broadcast-ettoday.cdn.hinet.net/ettoday-broadcast/smil:etmall4.smil/playlist.m3u8 +東森購物CH34,https://broadcast-ettoday.cdn.hinet.net/ettoday-broadcast/smil:etmall3.smil/playlist.m3u8 +東森購物CH46,https://broadcast-ettoday.cdn.hinet.net/ettoday-broadcast/smil:etmall1.smil/playlist.m3u8 +CGTN Español,https://espanol-liveali.cgtn.com/hls/LSveOGBaBw41Ea7ukkVAUdKQ220802LSTexu6xAuFH8VZNBLE1ZNEa220802cd/playlist.m3u8 +CGTN Français,https://francais-livews.cgtn.com/hls/LSvev95OuFZtKLc6CeKEFYXj220802LSTeV6PO0Ut9r71Uq3k5goCA220802cd/playlist.m3u8 +CGTN Pусский,https://russian-liveali.cgtn.com/hls/LSvexABhNipibK5KRuUkvHZ7220802LSTeze9o8tdFXMHsb1VosgoT220802cd/playlist.m3u8? +CGTN العربية,https://arabic-liveali.cgtn.com/hls/LSveq57bErWLinBnxosqjisZ220802LSTefTAS9zc9mpU08y3np9TH220802cd/playlist.m3u8 +Baby shark,https://newidco-babysharktv-1-us.roku.wurl.tv/playlist.m3u8 +凯里电视台,http://p8.vzan.com/slowlive/298070663345038269/live.m3u8 +清远综合频道,https://vlivestream.qyrb.cn/qyLiveSlow/74.m3u8 +黔东南综合频道,https://p8.vzan.com/slowlive/318019210178764204/live.m3u8 +兰州新闻综合频道,https://liveplus.lzr.com.cn/xwzh/HD/live.m3u8 +Matrix TV,https://stream.matrixtv.id/hls/stream.m3u8 +韶关新闻综合频道,https://www.sgmsw.cn/videos/tv/201805/1308/SB05RIYZOU8JR418AUQOF62CAJQ08D0E/hls/live.m3u8 +MNB World,https://live.mnb.mn/hls/mnb_world.stream.m3u8 +Hidabroot Channel,https://cdn.cybercdn.live/HidabrootIL/Live97/playlist.m3u8 +镇江新闻综合频道,https://zjtv-wshls.homecdn.com/live/2aa50.m3u8 +镇江教育民生频道,https://zjtv-wshls.homecdn.com/live/2aa16.m3u8 +嘉定区电视台,https://5730.liveplay.myqcloud.com/live/JcmcTVMar.m3u8 +赣州新闻综合频道,https://pili-live-hls-sjxgz2024.sobeylive.com/jxgz2024/396_q_live172526329228525.m3u8 +TBS,https://cdntv.tbs.seoul.kr/tbs/_definst_/tbs_tv_web_720.smil/playlist.m3u8 +Lào Cai TV,https://live.baolaocai.vn/channel2/stream.m3u8 +Ninh Bình TV,https://live.mediatech.vn/live/28597f8fd7ea5064d0f84ab00b3699dfd86/playlist.m3u8 +延庆区电视台,https://videoplaynew.yanqingrmzx.com/yq/ds.m3u8 +洛阳文旅频道,https://wshlslive.migucloud.com/live/Q081CD54_C0/playlist.m3u8 +拉萨藏语综合频道,https://file.lasatv.cn/nmip-media/channellive/channel104335/playlist.m3u8 +拉萨汉语综合频道,https://file.lasatv.cn/nmip-media/channellive/channel101894/playlist.m3u8 +拉萨文化旅游频道,https://file.lasatv.cn/nmip-media/channellive/channel103157/playlist.m3u8 +宿松新闻综合频道,http://112.28.222.71:20080/live/a8fd37c471fa46e18ec17b6ce4730eb7/hls.m3u8 +昆山新闻综合频道,https://play-live.ksrmtzx.com/live/ks-tv.m3u8 +通山综合频道,https://tongshan-live21.cjyun.org/10134/s10134-TONGSHAN-live.m3u8?auth_key=1798732799-ced13be0a8ae11efa7dfa7dfd677b8f3-0-47936ec27159c1f2b4e1ddfd4c2caa46 +长阳综合频道,https://changyang-live21.cjyun.org/10114/s10114-cy1t.m3u8?auth_key=1798732799-ced13be0a8ae11efa7dfa7dfd677b8f3-0-69b7adceccbc5ea8f2cc6f34b34171af +黄石新闻综合频道,https://huangshifb-live21.cjyun.org/10200/s10200-huangshitv01.m3u8?auth_key=1798732799-ced13be0a8ae11efa7dfa7dfd677b8f3-0-881db406245fb25ab51e962f0b5b23a1 +赤壁综合频道,https://chibi-live21.cjyun.org/10138/s10138-CBTV1.m3u8?auth_key=1798732799-ced13be0a8ae11efa7dfa7dfd677b8f3-0-90d01dc5111710ab4196d08997323917 +CGNTV中文台,https://d3e05csss9c272.cloudfront.net/out/v1/f0bf71c57581470fb9379f603e8f5d83/CGNWebLiveCN.m3u8 +CGNTV日本台,https://d2p4mrcwl6ly4.cloudfront.net/out/v1/8d50f69fdbbf411a8d302743e4263716/CGNWebLiveJP.m3u8 +CNBC-TV18 Prime,https://n18syndication.akamaized.net/bpk-tv/CNBC_Tv18_Prime_HD_NW18_MOB/output01/index.m3u8 +CGTN America,https://emlcgtn-ioriver-cdn.encoders.immergo.tv/master.m3u8 +包头新闻综合频道,https://play1-qk.nmtv.cn/live/1735546150395017.m3u8 +CNBC Awaaz,https://n18syndication.akamaized.net/bpk-tv/CNBC_Awaaz_NW18_MOB/output01/master.m3u8 +CNBC Bajar,https://n18syndication.akamaized.net/bpk-tv/CNBC_Bazaar_NW18_MOB/output01/master.m3u8 +驻马店公共频道,https://p2hs.vzan.com/slowlive/692736859757132846/live.m3u8 +威海新闻综合频道,https://v.whnews.cn/hls2/0k9ludd7N4.m3u8 +威海海洋生活频道,https://v.whnews.cn/hls1/y1Y8U3KWei.m3u8 +2TV,https://tv.cdn.xsg.ge/gpb-2tv/index.m3u8 +海宁新闻综合频道,https://p2hs.vzan.com/slowlive/317913155078575177/live.m3u8 +nettv大洋洲,#genre# +Parliament TV,https://ptvlive.kordia.net.nz/out/v1/daf20b9a9ec5449dadd734e50ce52b74/index.m3u8 +HGTV,https://mediapackage-hgtv-source.fullscreen.nz/index.m3u8 +Sky news weather,https://distro001-gb-hls1-prd.delivery.skycdp.com/easel_cdn/ngrp:weather_loop.stream_all/playlist.m3u8 +Sky news now,https://cdn-apse1-prod.tsv2.amagi.tv/linear/amg00663-skynews-skynewsau-samsungau/playlist.m3u8 +淨宗學院網絡電臺,https://i.cibei.org/live/hd/playlist.m3u8 +TVSN,https://tvsnhlslivetest.akamaized.net/hls/live/2034711/TVSN-MSL4/master.m3u8 +RNtv,https://2-fss-1.streamhoster.com/pl_154/205448-2145652-1/playlist.m3u8 +start101,https://live2.tensila.com/knut-v-1.choice/hls/master.m3u8 +Ausbiz tv,https://d9quh89lh7dtw.cloudfront.net/public-output/index.m3u8 +TVBSnow,https://live-tvsn.simplestreamcdn.com/live12/tvsnbeauty/bitrate1.isml/.m3u8 +nettv南美洲,#genre# +CANAL NEXT,https://edge.enhdtv.com/nexthd/tracks-v1a1/mono.m3u8 +Canal40,https://cloudtv.streaming.com.py/concepciontv/concepciontv/playlist.m3u8 +TV Mais Brasil,https://stmv8.samcast.com.br/tvmaisbrasil/tvmaisbrasil/playlist.m3u8 +MBC Brasil TV,https://tv02.zas.media:1936/centraltvweb/centraltvweb/playlist.m3u8 +TV Cultura PA,https://player-tvcultura.stream.uol.com.br/live/tvcultura.m3u8 +Rede Vida,https://d12e4o88jd8gex.cloudfront.net/out/v1/cea3de0b76ac4e82ab8ee0fd3f17ce12/index.m3u8 +TV Tubá,https://stmv1.voxtvhd.com.br/radiotvtuba/radiotvtuba/playlist.m3u8 +TV Aperipê,https://player-tvcultura.stream.uol.com.br/live/tvcultura.m3u8 +TV Câmara,https://stream3.camara.gov.br/tv1/manifest.m3u8 +Blue TV,https://srv5.zcast.com.br/paulo4100/paulo4100/playlist.m3u8 +ViaMorena TV,https://video01.logicahost.com.br/viamorena01/viamorena01/playlist.m3u8 +UniTV,https://vcp6.myplaytv.com/unitv/unitv/playlist.m3u8 +Inter TV,https://streamtv.intervenhosting.net:3439/hybrid/play.m3u8 +Wording,https://tv02.zas.media:1936/wordingtv/wordingtv/playlist.m3u8 +nettv北美洲,#genre# +CNN heading,https://mediapackage-ptcn-source.fullscreen.nz/index.m3u8 +His channel,https://www1.hischannel.com/liveedge/smil:hls.smil/playlist.m3u8 +The Word Network,https://clouditize.piksel.tech/hls/live/2043070/ClouditizeStream1/playlist.m3u8 +CNN,https://ds2c506obo7m8.cloudfront.net/v1/master/3722c60a815c199d9c0ef36c5b73da68a62b09d1/cc-7zjq3tdqasbg8/index.m3u8 +Trace Sport Stars,https://trace-sportstars-tcl.amagi.tv/playlist.m3u8 +銀視數碼台,https://hc9lby9bzw8zcar.wcetv.com/hls/wcetv318.m3u8 +Global News Toronto,https://live.corusdigitaldev.com/groupd/live/deb8cec5-87fb-460a-ab82-0929374fc5fb/live.isml/.m3u8 +Global News Okanagan,https://live.corusdigitaldev.com/groupc/live/9fd97fb0-baa8-4191-bd2c-59aa5c9a1d48/live.isml/.m3u8 +Global News Calgary,https://live.corusdigitaldev.com/groupd/live/8970c668-40cd-4ca9-8c4d-25fd04f619b5/live.isml/.m3u8 +Global News,https://live.corusdigitaldev.com/groupd/live/49a91e7f-1023-430f-8d66-561055f3d0f7/live.isml/master.m3u8 +Metro TV Honduras,https://s.emisoras.tv:8081/metrotv/index.m3u8 +Nicoya TV,https://59ef525c24caa.streamlock.net/nicoyatv/nicoyatv/playlist.m3u8 +CBN,https://5790d294af2dc.streamlock.net/CBNVI/CBNVI/playlist.m3u8 +Garabito TV,https://59ef525c24caa.streamlock.net/garabitoTV/garabitotv/playlist.m3u8 +Meganet TV,https://giatv.bozztv.com/giatv/giatv-Supercanal/Supercanal/playlist.m3u8 +Costa Rica Channel,https://video0.rogohosting.com:19360/8006/8006.m3u8 +MTM,https://angel.btbn.tv:5443/mtmtv/streams/live.m3u8 +TV Copan,https://s.emisoras.tv:8081/tvcopan/index.m3u8 +Canal 11,https://redirector.rudo.video/hls-video/c54ac2799874375c81c1672abb700870537c5223/canal11hn/canal11hn.smil/playlist.m3u8 +Campus TV,https://5e85d90130e77.streamlock.net/6052/6052/playlist.m3u8 +TV Estrella,https://s.emisoras.tv:8081/tve/index.m3u8 +Kerusso TV,https://s.emisoras.tv:8081/kerussotv/index.m3u8 +Ebenezer TV,https://5e85d90130e77.streamlock.net/6010/ngrp:6010_all/playlist.m3u8 +Canal 7 Talanga Vision,https://amixtv.com:8081/talangavision/index.m3u8 +Temple TV,https://livestream.telvue.com/templeuni1/f7b44cfafd5c52223d5498196c8a2e7b.sdp/playlist.m3u8 +YTN,https://jk3lzkn4lw79-hls-live.5centscdn.com/VTN2/bcaafe9ad8d42834b08e762ac58596b8.sdp/playlist.m3u8 +CHCO TV,https://temp3.isilive.ca/live/CHCOTV/live/chunklist.m3u8 +Scripps News,https://content.uplynk.com/channel/4bb4901b934c4e029fd4c1abfc766c37.m3u8 +Circle TV,https://circle-roku.amagi.tv/playlist.m3u8 +CBS news,https://cbsn-us.cbsnstream.cbsnews.com/out/v1/55a8648e8f134e82a470f83d562deeca/master.m3u8 +SCCtv,https://59f886d16bbc8.streamlock.net/stations/scctv/playlist.m3u8 +Extrema TV,https://627bb251f23c7.streamlock.net:444/ExtremaTV/ExtremaTV/playlist.m3u8 +3ABN Canada,https://3abn.bozztv.com/3abncanada/3ABN/master.m3u8 +3ABN Latino,https://3abn.bozztv.com/3abn2/Lat_live/smil:Lat_live.smil/playlist.m3u8 +3ABN Kids Network,https://3abn.bozztv.com/3abn2/Kids_live/smil:Kids_live.smil/playlist.m3u8 +3ABN Praise Him Music,https://3abn.bozztv.com/3abn1/PraiseHim/smil:PraiseHim.smil/playlist.m3u8 +3ABN International,https://3abn.bozztv.com/3abn2/Int_live/smil:Int_live.smil/playlist.m3u8 +3ABN Proclaim!,https://3abn.bozztv.com/3abn2/Pro_live/smil:Pro_live.smil/playlist.m3u8 +3ABN,https://3abn.bozztv.com/3abn2/3abn_live/smil:3abn_live.smil/playlist.m3u8 diff --git a/FGBLH/Web鱼壳海豚.json b/FGBLH/Web鱼壳海豚.json index 05b435c6..7770772e 100644 --- a/FGBLH/Web鱼壳海豚.json +++ b/FGBLH/Web鱼壳海豚.json @@ -214,6 +214,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/神马影视.py" }, + { + "key": "4K影视", + "name": "🐬4K影视.py[追剧]", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/4K影视.py" + }, { "key": "ddyy", "name": "🐬低端影视.py[追剧]", @@ -1069,6 +1075,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/18AV.py" }, + { + "key": "8X8X", + "name": "🐬8X8X.py|🔞[成人]", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/8X8X.py" + }, { "key": "Xvideos", "name": "🐬Xvideos.py|🔞[成人]", @@ -2483,6 +2495,13 @@ "playerType": 2, "ua": "okhttp", "url": "https://gh-proxy.org/https://github.com/bang359/dsj/raw/main/dsjcs.txt" + }, + { + "name": "🐬Nettv", + "type": 0, + "playerType": 2, + "ua": "okhttp", + "url": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/Nettv.txt" }, { "name": "🐬地方直播", @@ -2531,12 +2550,6 @@ "type": 0, "ua": "okhttp/5.3.2", "url": "https://d.kstore.dev/download/9565/小新TV.txt" - }, - { - "name": "🐬北美长城源", - "type": 0, - "ua": "okhttp", - "url": "https://ha.msbot.dpdns.org/wall.php" }, { "name": "🐬台湾台", diff --git a/FGBLH/Web鱼壳海豚py.json b/FGBLH/Web鱼壳海豚py.json index a49b342b..1fb72146 100644 --- a/FGBLH/Web鱼壳海豚py.json +++ b/FGBLH/Web鱼壳海豚py.json @@ -137,6 +137,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/神马影视.py" }, + { + "key": "4K影视", + "name": "🐬4K影视.py[追剧]", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/4K影视.py" + }, { "key": "ddyy", "name": "🐬低端影视.py[追剧]", @@ -635,6 +641,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/18AV.py" }, + { + "key": "8X8X", + "name": "🐬8X8X.py|🔞[成人]", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/8X8X.py" + }, { "key": "Xvideos", "name": "🐬Xvideos.py|🔞[成人]", @@ -728,6 +740,13 @@ "playerType": 2, "ua": "okhttp", "url": "https://gh-proxy.org/https://github.com/bang359/dsj/raw/main/dsjcs.txt" + }, + { + "name": "🐬Nettv", + "type": 0, + "playerType": 2, + "ua": "okhttp", + "url": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/Nettv.txt" }, { "name": "🐬地方直播", @@ -777,12 +796,6 @@ "ua": "okhttp/5.3.2", "url": "https://d.kstore.dev/download/9565/小新TV.txt" }, - { - "name": "🐬北美长城源", - "type": 0, - "ua": "okhttp", - "url": "https://ha.msbot.dpdns.org/wall.php" - }, { "name": "🐬台湾台", "type": 0, diff --git a/FGBLH/Web鱼壳海豚无18加.json b/FGBLH/Web鱼壳海豚无18加.json index dddd4628..6f9b9141 100644 --- a/FGBLH/Web鱼壳海豚无18加.json +++ b/FGBLH/Web鱼壳海豚无18加.json @@ -214,6 +214,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/神马影视.py" }, + { + "key": "4K影视", + "name": "🐬4K影视.py", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/4K影视.py" + }, { "key": "ddyy", "name": "🐬低端影视.py", @@ -2032,6 +2038,13 @@ "playerType": 2, "ua": "okhttp", "url": "https://gh-proxy.org/https://github.com/bang359/dsj/raw/main/dsjcs.txt" + }, + { + "name": "🐬Nettv", + "type": 0, + "playerType": 2, + "ua": "okhttp", + "url": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/Nettv.txt" }, { "name": "🐬地方直播", @@ -2081,12 +2094,6 @@ "ua": "okhttp/5.3.2", "url": "https://d.kstore.dev/download/9565/小新TV.txt" }, - { - "name": "🐬北美长城源", - "type": 0, - "ua": "okhttp", - "url": "https://ha.msbot.dpdns.org/wall.php" - }, { "name": "🐬台湾台", "type": 0, diff --git a/FGBLH/ok海豚.json b/FGBLH/ok海豚.json index 35f5e812..59909a30 100644 --- a/FGBLH/ok海豚.json +++ b/FGBLH/ok海豚.json @@ -87,6 +87,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/油管.py" }, + { + "key": "4K影视", + "name": "🐬4K影视.py", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/4K影视.py" + }, { "key": "ddyy", "name": "🐬低端影视.py", @@ -1008,6 +1014,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/18AV.py" }, + { + "key": "8X8X", + "name": "🐬8X8X.py|🔞", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/8X8X.py" + }, { "key": "Xvideos", "name": "🐬Xvideos.py|🔞", @@ -1358,6 +1370,13 @@ "playerType": 2, "ua": "okhttp", "url": "https://gh-proxy.org/https://github.com/bang359/dsj/raw/main/dsjcs.txt" + }, + { + "name": "🐬Nettv", + "type": 0, + "playerType": 2, + "ua": "okhttp", + "url": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/Nettv.txt" }, { "name": "🐬地方直播", @@ -1406,12 +1425,6 @@ "type": 0, "ua": "okhttp/5.3.2", "url": "https://d.kstore.dev/download/9565/小新TV.txt" - }, - { - "name": "🐬北美长城源", - "type": 0, - "ua": "okhttp", - "url": "https://ha.msbot.dpdns.org/wall.php" }, { "name": "🐬台湾台", diff --git a/FGBLH/ok海豚py.json b/FGBLH/ok海豚py.json index 488ee0d8..3d08cfa9 100644 --- a/FGBLH/ok海豚py.json +++ b/FGBLH/ok海豚py.json @@ -136,6 +136,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/布布追剧.py" }, + { + "key": "4K影视", + "name": "🐬4K影视.py", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/4K影视.py" + }, { "key": "ddyy", "name": "🐬低端影视.py", @@ -664,6 +670,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/18AV.py" }, + { + "key": "8X8X", + "name": "🐬8X8X.py|🔞", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/8X8X.py" + }, { "key": "Xvideos", "name": "🐬Xvideos.py|🔞", @@ -883,6 +895,13 @@ "ua": "okhttp", "url": "https://gh-proxy.org/https://github.com/bang359/dsj/raw/main/dsjcs.txt" }, + { + "name": "🐬Nettv", + "type": 0, + "playerType": 2, + "ua": "okhttp", + "url": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/Nettv.txt" + }, { "name": "🐬地方直播", "type": 0, @@ -931,12 +950,6 @@ "ua": "okhttp/5.3.2", "url": "https://d.kstore.dev/download/9565/小新TV.txt" }, - { - "name": "🐬北美长城源", - "type": 0, - "ua": "okhttp", - "url": "https://ha.msbot.dpdns.org/wall.php" - }, { "name": "🐬台湾台", "type": 0, diff --git a/FGBLH/ok海豚无18加.json b/FGBLH/ok海豚无18加.json index 9e36d906..47ee1b7a 100644 --- a/FGBLH/ok海豚无18加.json +++ b/FGBLH/ok海豚无18加.json @@ -87,6 +87,12 @@ "type": 3, "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/油管.py" }, + { + "key": "4K影视", + "name": "🐬4K影视.py", + "type": 3, + "api": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/py/4K影视.py" + }, { "key": "ddyy", "name": "🐬低端影视.py", @@ -912,6 +918,13 @@ "ua": "okhttp", "url": "https://gh-proxy.org/https://github.com/bang359/dsj/raw/main/dsjcs.txt" }, + { + "name": "🐬Nettv", + "type": 0, + "playerType": 2, + "ua": "okhttp", + "url": "https://ghfast.top/https://raw.githubusercontent.com/FGBLH/HKL/refs/heads/main/Nettv.txt" + }, { "name": "🐬地方直播", "type": 0, @@ -960,12 +973,6 @@ "ua": "okhttp/5.3.2", "url": "https://d.kstore.dev/download/9565/小新TV.txt" }, - { - "name": "🐬北美长城源", - "type": 0, - "ua": "okhttp", - "url": "https://ha.msbot.dpdns.org/wall.php" - }, { "name": "🐬台湾台", "type": 0, diff --git a/FGBLH/py/4K影视.py b/FGBLH/py/4K影视.py new file mode 100644 index 00000000..bce1e66a --- /dev/null +++ b/FGBLH/py/4K影视.py @@ -0,0 +1,388 @@ +# coding=utf-8 +""" +目标站: 4kvm 首页: https://www.4kvm.net +动态筛选、精准分集、去重列表 +""" +import re +import sys +import json +import urllib.parse +from bs4 import BeautifulSoup + +sys.path.append('..') +from base.spider import Spider + +class Spider(Spider): + + def init(self, extend=""): + self.site_url = "https://www.4kvm.top" + self.headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + 'Referer': self.site_url, + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', + 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8' + } + self.categories = [ + {"type_id": "1", "type_name": "电影"}, + {"type_id": "2", "type_name": "电视剧"}, + {"type_id": "3", "type_name": "动漫"} + ] + self._filters_cache = None + + # ================= 动态筛选解析 ================= + def _fetch_filters_for_classify(self, tid): + """请求 /filter?classify=tid,解析页面筛选区域,返回该分类的筛选列表""" + url = f"{self.site_url}/filter?classify={tid}" + resp = self.fetch(url, headers=self.headers) + if not resp: + return [] + soup = BeautifulSoup(resp.text, 'html.parser') + filter_groups = [] + containers = soup.select('main div.flex.flex-wrap.items-center.gap-3') + for container in containers: + links = container.select('a[href]') + if len(links) < 2: + continue + first_text = links[0].get_text(strip=True) + if not first_text.startswith('全部'): + continue + group_name = first_text.replace('全部', '', 1).strip() + # 从非全部的链接中提取参数键 + param_key = None + for a in links[1:]: + href = a.get('href', '') + parsed = urllib.parse.urlparse(href) + qs = urllib.parse.parse_qs(parsed.query) + for k in qs: + if k not in ('classify', 'page'): + param_key = k + break + if param_key: + break + if not param_key: + continue + if param_key in ('sort_by', 'order'): + continue + options = [] + for a in links: + text = a.get_text(strip=True) + href = a.get('href', '') + parsed = urllib.parse.urlparse(href) + qs = urllib.parse.parse_qs(parsed.query) + val = '' + if param_key in qs: + val = qs[param_key][0] if qs[param_key] else '' + if text.startswith('全部'): + val = '' + options.append({"n": text, "v": val}) + if options: + filter_groups.append({ + "key": param_key, + "name": group_name, + "value": options + }) + return filter_groups + + def _get_all_filters(self): + if self._filters_cache is not None: + return self._filters_cache + filters = {} + for cat in self.categories: + tid = cat["type_id"] + groups = self._fetch_filters_for_classify(tid) + if groups: + filters[tid] = groups + # 为没有筛选的分类复用电影分类的筛选 + if "1" in filters: + if "3" not in filters: + filters["3"] = filters["1"] + if "4" not in filters: + filters["4"] = filters["1"] + self._filters_cache = filters + return filters + + # ================= 核心业务方法 ================= + def homeContent(self, filter): + url = self.site_url + "/" + resp = self.fetch(url, headers=self.headers) + video_list = [] + if resp: + soup = BeautifulSoup(resp.text, 'html.parser') + # 使用唯一卡片容器 + cards = soup.select('div[data-vod-id]') + for card in cards[:20]: + a = card.select_one('a.block[href^="/play/"]') + if not a: + continue + vod_id = card.get('data-vod-id', '').strip() + if not vod_id: + href = a.get('href', '') + vod_id = href.replace('/play/', '').strip() + if not vod_id: + continue + title_tag = card.select_one('h3.text-white') or card.select_one('h3') + vod_name = title_tag.get_text(strip=True) if title_tag else '' + if not vod_name: + continue + img = card.select_one('img[data-src]') + vod_pic = '' + if img: + src = img.get('data-src', '') + if src and not src.startswith('data:'): + vod_pic = src if src.startswith('http') else 'https:' + src + remark_tag = card.select_one('.text-green-500, .text-yellow-400, span[class*="px-1.5"]') + vod_remarks = remark_tag.get_text(strip=True) if remark_tag else '' + video_list.append({ + "vod_id": vod_id, + "vod_name": vod_name, + "vod_pic": vod_pic, + "vod_remarks": vod_remarks + }) + return {"class": self.categories, "list": video_list, "filters": self._get_all_filters()} + + def homeVideoContent(self): + return self.homeContent(False) + + def categoryContent(self, tid, pg, filter, extend): + page = int(pg) if pg else 1 + params = {"classify": tid} + if extend: + for k, v in extend.items(): + if v and k != 'classify': + params[k] = v + if page > 1: + params['page'] = page + query = urllib.parse.urlencode(params) + url = f"{self.site_url}/filter?{query}" + + resp = self.fetch(url, headers=self.headers) + if not resp: + return {"list": [], "page": page, "pagecount": 1, "limit": 24, "total": 0} + + soup = BeautifulSoup(resp.text, 'html.parser') + video_list = [] + cards = soup.select('div[data-vod-id]') + for card in cards: + a = card.select_one('a.block[href^="/play/"]') + if not a: + continue + vod_id = card.get('data-vod-id', '').strip() + if not vod_id: + href = a.get('href', '') + vod_id = href.replace('/play/', '').strip() + if not vod_id: + continue + title_tag = card.select_one('h3.text-white') or card.select_one('h3') + vod_name = title_tag.get_text(strip=True) if title_tag else '' + if not vod_name: + continue + img = card.select_one('img[data-src]') + vod_pic = '' + if img: + src = img.get('data-src', '') + if src and not src.startswith('data:'): + vod_pic = src if src.startswith('http') else 'https:' + src + remark_tag = card.select_one('.text-green-500, .text-yellow-400, span[class*="px-1.5"]') + vod_remarks = remark_tag.get_text(strip=True) if remark_tag else '' + video_list.append({ + "vod_id": vod_id, + "vod_name": vod_name, + "vod_pic": vod_pic, + "vod_remarks": vod_remarks + }) + + # 分页处理 + pagecount = page + page_text = soup.find(string=re.compile(r'共\s*\d+\s*页')) + if page_text: + nums = re.findall(r'\d+', page_text) + if nums: + pagecount = int(nums[-1]) + else: + page_block = soup.select_one('.flex.justify-center') + if page_block: + page_links = page_block.select('a[href*="page="]') + for a in page_links: + text = a.get_text(strip=True) + if text.isdigit(): + pagecount = max(pagecount, int(text)) + + return { + "list": video_list, + "page": page, + "pagecount": pagecount, + "limit": 24, + "total": len(video_list) * pagecount + } + + def detailContent(self, ids): + if not ids: + return {"list": []} + vod_id = ids[0] + url = f"{self.site_url}/play/{vod_id}" + resp = self.fetch(url, headers=self.headers) + if not resp or resp.status_code != 200: + return {"list": []} + + soup = BeautifulSoup(resp.text, 'html.parser') + + # 标题 + title_elem = soup.select_one('h1.text-xl') or soup.select_one('h1') or soup.select_one('h2') + vod_name = title_elem.get_text(strip=True) if title_elem else vod_id + + # 图片 + vod_pic = '' + img_elem = soup.select_one('img.w-full') or soup.select_one('img[src]') + if img_elem: + src = img_elem.get('src', '') or img_elem.get('data-src', '') + if src and not src.startswith('data:'): + vod_pic = src if src.startswith('http') else 'https:' + src + + # 导演、主演、简介 + vod_director = '' + vod_actor = '' + vod_content = '' + info_block = soup.select_one('.rounded-lg div.grid') or soup.select_one('div.grid') + if info_block: + text = info_block.get_text(' ', strip=True) + dir_match = re.search(r'导演\s*([^主\n]+)', text) + if dir_match: + vod_director = dir_match.group(1).strip() + act_match = re.search(r'主演\s*([^剧\n]+)', text) + if act_match: + vod_actor = act_match.group(1).strip() + desc_match = re.search(r'剧情简介\s*(.+)', text, re.DOTALL) + if desc_match: + vod_content = desc_match.group(1).strip() + elif re.search(r'简介\s*(.+)', text, re.DOTALL): + vod_content = re.search(r'简介\s*(.+)', text, re.DOTALL).group(1).strip() + + # ================= 分集解析 (基于 episodeManager) ================= + play_from_list = [] + play_url_list = [] + + episode_manager = soup.select_one('[x-data*="episodeManager"]') + if episode_manager: + xdata = episode_manager.get('x-data', '') + lines_raw = re.findall(r'\{[^}]*lineName\s*:\s*\'([^\']+)\'[^}]*episodeCount\s*:\s*(\d+)[^}]*\}', xdata) + lines_info = [{'lineName': name, 'episodeCount': int(count)} for name, count in lines_raw] + + episode_links = episode_manager.select('a[data-episode]') + lines_eps = {} + for a in episode_links: + line = a.get('data-line', '1') + ep = a.get('data-episode', '') + href = a.get('href', '') + if not href or not ep: + continue + full_url = href if href.startswith('http') else self.site_url + href + lines_eps.setdefault(line, []).append((int(ep), full_url)) + + for line_key in sorted(lines_eps.keys()): + eps = sorted(lines_eps[line_key], key=lambda x: x[0]) + line_name = f'线路{line_key}' + for info in lines_info: + line_name = info['lineName'] + break # 目前只用第一个线路名 + if not eps: + continue + episode_strs = [f"第{ep[0]}集${ep[1]}" for ep in eps] + play_from_list.append(line_name) + play_url_list.append('#'.join(episode_strs)) + + # 回退:无分集则直接播放当前页 + if not play_url_list: + play_from_list.append('播放') + play_url_list.append(f"播放${vod_id}") + + vod_play_from = '$$$'.join(play_from_list) + vod_play_url = '$$$'.join(play_url_list) + + result = [{ + "vod_id": vod_id, + "vod_name": vod_name, + "vod_pic": vod_pic, + "vod_content": vod_content, + "vod_actor": vod_actor, + "vod_director": vod_director, + "vod_area": "", + "vod_year": "", + "vod_play_from": vod_play_from, + "vod_play_url": vod_play_url + }] + return {"list": result} + + def searchContent(self, key, quick, pg="1"): + page = int(pg) if pg else 1 + params = {"q": key} + if page > 1: + params['page'] = page + query = urllib.parse.urlencode(params) + url = f"{self.site_url}/search?{query}" + resp = self.fetch(url, headers=self.headers) + if not resp: + return {"list": [], "page": page, "pagecount": 1} + + soup = BeautifulSoup(resp.text, 'html.parser') + video_list = [] + cards = soup.select('div[data-vod-id]') + if not cards: + # 搜索页可能没有 data-vod-id,降级处理 + for a in soup.select('a.block[href^="/play/"]'): + href = a.get('href', '') + vod_id = href.replace('/play/', '').strip() + if not vod_id: + continue + h3 = a.select_one('h3') + vod_name = h3.get_text(strip=True) if h3 else href + if not vod_name: + continue + img = a.select_one('img[data-src]') + vod_pic = '' + if img: + src = img.get('data-src', '') + if src and not src.startswith('data:'): + vod_pic = src if src.startswith('http') else 'https:' + src + video_list.append({ + "vod_id": vod_id, + "vod_name": vod_name, + "vod_pic": vod_pic, + "vod_remarks": '' + }) + else: + for card in cards[:30]: + a = card.select_one('a.block[href^="/play/"]') + if not a: + continue + vod_id = card.get('data-vod-id', '').strip() + if not vod_id: + href = a.get('href', '') + vod_id = href.replace('/play/', '').strip() + if not vod_id: + continue + title_tag = card.select_one('h3.text-white') or card.select_one('h3') + vod_name = title_tag.get_text(strip=True) if title_tag else '' + if not vod_name: + continue + img = card.select_one('img[data-src]') + vod_pic = '' + if img: + src = img.get('data-src', '') + if src and not src.startswith('data:'): + vod_pic = src if src.startswith('http') else 'https:' + src + remark_tag = card.select_one('.text-green-500, .text-yellow-400, span[class*="px-1.5"]') + vod_remarks = remark_tag.get_text(strip=True) if remark_tag else '' + video_list.append({ + "vod_id": vod_id, + "vod_name": vod_name, + "vod_pic": vod_pic, + "vod_remarks": vod_remarks + }) + return {"list": video_list, "page": page, "pagecount": 1} + + def playerContent(self, flag, id, vipFlags): + if not id.startswith('http'): + url = f"{self.site_url}/play/{id}" + else: + url = id + return {"parse": 1, "url": url, "header": self.headers} \ No newline at end of file diff --git a/FGBLH/py/8X8X.py b/FGBLH/py/8X8X.py new file mode 100644 index 00000000..a42ec2b3 --- /dev/null +++ b/FGBLH/py/8X8X.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +# 8x8x官网: https://www.7xb38c.com/ + +import sys,re,json,base64 +from urllib.parse import quote +sys.path.append('..') +try: + from base.spider import Spider as _Base +except ImportError: + class _Base: + def fetch(self,url,headers=None,**kw): + import requests as rq + kw.pop('timeout',None);r=rq.get(url,headers=headers,timeout=15,**kw) + r.encoding='utf-8';return r + +try: + import curl_cffi.requests as cr + _HAS_CFFI=True +except ImportError: + _HAS_CFFI=False + import requests as cr + +_H=[104,116,116,112,115,58,47,47,119,119,119,46,51,97,98,102,117,103,57,50,100,46,99,111,109] +H=bytes(_H).decode() +U="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" +CATS={1:"大陆",2:"日韩",3:"欧美",4:"动漫",5:"三级"} +TC=None + +# ── 动态发现 body path ── +def _discover_body(session): + """从 SPA 壳中提取 body 路径前缀, 失败返回默认值""" + try: + kw={"timeout":10} + if _HAS_CFFI:kw["impersonate"]="chrome120" + r=session.get(H+"/",**kw) + r.raise_for_status() + js_name=re.search(r'src=/assets/(app\.[a-f0-9]+\.js)',r.text) + if not js_name:return"/cou345w" + r2=session.get(H+"/assets/"+js_name.group(1),**kw) + r2.raise_for_status() + seg=re.search(r'atob\("([^"]+)"\)',r2.text) + if not seg:return"/cou345w" + return"/"+base64.b64decode(seg.group(1)).decode() + except Exception as e: + print(f"[8x8x] body discover failed: {e}, using default") + return"/cou345w" + + +class Spider(_Base): + def init(self,extend=""): + self._s=cr.Session() + self._s.headers.update({"User-Agent":U,"Accept-Language":"zh-CN,zh;q=0.9"}) + self._s.verify=False + # ★ 动态发现 body path + self._bd=_discover_body(self._s) + print(f"[8x8x] body path: {self._bd}") + + def getName(self):return"8x8x" + def isVideoFormat(self,u):return".m3u8"in u or".mp4"in u + def manualVideoCheck(self):return False + + def _get(self,url,timeout=15): + if not url.startswith("http"):url=H+self._bd+url + try: + kw={"timeout":timeout} + if _HAS_CFFI:kw["impersonate"]="chrome120" + r=self._s.get(url,**kw);r.raise_for_status() + if hasattr(r,'encoding'):r.encoding='utf-8' + return r.text + except Exception as e: + print(f"[8x8x]GET {url[:60]} -> {e}") + return"" + + def _tags(self): + global TC + if TC is not None:return TC + h=self._get("/");g={} + if not h:TC=g;return g + for gm in re.finditer(r'