diff --git a/jtxtv09/js/310直播.js b/jtxtv09/js/310直播.js new file mode 100644 index 0000000..0f73404 --- /dev/null +++ b/jtxtv09/js/310直播.js @@ -0,0 +1,22 @@ +var rule = { + title:'310直播', + host:'http://www.310.tv', + url:'/?s=0&t=1&a=fyclass&g=fypage', + searchUrl:'', + searchable:0, + quickSearch:0, + class_name:'热门&足球&篮球', + class_url:'0&1&2', + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + play_parse:false, + lazy:'', + limit:6, + double:false, + 推荐:'*', + 一级:'.list_content a;.jiabifeng&&p:lt(5)&&Text;.feleimg img&&src;a&&t-nzf-o;a&&href', + 二级:'*', + 搜索:'', +} \ No newline at end of file diff --git a/jtxtv09/js/360吧.js b/jtxtv09/js/360吧.js new file mode 100644 index 0000000..b6d63d6 --- /dev/null +++ b/jtxtv09/js/360吧.js @@ -0,0 +1,73 @@ +globalThis.getVideos = function(link, key) { + let html = request(link); + let json = JSON.parse(html); + let data = json.data; + data = data[key]; + let videos = data.map((n) => { + let id = n.url; + let name = n.league_name_zh + ' ' + n.home_team_zh + ' VS ' + n.away_team_zh; + let pic = n.cover; + let remarks = n.nickname; + return { + vod_id: id, + vod_name: name, + vod_pic: pic, + vod_remarks: remarks, + }; + }); + return videos +} +var rule = { + 类型: '影视', //影视|听书|漫画|小说 + title: '360吧[球]', + host: 'https://m.360ba.co/', + homeUrl: '/api/web/h5_index', + url: '/api/web/live_lists/fyclass', + searchUrl: '/api/web/search?keyword=**', + searchable: 2, + quickSearch: 0, + filterable: 0, + headers: { + 'User-Agent': 'MOBILE_UA', + }, + timeout: 5000, + class_name: '全部&足球&篮球&综合', + class_url: '1&2&3&99', + play_parse: true, + pagecount: { + "1": 1, + "2": 1, + "3": 1, + "99": 1, + }, + lazy: $js.toString(() => { + input = { + parse: 0, + url: input, + header: rule.headers + }; + }), + 预处理: $js.toString(() => { + Object.assign(rule.headers, { + 'Referer': rule.host, + 'Origin': rule.host, + }); + }), + 推荐: $js.toString(() => { + VODS = getVideos(input, 'hot_matches'); + + }), + 一级: $js.toString(() => { + VODS = []; + if (MY_PAGE <= 1) { + VODS = getVideos(input, 'data'); + } + }), + 二级: '*', + 搜索: $js.toString(() => { + VODS = []; + if (MY_PAGE <= 1) { + VODS = getVideos(input, 'ball'); + } + }), +} \ No newline at end of file diff --git a/jtxtv09/js/56动漫.js b/jtxtv09/js/56动漫.js new file mode 100644 index 0000000..266b5f0 --- /dev/null +++ b/jtxtv09/js/56动漫.js @@ -0,0 +1,40 @@ +var rule = { + title: '56动漫', + host: 'https://www.56dm.cc/', + url: 'https://www.56dm.cc/type/fyclass-fypage.html', + searchUrl: 'https://www.56dm.cc/search/**----------fypage---.html', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + filterable: 0, //是否启用分类筛选, + headers: { + 'User-Agent': 'UC_UA', // "Cookie": "" + }, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html', + class_parse: '.snui-header-menu-nav li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: `js: + if(/\\.(m3u8|mp4)/.test(input)){ + input = {parse:0,url:input} + }else{ + if(rule.parse_url.startsWith('json:')){ + let purl = rule.parse_url.replace('json:','')+input; + let html = request(purl); + input = {parse:0,url:JSON.parse(html).url} + }else{ + input= rule.parse_url+input; + } + } + `, + limit: 6, + 推荐: '.cCBf_FAAEfbc;li;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.cCBf_FAAEfbc li;a&&title;a&&data-original;.dAD_BBCI&&Text;a&&href', + 二级: { + "title": "h1&&Text", + "img": ".stui-content__thumb .lazyload&&data-original", + "desc": ".cCBf_DABCcac__hcIdeE p:eq(0)&&Text;.cCBf_DABCcac__hcIdeE p:eq(1)&&Text;.cCBf_DABCcac__hcIdeE p:eq(2)&&Text;.cCBf_DABCcac__hcIdeE p:eq(3)&&Text;.cCBf_DABCcac__hcIdeE p:eq(4)&&Text", + "content": ".detail&&Text", + "tabs": ".channel-tab li", + "lists": ".play-list-content:eq(#id) li" + }, + 搜索: '.cCBf_FAAEfbc__dbD;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href;.cCBf_FAAEfbc__hcIdeE&&p:eq(0) p&&Text', +} \ No newline at end of file diff --git a/jtxtv09/js/88看球.js b/jtxtv09/js/88看球.js new file mode 100644 index 0000000..c552ea3 --- /dev/null +++ b/jtxtv09/js/88看球.js @@ -0,0 +1,61 @@ +var rule = { + title:'88看球', + // host:'http://www.88kanqiu.cc', + host:'http://www.88kanqiu.bar/', + 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, + 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.replace('play', 'play-url')); + let pdata = JSON.parse(html).data; + pdata = pdata.slice(6); + pdata = pdata.slice(0, -2); + pdata = base64Decode(pdata); + // log(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/jtxtv09/js/APPV2.js b/jtxtv09/js/APPV2.js new file mode 100644 index 0000000..ea7a1eb --- /dev/null +++ b/jtxtv09/js/APPV2.js @@ -0,0 +1,109 @@ +/** + * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少1 + * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少2 + */ + +var rule = { + title: 'APPV2[模板]', + author: '道长', + version: '20241012 beta1', + update_info: ` +20241012: +1.根据群友嗷呜的appv2模板修改成可传参源,类似采集之王用法传参 +`.trim(), + host: '', + url: '/api.php/app/video?tid=fyclassfyfilter&limit=20&pg=fypage', + filter_url: '', + filter: {}, + homeUrl: '/api.php/app/index_video', + detailUrl: '/api.php/app/video_detail?id=fyid', + searchUrl: '/api.php/app/search?text=**&pg=fypage', + parseUrl: '', + searchable: 2, + quickSearch: 1, + filterable: 1, + headers: { + 'User-Agent': 'okhttp/4.1.0' + }, + params: 'http://122.228.85.203:1000$http://122.228.85.203:1000/play?url=', + hostJs: $js.toString(() => { + HOST = rule.params.split('$')[0]; + }), + 预处理: $js.toString(() => { + log(`传入参数:${rule.params}`); + let _host = rule.params.split('$')[0]; + rule.parseUrl = rule.params.split('$')[1]; + let _url = _host.rstrip('/') + '/api.php/app/nav?token'; + let _headers = {'User-Agent': 'Dart/2.14 (dart:io)'}; + let html = request(_url, {headers: _headers}); + let data = JSON.parse(html); + let _classes = []; + let _filter = {}; + let _filter_url = ''; + let dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序"}; + let jsonData = data.list; + for (let k = 0; k < jsonData.length; k++) { + let hasNonEmptyField = false; + let _obj = { + type_name: jsonData[k].type_name, + type_id: jsonData[k].type_id, + }; + _classes.push(_obj); + for (let key in dy) { + if (key in jsonData[k].type_extend && jsonData[k].type_extend[key].trim() !== "") { + hasNonEmptyField = true; + break + } + } + if (hasNonEmptyField) { + _filter[String(jsonData[k].type_id)] = []; + for (let dkey in jsonData[k].type_extend) { + if (dkey in dy && jsonData[k].type_extend[dkey].trim() !== "") { + if (k === 0) { + _filter_url += `&${dkey}={{fl.${dkey}}}` + } + let values = jsonData[k].type_extend[dkey].split(','); + let valueArray = values.map(value => ({"n": value.trim(), "v": value.trim()})); + _filter[String(jsonData[k].type_id)].push({"key": dkey, "name": dy[dkey], "value": valueArray}) + } + } + } + } + rule.classes = _classes; + rule.filter = _filter; + rule.filter_url = _filter_url; + }), + class_parse: $js.toString(() => { + input = rule.classes; + }), + play_parse: true, + lazy: $js.toString(() => { + if (!/^http/.test(input)) { + input = rule.parseUrl + input + } else { + input = { + url: input, + parse: 0, + header: '' + } + } + + }), + 推荐: $js.toString(() => { + let data = JSON.parse(request(input)).list; + let com = []; + data.forEach(item => { + if (Array.isArray(item.vlist) && item.vlist.length !== 0) { + com = com.concat(item.vlist) + } + }) + VODS = com + }), + 一级: $js.toString(() => { + VODS = JSON.parse(request(input)).list + }), + 二级: $js.toString(() => { + VOD = JSON.parse(request(input)).data + }), + 搜索: '*', +} \ No newline at end of file