From 7e687ab3e3da9c16acbe24e90ed0c89b444a349f Mon Sep 17 00:00:00 2001 From: yeyin Date: Sun, 12 Oct 2025 14:22:21 +0200 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20=E5=8A=A8=E6=BC=AB=E9=A2=91=E9=81=93/JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 动漫频道/JS/喵次元.js | 237 ++++++++++++++++++++++++++++++++++++++++ 动漫频道/JS/好看动漫.js | 29 +++++ 动漫频道/JS/花子动漫.js | 72 ++++++++++++ 动漫频道/JS/路漫漫.js | 40 +++++++ 动漫频道/JS/驴番动漫.js | 12 ++ 5 files changed, 390 insertions(+) create mode 100644 动漫频道/JS/喵次元.js create mode 100644 动漫频道/JS/好看动漫.js create mode 100644 动漫频道/JS/花子动漫.js create mode 100644 动漫频道/JS/路漫漫.js create mode 100644 动漫频道/JS/驴番动漫.js diff --git a/动漫频道/JS/喵次元.js b/动漫频道/JS/喵次元.js new file mode 100644 index 0000000..02e19ad --- /dev/null +++ b/动漫频道/JS/喵次元.js @@ -0,0 +1,237 @@ +globalThis.getTime = function(){ +let ts= Math.round(new Date().getTime()/1000).toString(); +log('获取时间戳:'+ts); +return ts +} + +globalThis.signUrl=function(json){ +// 获取所有节点的名称并按字母顺序排序 +let json1=JSON.parse(json); +var sortedKeys = Object.keys(json1).sort(); +// 遍历排好序的节点名称列表,并打印相应的值 +let s=''; +for (let key in sortedKeys){ + let value=json1[sortedKeys[key]]; + if(value!=undefined){ + s=s+value; + } +} +//log(s); +//log(md5(s+"alskeuscli")); +s=json.slice(0,-1)+",\"sign\":\""+md5(s+"alskeuscli")+"\"\}"; +log(s); +return s; +} + +globalThis.posturl=function(url,json){ + let html= fetch(url, { + body: JSON.parse(signUrl(json)), + headers: {"User-Agent": "okhttp/3.12.3"}, + method: "POST" + }, true); + return JSON.parse(html); +} +var rule = { + title: '喵次元[APP]', + host: 'https://cym.fengche.tv/api.php/', + hostJs:` + var json2 = '{"versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/type/get_list"; + let jo=posturl(url,json2).data.list; + let filters = {}; + let cb={"class":"类型","area":"地区","lang":"语言","year":"年份","star":"演员","director":"导演","state":"状态","version":"版本"}; + let class1=[]; + jo.forEach(function(tp) { + rule.class_name=rule.class_name +"&"+tp['type_name']; + rule.class_url=rule.class_url +"&"+tp['type_id']; + let ep=tp['type_extend']; + let classes = []; + for (let key in ep){ + let value=ep[key]; + + if (value.length>1){ + class1.append(key); + //写成{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"}]}这种格式 + let dd=value.toString().split(','); + var s=[]; + dd.forEach(function(i){ + s.append({'n':i,'v':i}); + }) + let ss={"key":key,"name":cb[key],"value":s}; + classes.append(ss); + } + } + filters[tp['type_id']]=classes; + }); + class1=Array.from(new Set(class1)).sort(); + let s="" + class1.forEach(function(tp) { + s=s+"&" + tp +"={{fl."+tp+"}}"; + }) + log(s); + rule.filter_url=s; + rule.filter=filters; + log(rule.filter); + log(rule.class_name); + log(rule.class_url); +`, + + homeUrl:'?hpindigo=**&page=fypage', + url:'?t=fyclass&page=fypage', + filter_url:'', + filter: {}, + detailUrl:'?ids=', + searchUrl: '?hpindigo=**&page=fypage', + searchable: 2, + quickSearch: 0, + filterable:1,//是否启用分类筛选, + headers:{'User-Agent':'MOBILE_UA'}, + timeout:10000, + class_name:'全部', // 分类筛选 /api.php/app/nav + class_url:'0', + play_parse:true, + lazy:`js: + log("*************测试*************"); + let dd=input.split("&"); + let ju_id=dd[0]; + let plyer=dd[1]; + let video_id=dd[2]; + var json2 = '{"player_id":"'+plyer+'","ju_id":"'+ju_id+'","vod_id":"'+video_id+'","versionName":"5.6.9","uuid":"3899af59c0b12b98","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/video/get_definition"; + let html = posturl(url,json2).data[0].url.trim(); + log(html); + //input=aesX("AES/CBC/PKCS7",false,html,true,"sLunqcoH85Nm/jDmFKns7A==","fedcba9876543210",false); + //log(input); + eval(getCryptoJS); + var key = CryptoJS.enc.Hex.parse("734C756E71636F4838354E6D2F6A446D464B6E7337413D3D0000000000000000"); + var iv = CryptoJS.enc.Utf8.parse("fedcba9876543210"); + input=(CryptoJS.AES.decrypt(html, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + })).toString(CryptoJS.enc.Utf8) + log(input) + `, + //lazy:'js:input=/m3u8|mp4|flv/.test(input)?{jx:0,url:input,parse:0}:{jx:1,url:input,parse:1}', + limit:6, + // 推荐:'json:items;*;*;*;*', + 推荐:'json:data.sections[0].items;*;*;*;*', + 推荐:`js: + log(input); + let page=input.split("&")[1].split("=")[1]; + log(page); + var json2 = '{"page":"'+page+'","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/video/index"; + let jo = posturl(url,json2); + let vodList = jo.data; + log(vodList); + let videos=[]; + vodList.forEach(function(vod) { + vod.video.forEach(function(vod1) { + let aid = (vod1["vod_id"]); + let title = vod1["vod_name"]; + let img = vod1["vod_pic"]; + let remark = vod1["vod_remarks"]; + videos.push({ + vod_id: aid, + vod_name: title, + vod_pic: img, + vod_remarks: remark + }) + }) + }) + + VODS=videos; + `, + 一级:`js: + log(input); + let canshu=input.split("?")[1].split("&"); + let dd={}; + canshu.forEach(function(key){ + log(key); + let k=key.split("="); + dd[k[0]]=k[1]; + }) + var json2 = '{"type_id":"'+dd["t"]+'","vod_year":"'+dd["year"]+'","limit":"20","orderby":"","vod_area":"'+dd["area"]+'","vod_class":"'+dd["class"]+'","page":"'+dd["page"]+'","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","vod_name":"","versionCode":"35","ctime":"'+getTime()+'"}'; + log(json2); + let url="https://cym.fengche.tv/api.php/video/get_list"; + let jo = posturl(url,json2); + var d=[]; + jo.data.list.forEach(function(it){ + d.push({ + title:it.vod_name, + img:it.vod_pic, + desc:it.vod_remarks, + url:it.vod_id, + content:it.vod_blurb}) + }); + setResult(d); + `, + 二级:`js: + log(orId); + var json2 = '{"vod_id":"'+orId+'","versionName":"5.6.9","uuid":"3899af59c0b12b98","version":"4835d0a2","versionCode":"35","ctime":"'+getTime()+'"}'; + log(json2); + let url="https://cym.fengche.tv/api.php/video/get_detail"; + let jo = posturl(url,json2); + let node = jo.data; + VOD = { + vod_id: node["vod_id"], + vod_name: node["vod_name"], + vod_pic: node["vod_pic"], + type_name: node["vod_class"], + vod_year: node["vod_year"], + vod_area: node["vod_area"], + vod_remarks: node["vod_remarks"], + vod_actor: node["vod_actor"], + vod_director: node["vod_director"], + vod_content: node["vod_content"] + }; + let episodes = node.player; + let playMap = {}; + episodes.forEach(function(ep) { + let playurls = ep["code"]; + let source = ep["name"]; + log (playurls); + log (source); + //这里分别获取线路 + var json2 = '{"limit":"5000","vod_id":"'+orId+'","page":"1","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","versionCode":"35","player":"'+playurls+'","ctime":"'+getTime()+'"}'; + log(json2); + let url="https://cym.fengche.tv/api.php/video/get_player"; + let jo1 = posturl(url,json2); + jo1.data.list.forEach(function(playurl) { + if (!playMap.hasOwnProperty(source)) { + playMap[source] = [] + } + playMap[source].append(playurl["drama"]+"$"+playurl["ju_id"]+"&"+playurl["plyer"]+"&"+playurl["video_id"]) + }) + }); + + let playFrom = []; + let playList = []; + + Object.keys(playMap) + .forEach(function(key) { + playFrom.append(key); + playList.append(playMap[key].join("#")) + }); + 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 + `, + 搜索:`js: + let page=input.split("&")[1].split("=")[1]; + log(page); + var json2 = '{"vod_year":"","limit":"20","orderby":"up","vod_area":"","vod_class":"","page":"'+page+'","versionName":"5.6.9","uuid":"9cc01079c64e2495","version":"4835d0a2","vod_name":"'+KEY+'","versionCode":"35","ctime":"'+getTime()+'"}'; + let url="https://cym.fengche.tv/api.php/video/get_list"; + let jo = posturl(url,json2); + var d=[]; + jo.data.list.forEach(function(it){ + d.push({ + title:it.vod_name, + img:it.vod_pic, + desc:it.vod_remarks, + url:it.vod_id}) + }); + setResult(d);`, +} \ No newline at end of file diff --git a/动漫频道/JS/好看动漫.js b/动漫频道/JS/好看动漫.js new file mode 100644 index 0000000..e1d5537 --- /dev/null +++ b/动漫频道/JS/好看动漫.js @@ -0,0 +1,29 @@ +var rule={ + title: '好看动漫', + host: 'https://www.youjiula.com/', + url: 'https://www.youjiula.com/youjiu/fyclass-fypage.html', + searchUrl: 'https://www.youjiula.com/search.php?page=fypage&searchword=**&searchtype=', + 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: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级: { + "title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text", + "img": ".stui-content__thumb .lazyload&&data-original", + "desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text", + "content": "#desc&&Text", + "tabs": ".stui-pannel-box h3", + "lists": ".stui-content__playlist:eq(#id) li" + }, + 搜索: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text', + + } \ No newline at end of file diff --git a/动漫频道/JS/花子动漫.js b/动漫频道/JS/花子动漫.js new file mode 100644 index 0000000..52af9a6 --- /dev/null +++ b/动漫频道/JS/花子动漫.js @@ -0,0 +1,72 @@ +var rule = { + title: '花子动漫[漫]', + host: 'https://www.huazidm.com', + class_name: 'TV动漫&剧场&特摄', + class_url: '1&2&3', + searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50', + searchUrl: '/vodsearch/**----------fypage---.html', + searchable: 2, + quickSearch: 0, + headers: { + 'User-Agent': 'MOBILE_UA', + }, + url: '/index.php/api/vod#type=fyclassfyfilter&page=fypage', + filterable: 0, + filter_url: '&class={{fl.class}}&year={{fl.year}}&letter={{fl.letter}}&by={{fl.by}}', + filter: 'H4sIAAAAAAAAA+2W204TURSG32WuMdnT0nbDnZzP57PhopImEhETWk0IIUFOloNQDLSigGJCLCIWhJCWgr4MM9O+hdPO2mstDzE10cSYudv/989u55t0uteUpmuVd6a0+6FJrVIbGQuGw1qZNh58ELKjdZo19lbs/Dg49ihUvG7cxsZCMj+XLGA7aNNlQK9mb9Jxa2sVCsrqCmv7sxGLQg0Bd8fWjI9HaqsTcN/ccW5/Ru1zAnaXKSt6qjonYHf4JXexrDon4PcdPDUyWfV9TlCdGX1hxhPQQSjlPs3YnvVhQ+1zAnaJAyOdVp0T8D7fbdC9QMB9n7LmvHpmELB7s2+8OladE7B7skLPBQI6LD7Pbx8qByfgvrWkFVtU+5yA3c6l/TRU5wTV5V+f3WRi0EFQXS62m1tbgg4C3WfMnInjfRYDdnPL5uxL1TkBu7P9/O5ba+u9qjHjFem0GV03NzPqCsz4HE7Wc6lzuoIyfsbVkbWZZZ+BGd0WlHRhNT1c4M67NBkKTtCrZGTOb7LXJb5KHuEpB1ZcMu4l7uXcQ9zDuU5c51wQF4zrFcjtJeOSuOQ8QDzAuZ+4n3MfcR/n5KtzX518de6rk6/OfXXy1bmvTr469xXkK7ivIF/BfQX5Cu4ryFdwX0G+gvsK8hXcV5Cv4L6CfAX3FeQruK8gX0G+ekWF8i0uGZfEJecB4gHO/cT9nPuI+zgvJ17OuZe4l3MPcQ/nOnGdc0Gc+0ryldxXkq/kvpJ8JfeV5Cu5ryRfyX0l+UruK8lXcl9JvpL7SvKV3FeSr73kfztjoUgkxP94jhNm6lmJfzy3AdxGUgWkCkk1kGokNUBqkNQCqUVSB6QOST2QeiQNQBqQNAJpRNIEpAlJM5BmJC1AWpC0AmlF0gakDUk7kHYkHUA6kHQC6UTSBaQLSTeQbiQ9QHqQ9ALpRdIHpA9JP5B+JANABpAMAhlEMgRkCIm4pd6Bwor/VO5O0s/ETFzkE+c//EzM1SVzZ8aMn8BHREbtq/F0LJb2QAblvdFImJe51LwRVbNEeOThRKjw9cNlmuefGDl/OVb+hdHxvxgPf3cEdAcidyByByK1dAcidyByByJ3IPp+IPL+qYFoOXlzvaOObieUMrb8dMRwj2736HaPbrV0j2736HaPbvfo/vbonv4K+TrlXkAbAAA=', + filter_def: {}, + detailUrl: '/voddetail/fyid.html', + play_parse: true, + sniffer: 1, + is_video: 'obj/tos|bd.xhscdn|/ugc/', + lazy: $js.toString(() => { + input = { + parse: 1, + url: input, + //js:'try{let urls=Array.from(document.querySelectorAll("iframe")).filter(x=>x.src.includes("?url="));if(urls){location.href=urls[0].src}}catch{}document.querySelector("button").click()', + js: 'try{location.href=document.querySelector("#playleft iframe").src}catch{}document.querySelector("button.swal-button--confirm").click()', + parse_extra: '&is_pc=1&custom_regex=' + rule.is_video, + } + }), + limit: 6, + 推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href', + 一级: $js.toString(() => { + let body = input.split("#")[1]; + let t = Math.round(new Date / 1e3).toString(); + let key = md5("DS" + t + "DCC147D11943AF75"); + let url = input.split("#")[0]; + body = body + "&time=" + t + "&key=" + key; + print(body); + fetch_params.body = body; + let html = post(url, fetch_params); + let data = JSON.parse(html); + VODS = data.list.map(function (it) { + it.vod_pic = urljoin2(input.split("/i")[0], it.vod_pic); + return it + }); + }), + 二级: { + title: '.slide-info-title&&Text;.slide-info:eq(3)--strong&&Text', + img: '.detail-pic&&data-original', + desc: '.fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text', + content: '#height_limit&&Text', + tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a', + tab_text: '.swiper-slide&&Text', + lists: '.anthology-list-box:eq(#id) li', + }, + 搜索: 'json:list;name;pic;;id', + 搜索: $js.toString(() => { + let html = fetch(input); + let list = pdfa(html, ".public-list-box"); + VODS = list.map(x => { + return { + vod_name: pdfh(x, ".thumb-txt&&Text"), + vod_pic: pdfh(x, ".lazy&&data-src"), + vod_remarks: pdfh(x, ".public-list-prb&&Text"), + vod_content: pdfh(x, ".thumb-blurb&&Text"), + vod_id: pdfh(x, "a&&href") + } + }); + }), + 图片替换: '&=>&' +} \ No newline at end of file diff --git a/动漫频道/JS/路漫漫.js b/动漫频道/JS/路漫漫.js new file mode 100644 index 0000000..8adc811 --- /dev/null +++ b/动漫频道/JS/路漫漫.js @@ -0,0 +1,40 @@ +var rule = { + title: "路漫漫", + host: "http://www.lmm36.com", + url: "/vod/show/id/fyclassfyfilter.html", + searchUrl: 'http://www.lmm88.com/vod/search/page/fypage/wd/**.html', + searchable: 2, + quickSearch: 0, + filterable: 1, + filter: "H4sIAAAAAAAAAO2Su04CURCG32XqNXu/wKsYitVsAlHRcEs2hISoECuJxqhRYqMFxkIKKFgLXoY9Lm/hHtB1mPqUU87//Tt7kvm6YEN5vwtHUQxlSBez1dcraFAPTyI8d8LjdrQp1mU8mKwvJjLOB+hp29QyLOc30+MobOibAFGbUhtTi1ILU5NSE1ODUgNRs0RoHiAaUBpg6lPqY+pR6mHqUuoWVDzPxMM75c6eWQryp1dkbXsRcX2bJqP/ixTz7kXEuJ8tb+TW++nf1oNYb9Xyj4p/jvvrj8dVkojpHepUa60m6WSfl+nVEHWah6eNnUXp29P3+SKbv6BS+0y+vKKBw0axUUqNctkoNkqpUR4bxUYpNcpno9gopUYFbBQbpdCo3g8SNsur7Q0AAA==", + filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage", + filter_def: "", + headers: { + "User-Agent": "MOBILE_UA" + }, + timeout: 5000, + class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影", + class_url: "6&7&8&3&4&5", + class_parse: "", + cate_exclude: "", + play_parse: true, + lazy: $js.toString(() => { + input = {parse: 1, url: input, js: ''}; + }), + double: false, + 推荐: "*", + 一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href", + 二级: { + title: ".page-title&&Text;.tag-link&&Text", + img: ".module-item-pic&&.lazyload&&src", + desc: ".video-info-items:eq(3)&&Text;.video-info-items:eq(2)&&Text;;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text", + content: ".video-info-content&&Text", + tabs: ".module-tab-item.tab-item", + lists: ".module-player-list:eq(#id) a", + tab_text: "body&&Text", + list_text: "body&&Text", + list_url: "a&&href" + }, + detailUrl: "", + 搜索: '.row .video-img-box;h6 a&&Text;.lazyload&&data-src;.label&&Text;a&&href', +} \ No newline at end of file diff --git a/动漫频道/JS/驴番动漫.js b/动漫频道/JS/驴番动漫.js new file mode 100644 index 0000000..f5b5819 --- /dev/null +++ b/动漫频道/JS/驴番动漫.js @@ -0,0 +1,12 @@ +Object.assign(muban.mxpro.二级, { + tab_text: 'div--small&&Text', +}); +var rule = { + 模板: 'mxpro', + title: '驴番[漫]', + host: 'https://www.lvfan.fun', + url: 'vodshow/fyclass--------fypage---/', + class_parse: '.navbar-items li;a&&Text;a&&href;.*/(\\d+)/', + searchUrl: '/vodsearch/**----------fypage---/', + tab_exclude: '排序', +} \ No newline at end of file