野果短剧
API版
nuo-an (15232)17小时前
YE果
{
"bookSourceGroup": "成人",
"bookSourceName": "野果短剧",
"bookSourceType": 4,
"bookSourceUrl": "API版",
"bookUrlPattern": ".*api\\.php\\\/playlet\\\/detail.*",
"coverDecodeJs": "(function(){\n var bytes = null;\n try {\n var isStream = false;\n try { if (result instanceof Packages.java.io.InputStream) { isStream = true; } } catch(e0) {}\n if (!isStream && result && typeof result.read === 'function') { isStream = true; }\n if (isStream) {\n var out = new Packages.java.io.ByteArrayOutputStream();\n var b;\n while ((b = result.read()) != -1) { out.write(b); }\n bytes = out.toByteArray();\n } else {\n bytes = result;\n }\n } catch(e) { bytes = result; }\n if (!bytes) { return result; }\n try {\n var keyBytes = java.strToBytes('f5d965df75336270', 'UTF-8');\n var ivBytes = java.strToBytes('97b60394abc2fbe1', 'UTF-8');\n var dec = java.createSymmetricCrypto('AES\/CBC\/PKCS5Padding', keyBytes, ivBytes).decrypt(bytes);\n if (dec && dec.length > 4) {\n var b0 = dec[0] & 0xff, b1 = dec[1] & 0xff;\n if (b0 === 0xff && b1 === 0xd8) { return dec; }\n if (b0 === 0x89 && b1 === 0x50) { return dec; }\n if (b0 === 0x47 && b1 === 0x49) { return dec; }\n if (b0 === 0x52 && b1 === 0x49 && (dec[2] & 0xff) === 0x46 && (dec[3] & 0xff) === 0x46) { return dec; }\n }\n } catch(e2) {}\n return bytes;\n})()",
"customButton": false,
"customOrder": 12,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"eventListener": false,
"exploreScreen": "",
"exploreUrl": "@js:var cats=[\n{name:'最新',p:{}},\n{name:'最热',p:{recommend:2}},\n{name:'野果原创',p:{theme:7}},\n{name:'真人短剧',p:{theme:8}},\n{name:'魔改漫剧',p:{theme:9}},\n{name:'网红改编',p:{theme:10}},\n{name:'PMV裸舞',p:{theme:11}},\n{name:'禁忌伦理',p:{setting:23}},\n{name:'职场反差',p:{setting:24}},\n{name:'改造调教',p:{setting:25}},\n{name:'出轨绿帽',p:{setting:26}},\n{name:'高H剧情',p:{setting:27}},\n{name:'后宫多人',p:{setting:28}},\n{name:'逆袭系统',p:{setting:29}},\n{name:'校园',p:{background:39}},\n{name:'都市',p:{background:40}},\n{name:'年代',p:{background:41}},\n{name:'古代',p:{background:43}},\n{name:'玄幻',p:{background:44}},\n{name:'末世',p:{background:45}},\n{name:'灵异',p:{background:46}},\n{name:'7天内',p:{time:1}},\n{name:'14天内',p:{time:2}},\n{name:'30天内',p:{time:3}},\n{name:'90天内',p:{time:4}}\n];\nvar ui=[];\nvar searchKey='搜索';\nui.push({title:searchKey,type:'text',default:'',style:{layout_flexGrow:1,layout_flexBasisPercent:1}});\nui.push({title:'🔍 搜索',type:'button',action:\"var k=String(infoMap['搜索']||'').trim();if(!k){java.toast('请输入片名\/演员关键词');}else{try{java.searchBook(k,source);}catch(e){try{java.searchBook(k);}catch(e2){java.toast('搜索失败:'+String(e2));}}}\",style:{layout_flexGrow:0,layout_flexBasisPercent:1}});\ncats.forEach(function(c){\n var p={};for(var k in c.p){p[k]=String(c.p[k]);}\n ui.push({title:c.name,url:'@js:ygExploreUrl(page,'+JSON.stringify(p)+')',style:{layout_flexGrow:1,layout_flexBasisPercent:0.25}});\n});\nJSON.stringify(ui)",
"header": "{\"User-Agent\":\"Mozilla\/5.0 (Linux; Android 14; Pixel 8) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/124.0.0.0 Mobile Safari\/537.36\"}",
"jsLib": "var API='https:\/\/yeguodj.com\/api.php';\nvar BASE={bundleId:'com.pwa.mater',version:'1.3.2',oauth_type:'web',language:'zh',via:'pwa',oauth_id:'7d05538c4b8a5e74e82f93c0dab0163c',token:'',trace_id:'7d05538c4b8a5e74e82f93c0dab0163c'};\nvar AESKEY='2acf7e91e9864673',AESIV='1c29882d3ddfcfd6';\nfunction ygBody(m){\n var b=[];\n for(var k in m){if(m[k]!==null&&m[k]!==undefined){b.push(k+'='+encodeURIComponent(String(m[k])));}}\n return b.join('&');\n}\nfunction ygUrlCfg(path, body){\n return API+path+',{\"method\":\"POST\",\"body\":\"'+body+'\",\"headers\":{\"Content-Type\":\"application\/x-www-form-urlencoded\"}}';\n}\nfunction ygMerge(extra){\n var m={};\n for(var k in BASE){m[k]=BASE[k];}\n for(var k2 in extra){m[k2]=extra[k2];}\n return ygBody(m);\n}\nfunction ygExploreUrl(page, filter){\n var m={};\n for(var k in BASE){m[k]=BASE[k];}\n m.page=String(page||1);\n for(var k2 in filter){m[k2]=String(filter[k2]);}\n return ygUrlCfg('\/theater\/exploreList',ygBody(m));\n}\nfunction ygPlayUrlCfg(eid,vid){\n return ygUrlCfg('\/playlet\/play',ygMerge({episode_id:String(eid),video_id:String(vid)}));\n}\nfunction ygDecryptData(dataB64){\n var k=CryptoJS.enc.Utf8.parse(AESKEY);\n var iv=CryptoJS.enc.Utf8.parse(AESIV);\n var d=CryptoJS.AES.decrypt({ciphertext:CryptoJS.enc.Base64.parse(String(dataB64))},k,{iv:iv,padding:CryptoJS.pad.Pkcs7});\n return d.toString(CryptoJS.enc.Utf8);\n}\nfunction ygRespData(respText){\n var resp=JSON.parse(String(respText));\n if(!resp.data){return null;}\n var plain=ygDecryptData(resp.data);\n var j=JSON.parse(plain);\n return j.data||j;\n}",
"lastUpdateTime": "1792764881971",
"respondTime": 180000,
"ruleBookInfo": {
"canReName": "text",
"coverUrl": "$.cover",
"init": "@js:(function(){var d=ygRespData(result);if(d&&d.episodes){for(var i=0;i<d.episodes.length;i++){d.episodes[i].video_id=d.video_id;}}return d||null;})()",
"intro": "$.description",
"kind": "$.tags",
"lastChapter": "@js:('更新至'+result.episode_count+'集')",
"name": "$.title"
},
"ruleContent": {
"content": "@js:(function(){var d=ygRespData(result);return d?String(d.video_url||''):'';})()",
"sourceRegex": ".*\\.m3u8.*"
},
"ruleExplore": {
"bookList": "@js:(function(){var d=ygRespData(result);return d?(d.list||[]):[];})()",
"bookUrl": "@js:ygUrlCfg('\/playlet\/detail',ygMerge({id:result.video_id}))",
"coverUrl": "$.cover",
"kind": "$.tags",
"lastChapter": "@js:String(result.episode_id)",
"name": "$.title",
"wordCount": "@js:(result.play_count_text+'播放')"
},
"ruleSearch": {
"bookList": "@js:(function(){var d=ygRespData(result);return d?(d.list||[]):[];})()",
"bookUrl": "@js:ygUrlCfg('\/playlet\/detail',ygMerge({id:result.video_id}))",
"checkKeyWord": "探花",
"coverUrl": "$.cover",
"intro": "$.description",
"kind": "$.tags",
"lastChapter": "@js:(result.episodes+'集')",
"name": "$.title",
"wordCount": "@js:(result.play_count_text+'播放')"
},
"ruleToc": {
"chapterList": "@js:(function(){var d=ygRespData(result);if(d&&d.episodes&&d.video_id){for(var i=0;i<d.episodes.length;i++){d.episodes[i].video_id=d.video_id;}}return d?(d.episodes||[]):[];})()",
"chapterName": "@js:(result.sort+'.'+result.title)",
"chapterUrl": "@js:ygPlayUrlCfg(result.id,result.video_id)"
},
"searchUrl": "@js:(function(){return ygUrlCfg('\/search\/result',ygMerge({keyword:key,page:String(page||1)}));})()",
"weight": 0
}