diff --git a/JN/EXT/JS/88看球.js b/JN/EXT/JS/88看球.js index 7876e38b..983cfa03 100644 --- a/JN/EXT/JS/88看球.js +++ b/JN/EXT/JS/88看球.js @@ -1,29 +1,60 @@ var rule = { - title:'88看球', + title: "88看球", // host:'http://www.88kanqiu.cc', - host:'http://www.88kanqiu.live', - url:'/match/fyclass/live', - searchUrl:'', - searchable:0, - quickSearch:0, - class_parse:'.nav-pills li;a&&Text;a&&href;/match/(\\d+)/live', - headers:{ - 'User-Agent':'PC_UA' + host: "http://www.88kanqiu.live", + url: "/match/fyclass/live", + searchUrl: "", + searchable: 0, + quickSearch: 0, + class_parse: ".nav-pills li;a&&Text;a&&href;/match/(\\d+)/live", + headers: { + "User-Agent": "PC_UA", }, - timeout:5000, - play_parse:true, - lazy:'', - limit:6, - double:false, - 推荐:'*', - 一级:'.list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href', - 二级:{ - "title":".game-info-container&&Text;.customer-navbar-nav li&&Text", - "img":"img&&src", - "desc":";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text", - "content":"div.game-time&&Text", - "tabs":"js:TABS=['88看球']", - "lists":"js:LISTS=[];input=input+'-url';let html=request(input);let data=JSON.parse(html);TABS.forEach(function(tab){let m3u=data.links;let d=m3u.map(function(it){return it.name+'$'+it.url});LISTS.push(d)});" - }, - 搜索:'', -} + timeout: 5000, + play_parse: true, + pagecount:{"1":1,"2":1,"4":1,"22":1,"8":1,"9":1,"10":1,"14":1,"15":1,"12":1,"13":1,"16":1,"28":1,"7":1,"11":1,"33":1,"27":1,"23":1,"26":1,"3":1,"21":1,"18":1}, + lazy: `js: + if(/embed=/.test(input)) { + let url = input.match(/embed=(.*?)&/)[1]; + url = base64Decode(url); + input = { + jx:0, + url: url.split('#')[0], + parse: 0 + } + } else if (/\\?url=/.test(input)){ + input = { + jx:0, + url: input.split('?url=')[1].split('#')[0], + parse: 0 + } + } else { + input + } + `, + limit: 6, + double: false, + 推荐: "*", + 一级: ".list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href", + 二级: { + title: ".game-info-container&&Text;.customer-navbar-nav li&&Text", + img: "img&&src", + desc: ";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text", + content: "div.game-time&&Text", + tabs: "js:TABS=['道长在线']", + lists: `js: + LISTS=[]; + let html = request(input); + let pdata = jsp.pdfh(html, "#t&&value"); + pdata = pdata.substring(6, pdata.length); + pdata = pdata.substring(0, (pdata.length) - 2) + pdata = base64Decode(pdata); + let jo = JSON.parse(pdata).links; + let d = jo.map(function(it){ + return it.name + '$' + urlencode(it.url) + }); + LISTS.push(d) + `, + }, + 搜索: "", +}; \ No newline at end of file diff --git a/JN/EXT/JS/JustLive.js b/JN/EXT/JS/JustLive.js index ec1481eb..d0f45725 100644 --- a/JN/EXT/JS/JustLive.js +++ b/JN/EXT/JS/JustLive.js @@ -99,7 +99,6 @@ var rule = { `, 二级: `js: try { - var d = []; if (typeof play_url === "undefined") { var play_url = "" } @@ -112,8 +111,7 @@ var rule = { vod_name: jo.roomName, vod_pic: jo.roomPic, type_name: jo.platForm.replace("huya", "虎牙").replace("douyu", "斗鱼").replace("cc", "网易CC").replace("bilibili", "哔哩哔哩").replace("douyin", "抖音") + "." + jo.categoryName, - vod_director: '👥人气 ' + jo.online, - vod_actor: '🆙 ' + jo.ownerName, + vod_director: '🆙 ' + jo.ownerName, vod_content: "🏷分区:" + jo.platForm.replace("huya", "虎牙").replace("douyu", "斗鱼").replace("cc", "网易CC").replace("bilibili", "哔哩哔哩").replace("douyin", "抖音") + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播") }; let episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrlMultiSource?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //多线路 @@ -161,29 +159,33 @@ var rule = { }); d.push( { - title: "虎牙解析1", + title: "解析1", url: "http://epg.112114.xyz/huya/" + jo.roomId }, { - title: "虎牙解析2", + title: "解析2", url: "https://www.aois.eu.org/live/huya/" + jo.roomId }, { - title: "虎牙解析3", + title: "解析3", url: "https://www.goodiptv.club/huya/" + jo.roomId }, { - title: "虎牙解析4", + title: "解析4", url: "http://maomao.kandiantv.cn/huya1.php?id=" + jo.roomId }, { - title: "虎牙解析5", + title: "解析5", url: "http://43.138.170.29:35455/huya/" + jo.roomId }, { - title: "虎牙解析6", + title: "解析6", url: "http://8.210.232.168/php/huya.php?id=" + jo.roomId }, + { + title: "虎牙解析", + url: "http://cfss.cc/cdn/hy/" + jo.roomId + ".flv" + }, ); VOD["vod_play_from"] = "选择画质"; VOD["vod_play_url"] = d.map(function(it) { @@ -208,4 +210,18 @@ var rule = { }) setResult(d); `, + + //是否启用辅助嗅探: 1,0 + sniffer:1, + // 辅助嗅探规则js写法 + isVideo: `js: + log(input); + if(/\\/huya/.test(input)) { + input = true + } else if(/\\.flv?|\\.m3u8?|\\.mp4?/.test(input)){ + input = true + }else{ + input = false + } + `, } \ No newline at end of file diff --git a/JN/EXT/JS/斗鱼直播.js b/JN/EXT/JS/斗鱼直播.js index 7f7e263d..84c6ab39 100644 --- a/JN/EXT/JS/斗鱼直播.js +++ b/JN/EXT/JS/斗鱼直播.js @@ -50,7 +50,7 @@ var rule = { url: it.rid, title: it.roomName, img: it.roomSrc, - desc: '👁' + it.hn + ' ' + '🆙' + it.nickname, + desc: '👁' + it.hn + ' 🆙' + it.nickname, }) }); }); @@ -64,67 +64,135 @@ var rule = { url: it.rid, title: it.roomName, img: it.roomSrc, - desc: '👁' + it.hn + ' ' + '🆙' + it.nickname, + desc: '👁' + it.hn + ' 🆙' + it.nickname, }) }); setResult(d); `, 二级:`js: - var d = []; + try { + if (typeof play_url === "undefined") { + var play_url = "" + } var jo = JSON.parse(request(input)).data; VOD = { vod_id: jo.roomId, vod_name: jo.roomName, vod_pic: jo.roomPic, - type_name: jo.platForm.replace("douyu", "斗鱼") + "." + jo.categoryName, - vod_remarks: '🏷roomId ' + jo.roomId, - vod_director: '👥在线人数 ' + jo.online, - vod_actor: '🆙 ' + jo.ownerName, - vod_content: '🏷roomId:' + jo.roomId + "|" + ' 🏷状态:' + (jo.isLive == 1 ? '正在直播' : '未开播'), - // vod_content: "🏷分区:" + jo.platForm.replace("douyu", "斗鱼") + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播"), + type_name: "斗鱼." + jo.categoryName, + vod_director: '🆙 ' + jo.ownerName, + vod_content: "🏷分区:斗鱼" + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播") }; - var playurl = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrl?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; - // var name = { - // OD: "JustLive", - // FD: "流畅", - // LD: "标清", - // SD: "高清", - // HD: "JustLive(预览)", - // "2K": "2K", - // "4K": "4K", - // FHD: "全高清", - // XLD: "极速", - // SQ: "普通音质", - // HQ: "高音质", - // }; - Object.keys(playurl).forEach(function(key) { - // if (!/ayyuid|to/.test(key)) { - if (/OD/.test(key)) { - d.push({ - // title: name[key], - title: 'JustLive', - url: playurl[key] - }) - } + let episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrlMultiSource?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //多线路 + if (Object.keys(episodes).length !== 0) { + let playFrom = []; + let playList = []; + let kplayList = []; + Object.keys(episodes).forEach(function(key) { + playFrom.append(key); + kplayList = episodes[key].map(function(it) { + let title = it.qualityName; + let playUrl = it.playUrl + return title + "$" + play_url + urlencode(playUrl) + }).join("#") + playList.append(kplayList); + }); + let vod_play_from = playFrom.join("$$$"); + let vod_play_url = playList.join("$$$"); + VOD["vod_play_from"] = vod_play_from; + VOD["vod_play_url"] = vod_play_url; + } else { + var d = []; + episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrl?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //单线路 + var name = { + "OD": "原画", + "FD": "流畅", + "LD": "标清", + "SD": "高清", + "HD": "超清", + "2K": "2K", + "4K": "4K", + "FHD": "全高清", + "XLD": "极速", + "SQ": "普通音质", + "HQ": "高音质" + }; + Object.keys(episodes).forEach(function(key) { + if (!/ayyuid|to/.test(key)) { + d.push({ + title: name[key], + url: episodes[key] + }) + } + }); + d.push( + { + title: "解析1", + url: "http://epg.112114.xyz/huya/" + jo.roomId + }, + { + title: "解析2", + url: "https://www.aois.eu.org/live/huya/" + jo.roomId + }, + { + title: "解析3", + url: "https://www.goodiptv.club/huya/" + jo.roomId + }, + { + title: "解析4", + url: "http://maomao.kandiantv.cn/huya1.php?id=" + jo.roomId + }, + { + title: "解析5", + url: "http://43.138.170.29:35455/huya/" + jo.roomId + }, + { + title: "解析6", + url: "http://8.210.232.168/php/huya.php?id=" + jo.roomId + }, + ); + VOD["vod_play_from"] = "播放源"; + VOD["vod_play_url"] = d.map(function(it) { + return it.title + "$" + it.url + }).join("#"); + setResult(d); + } + } catch (e) { + log("获取二级详情页发生错误:" + e.message); + } + `, + // 搜索:'json:data.list;roomName;roomSrc;nickname;roomId', + 搜索: `js: + var d = []; + let rurls = input.split(';')[0].split('#'); + let rurl = rurls[0]; + let params = rurls.length > 1 ?rurls[1]:''; + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = {body:params}; + Object.assign(_fetch_params,postData); + let jo = JSON.parse(post(rurl,_fetch_params)).data.list; + jo.forEach(it => { + d.push({ + url: it.roomId, + title: it.roomName, + img: it.roomSrc, + desc: '👁' + it.hn + ' 🆙' + it.nickname, + }) }); - d.push({ - title: "斗鱼解析1", - url: "http://epg.112114.xyz/douyu/" + jo.roomId - }, { - title: "斗鱼解析2", - url: "https://www.aois.eu.org/live/douyu/" + jo.roomId - }, { - title: "斗鱼解析3", - url: "https://www.goodiptv.club/douyu/" + jo.roomId - }, { - title: "斗鱼解析4", - url: "http://maomao.kandiantv.cn/douyu1.php?id=" + jo.roomId - }); - VOD.vod_play_from = "播放源"; - VOD.vod_play_url = d.map(function(it) { - return it.title + "$" + it.url - }).join("#"); setResult(d); `, - 搜索:'json:data.list;roomName;roomSrc;nickname;roomId', + + //是否启用辅助嗅探: 1,0 + sniffer:1, + // 辅助嗅探规则js写法 + isVideo: `js: + log(input); + if(/\\/huya/.test(input)) { + input = true + } else if(/\\.flv?|\\.m3u8?|\\.mp4?/.test(input)){ + input = true + }else{ + input = false + } + `, } diff --git a/JN/EXT/JS/独播库[飞].js b/JN/EXT/JS/独播库[飞].js index ad4027db..a8064280 100644 --- a/JN/EXT/JS/独播库[飞].js +++ b/JN/EXT/JS/独播库[飞].js @@ -53,14 +53,15 @@ url = url.substring(8, (url.length) - 8) } if (/\\.m3u8|\\.mp4/.test(url)) { - var sign = request(HOST + '/static/player/' + from + '.php').match(/PlayUrl\\+'(.*?)'/)[1]; + // var sign = request(HOST + '/static/player/' + from + '.php').match(/PlayUrl\\+'(.*?)'/)[1]; input = { jx: 0, - url: url+sign, + // url: url+sign, + url: url, parse: 0, header: JSON.stringify({ - "referer": HOST, - // 'referer': HOST + "/static/player/vidjs.html", + // "referer": HOST, + 'referer': HOST + "/static/player/vidjs.html", }), } } else { diff --git a/JN/EXT/JS/虎牙直播.js b/JN/EXT/JS/虎牙直播.js index 2cec5a64..264cef44 100644 --- a/JN/EXT/JS/虎牙直播.js +++ b/JN/EXT/JS/虎牙直播.js @@ -5,7 +5,8 @@ var rule = { url:'/cache.php?m=LiveList&do=getLiveListByPage&gameId=fyfilter&tagAll=0&page=fypage', class_name:'娱乐&网游&单机&手游', class_url:'8&1&2&3', - detailUrl:'https://m.huya.com/fyid',//二级详情拼接链接(json格式用) + // detailUrl:'https://m.huya.com/fyid',//二级详情拼接链接(json格式用) + detailUrl:'http://live.yj1211.work/api/live/getRoomInfo?uid=&platform=huya&roomId=fyid',//二级详情拼接链接(json格式用) filterable: 1, filter_url: '{{fl.cateId}}', filter_def:{ @@ -29,42 +30,10 @@ var rule = { timeout:5000, limit:8, play_parse:true, + lazy:'', lazy:`js: - let rid = input.match(/\\/ (\\d + ) / )[1]; - function getRealUrl(live_url) { - let [i, b] = live_url.split('?'); - let r = i.split('/').pop(); - let s = r.replace(/\.(flv|m3u8)/, ''); - let c_tmp = b.split('&').filter(n => n); - let n = {}; - let c_tmp2 = []; - c_tmp.forEach(function(tmp, index) { - if (index < 3) { - n[tmp.split('=')[0]] = tmp.split('=')[1] - } else { - c_tmp2.push(tmp) - } - }); - let tmp2 = c_tmp2.join('&'); - n[tmp2.split('=')[0]] = tmp2.split('=')[1]; - let fm = decodeURIComponent(n.fm).split('&')[0]; - let u = base64Decode(fm); - let p = u.split('_')[0]; - let f = new Date().getTime() + '0000'; - let ll = n.wsTime; - let t = '0'; - let h = [p, t, s, f, ll].join('_'); - let m = md5(h); - return (i + '?wsSecret=' + m + '&wsTime=' + ll + '&u=' + t + '&seqid=' + f + '&' + c_tmp2.pop()).replace('hls', 'flv').replace('m3u8', 'flv') - } - let purl = JSON.parse(request('https://mp.huya.com/cache.php?m=Live&do=profileRoom&roomid=' + rid)).data.stream.flv.multiLine[0].url; - input = { - jx: 0, - url: getRealUrl(purl), - parse: 0, - header: JSON.stringify({ - 'user-agent': 'Mozilla/5.0' - }) + if (/m\\.huya/.test(input)) { + rule.sniffer = 0 } `, 推荐:`js: @@ -93,6 +62,133 @@ var rule = { }); setResult(d); `, - 二级:'*', - 搜索:'json:response.3.docs;game_roomName;game_screenshot;game_nick;room_id', + // 二级:'*', + 二级: `js: + try { + if (typeof play_url === "undefined") { + var play_url = "" + } + var jo = JSON.parse(request(input)).data; + VOD = { + vod_id: jo.roomId, + vod_name: jo.roomName, + vod_pic: jo.roomPic, + type_name: "虎牙." + jo.categoryName, + vod_director: '🆙 ' + jo.ownerName, + vod_content: "🏷分区:虎牙" + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播") + }; + let episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrlMultiSource?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //多线路 + if (Object.keys(episodes).length !== 0) { + let playFrom = []; + let playList = []; + let kplayList = []; + Object.keys(episodes).forEach(function(key) { + playFrom.append(key); + kplayList = episodes[key].map(function(it) { + let title = it.qualityName; + let playUrl = it.playUrl + return title + "$" + play_url + urlencode(playUrl) + }).join("#") + playList.append(kplayList); + }); + let vod_play_from = playFrom.join("$$$"); + let vod_play_url = playList.join("$$$"); + VOD["vod_play_from"] = vod_play_from; + VOD["vod_play_url"] = vod_play_url; + } else { + var d = []; + episodes = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrl?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data; //单线路 + var name = { + "OD": "原画", + "FD": "流畅", + "LD": "标清", + "SD": "高清", + "HD": "超清", + "2K": "2K", + "4K": "4K", + "FHD": "全高清", + "XLD": "极速", + "SQ": "普通音质", + "HQ": "高音质" + }; + Object.keys(episodes).forEach(function(key) { + if (!/ayyuid|to/.test(key)) { + d.push({ + title: name[key], + url: episodes[key] + }) + } + }); + d.push( + { + title: "虎牙解析", + url: "http://cfss.cc/cdn/hy/" + jo.roomId + ".flv" + }, + { + title: "解析1", + url: "http://epg.112114.xyz/huya/" + jo.roomId + }, + { + title: "解析2", + url: "https://www.aois.eu.org/live/huya/" + jo.roomId + }, + { + title: "解析3", + url: "https://www.goodiptv.club/huya/" + jo.roomId + }, + { + title: "解析4", + url: "http://maomao.kandiantv.cn/huya1.php?id=" + jo.roomId + }, + { + title: "解析5", + url: "http://43.138.170.29:35455/huya/" + jo.roomId + }, + { + title: "解析6", + url: "http://8.210.232.168/php/huya.php?id=" + jo.roomId + }, + { + title: "原址嗅探", + url: "https://m.huya.com/" + jo.roomId + }, + ); + VOD["vod_play_from"] = "播放源"; + VOD["vod_play_url"] = d.map(function(it) { + return it.title + "$" + it.url + }).join("#"); + setResult(d); + } + } catch (e) { + log("获取二级详情页发生错误:" + e.message); + } + `, + // 搜索:'json:response.3.docs;game_roomName;game_screenshot;game_nick;room_id', + 搜索: `js: + var d = []; + let jo = JSON.parse(request(input)).response[3].docs; + jo.forEach(it => { + d.push({ + url: it.room_id, + title: it.game_roomName, + img: it.game_screenshot, + desc: '👁' + it.game_total_count + ' 🆙' + it.game_nick, + }) + }); + setResult(d); + `, + + //是否启用辅助嗅探: 1,0 + sniffer:1, + // 辅助嗅探规则js写法 + isVideo: `js: + log(input); + if(/\\/huya/.test(input)) { + input = true + } else if(/\\.flv?|\\.m3u8?|\\.mp4?/.test(input)){ + input = true + }else{ + input = false + } + `, } \ No newline at end of file