RULE34Ⓖ
RULE34Ⓖ@js:`{{Get('url')}}`
分享者: xiaohan231 (515)发布时间: 02/23 05:55
V1.5.d版,需导入XH发布页订阅源激活,订阅源源变量填写激活码:555666
{ "articleStyle": 1, "concurrentRate": "20\/10000", "contentBlacklist": "", "customOrder": 6, "enableJs": true, "enabled": true, "enabledCookieJar": true, "header": "<js>\nvar _0x4742=[\"YWVzQmFzZTY0RGVjb2RlVG9TdHJpbmc=\",\"dmFyaWFibGVDb21tZW50\",\"IyMjI3hpYW8taGFuJiYmJg==\",\"QUVTL0VDQi9QS0NTN1BhZGRpbmc=\"],_0xc7ef=function(_0x474281,_0xc7ef55){_0x474281=_0x474281-0x0;var _0x1db329=_0x4742[_0x474281];if(_0xc7ef.xhTBFx===void 0x0){(function(){var _0x1c36ea=function(){var _0x2bf78c;try{_0x2bf78c=Function(\"return (function() {}.constructor(\\\"return this\\\")( ));\")()}catch(_0xcfd8ec){_0x2bf78c=window}return _0x2bf78c},_0xfc2bd5=_0x1c36ea(),_0x336b66=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=\";_0xfc2bd5.atob||(_0xfc2bd5.atob=function(_0x53f773){var _0x31bc68=String(_0x53f773).replace(new RegExp(\"=+$\",\"\"),\"\"),_0x393f6b=\"\";for(var _0x2aec0d=0x0,_0x2d3c6f,_0x1587ad,_0x4c8021=0x0;_0x1587ad=_0x31bc68.charAt(_0x4c8021++);~_0x1587ad&&(_0x2d3c6f=_0x2aec0d%0x4?_0x2d3c6f*0x40+_0x1587ad:_0x1587ad,_0x2aec0d++%0x4)?_0x393f6b+=String.fromCharCode(0xff&_0x2d3c6f>>(-0x2*_0x2aec0d&0x6)):0x0)_0x1587ad=_0x336b66.indexOf(_0x1587ad);return _0x393f6b})})();_0xc7ef.ylPppH=function(_0x1cf9a9){var _0x1bdc89=atob(_0x1cf9a9),_0x3d0935=[];for(var _0x58ca16=0x0,_0x45cb33=_0x1bdc89.length;_0x58ca16<_0x45cb33;_0x58ca16++)_0x3d0935+=\"%\"+(\"00\"+_0x1bdc89.charCodeAt(_0x58ca16).toString(0x10)).slice(-0x2);return decodeURIComponent(_0x3d0935)};_0xc7ef.WMElMN={};_0xc7ef.xhTBFx=!0x0}var _0x191547=_0xc7ef.WMElMN[_0x474281];_0x191547===void 0x0?(_0x1db329=_0xc7ef.ylPppH(_0x1db329),_0xc7ef.WMElMN[_0x474281]=_0x1db329):_0x1db329=_0x191547;return _0x1db329};eval(String(java[_0xc7ef(\"0x0\")](source[_0xc7ef(\"0x1\")],_0xc7ef(\"0x2\"),_0xc7ef(\"0x3\"),\"\")));\nuser_Check();\nheaders={\n \"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/127.0.0.0 Safari\/537.36 Edg\/127.0.0.0\",\n \"Origin\": Get('url'),\n \"Referer\": Get('url'),\n \"Cookie\": cache.get(Get('url') + 'ck') || ''\n}\ncache.put(java.md5Encode16(Get('url') + \"headers\"),JSON.stringify(headers));\nJSON.stringify(headers);\n<\/js>", "injectJs": "", "jsLib": "function get(tag,num) {\n flag = ['','2109','192','15','4747','1821'];\n sort = ['','post_date','video_viewed','rating','duration'];\n duration = ['','&duration_from=60','&duration_from=300','&duration_from=600','&duration_from=1200','&duration_from=1800','&duration_from=3600','&duration_to=600&duration_from=1','&duration_to=1200&duration_from=1'];\n var e = eval(tag + '[' + num + ']');\n return e;\n}\nfunction Get(e) {\n const { java, source, cookie, cache } = this;\n var get = JSON.parse(source.getVariable());\n return get[e];\n}\nfunction Map(e) {\n const { java, source, cookie, cache } = this;\n var infomap = source.getLoginInfoMap();\n var map = (infomap !== null && infomap.get(e)) ? infomap.get(e) : '';\n return String(map);\n}\nfunction Skey(e) {\n const { java, source, cookie, cache } = this;\n var infomap = source.getLoginInfoMap();\n var map = (infomap !== null && infomap.get(e) && String(infomap.get(e)).length > 0) ? infomap.get(e) : 'secret';\n return String(map).replace(\/\\\/$\/,'');\n}", "lastUpdateTime": 0, "loadWithBaseUrl": true, "loginCheckJs": "var res = result;\nurl = java.ruleUrl;\nif(res.body().includes('no-js')){\n cookie.removeCookie(Get('url'));\n result = java.startBrowserAwait(url,\"验证\");\n ck = cookie.getCookie(Get('url'));\n cache.put(Get('url') + 'ck',ck);\n}\nresult;", "loginUi": "[\n {\n name: \"💡 源 站 测 试 💡\",\n type: \"button\",\n action: \"test(1)\",\n style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n },\n { name: \"查看当前\", type: \"button\", action: \"look(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"查看历史\", type: \"button\", action: \"look(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"恢复默认\", type: \"button\", action: \"test(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n { name: \"搜索:\", type: \"text\" },\n\n { name: \"༺ˇ»`ʚ 点击切换分类 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"主题标签\", type: \"button\", action: \"o(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n { name: \"作者标签\", type: \"button\", action: \"o(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n { name: \"༺ˇ»`ʚ 主题标签排序 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"标题\", type: \"button\", action: \"p(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"浏览\", type: \"button\", action: \"p(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"评价\", type: \"button\", action: \"p(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"数量\", type: \"button\", action: \"p(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n { name: \"༺ˇ»`ʚ 切换列表排序 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"默认\", type: \"button\", action: \"q(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"最新\", type: \"button\", action: \"q(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"观看\", type: \"button\", action: \"q(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"好评\", type: \"button\", action: \"q(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"时长\", type: \"button\", action: \"q(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n { name: \"༺ˇ»`ʚ 筛选上传时间 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"全部\", type: \"button\", action: \"s(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"一天\", type: \"button\", action: \"s(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"两天\", type: \"button\", action: \"s(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"一周\", type: \"button\", action: \"s(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"一月\", type: \"button\", action: \"s(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"三月\", type: \"button\", action: \"s(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"一年\", type: \"button\", action: \"s(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n { name: \"\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.2} },\n\n { name: \"༺ˇ»`ʚ 筛选视频时长 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"全部\", type: \"button\", action: \"t(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \">1m\", type: \"button\", action: \"t(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \">5m\", type: \"button\", action: \"t(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \">10m\", type: \"button\", action: \"t(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \">20m\", type: \"button\", action: \"t(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \">30m\", type: \"button\", action: \"t(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \">60m\", type: \"button\", action: \"t(6)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"0-10m\", type: \"button\", action: \"t(7)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"0-20m\", type: \"button\", action: \"t(8)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n { name: \"༺ˇ»`ʚ 点击切换取向 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"全部\", type: \"button\", action: \"r(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"Straight\", type: \"button\", action: \"r(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"Gay\", type: \"button\", action: \"r(2)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"Futa\", type: \"button\", action: \"r(3)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"Music\", type: \"button\", action: \"r(4)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n { name: \"Iwara\", type: \"button\", action: \"r(5)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.25} },\n\n { name: \"༺ˇ»`ʚ 分类加载页数 ɞ´«ˇ༻\", type: \"button\", action: \"login('【加载页数】' + n(2) + '填写数字或范围,如:15或10-20')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"页数:\", type: \"text\" },\n\n { name: \"༺ˇ»`ʚ 作者字母筛选 ɞ´«ˇ༻\", type: \"button\", action: \"login('【字母筛选】' + n(2) + '填写字母筛选作者')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"字母:\", type: \"text\" },\n\n { name: \"༺ˇ»`ʚ 填写收藏词条 ɞ´«ˇ༻\", type: \"button\", action: \"login('【收藏词条】' + n(2) + '填写搜索关键词\\\\n多个关键词用英文逗号“,”隔开')\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"收藏:\", type: \"text\" },\n\n { name: \"长按倍速:\", type: \"text\" },\n { name: \"跳过片头:\", type: \"text\" },\n\n { name: \"༺ˇ»`ʚ 主题模式切换 ɞ´«ˇ༻\", type: \"button\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 1} },\n { name: \"日间模式\", type: \"button\", action: \"a(0)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n { name: \"夜间模式\", type: \"button\", action: \"a(1)\", style: {layout_flexGrow: 1, layout_flexBasisPercent: 0.45} },\n\n {\n name: \"💡 源 站 打 印 💡\",\n type: \"button\",\n action: \"test()\",\n style: {layout_flexGrow: 1, layout_flexBasisPercent: 1}\n }\n]", "loginUrl": "var fburl = '';\noriginal = {\n 'ci0': 0,\n 'ci1': 0,\n 'ci2': 0,\n 'ci3': 0,\n 'o': 0,\n 'p': 0,\n 'q': 0,\n 'r': 0,\n 's': 0,\n 't': 0,\n 'a': 0,\n 'url': 'https:\/\/rule34gen.com',\n 'urls': [\n 'https:\/\/rule34gen.com',\n 'https:\/\/rule34gen.com'\n ]\n};\ntry {\n $$$ = JSON.parse(source.getVariable());\n if ($$$ == null) {\n error;\n } else {\n '';\n };\n} catch (e) {\n $$$ = original;\n put($$$);\n}\nx = '⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚';\nvar Headers = String(cache.get(java.md5Encode16(Get('url') + \"headers\")));\nvar Option = {\n \"method\": \"GET\",\n \"headers\": Headers\n};\nfunction test(e) {\n if (e == undefined) {\n return java.log('\\n' + JSON.stringify($$$['urls'], null, '\\t')) + login('【源站输出提示】' + n(2) + '源站已打印完毕,请到日志查看');\n }\n if (e == 0) {\n login('【初始化提示】' + n(2) + '已恢复默认设置');\n return put(original);\n }\n date1 = new Date().getTime();\n html = java.ajax($$$.urls[e]);\n if(html.includes('no-js')){\n cookie.removeCookie(Get('url'));\n java.startBrowserAwait($$$.urls[e],\"验证\").body();\n date1 = new Date().getTime();\n html = java.ajax($$$.urls[e]);\n }\n date2 = new Date().getTime();\n t = date2 - date1;\n time = t \/ 1000 + 's';\n c = String(html).indexOf('Login');\n logTime = '【' + name(e) + '】\\n┋┋\\n' + '解析时间:' + time;\n if (c == -1 || t > 5000) {\n return login('【访问失败提示】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♣️源站已失效(可能被墙)♣️\\n┋┋\\n请更新网址\/切换源站\/切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n } else if (t < 1000) {\n return login('【网络环境优良】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n❤️延迟低,推荐使用此站❤️\\n┋┋\\n网络环境优良,请继续保持状态\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n } else if (t >= 1000 && t < 2000) {\n return login('【网络环境一般】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♦️延迟一般,勉强可使用♦️\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n } else if (t >= 2000 && t < 5000) {\n return login('【网络环境堪忧】' + n(2) + '┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋\\n' + logTime + '\\n┋┋\\n♠延迟过高,不建议使用♠\\n┋┋\\n请切换其他源站或切换网络环境\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n }\n}\nfunction put(data) {\n return source.setVariable(JSON.stringify(data, null, '\\t'));\n}\nfunction update() {\n $$$['urls'].splice(original['urls'].length);\n time = new Date().getTime();\n html = java.webViewGetOverrideUrl(null, fburl + '?t=' + time, null, '');\n J = org.jsoup.Jsoup.parse(html);\n u = J.select('.col-md-8 a');\n for (i in u) {\n host = String(u[i].attr('href'));\n if (String($$$['urls']).indexOf(host) === -1) {\n java.log('\\n✅已添加源站:\\n' + host);\n $$$['urls'].push(host);\n put($$$);\n }\n }\n return login('【源站更新提示】' + n(2) + '源站更新完毕,请到日志查看');\n}\nfunction name(e) {\n if (e == undefined) {\n e = 0;\n }\n return x[e] + $$$.urls[e];\n}\nfunction login(e) {\n if (e == undefined) {\n return;\n }\n java.longToast(e);\n}\nfunction n(e) {\n n = '\\n';\n for (m = 1; m < e; m++) {\n n = n + '\\n';\n }\n return n;\n}\nfunction k(e) {\n k = ' ';\n for (q = 1; q < e; q++) {\n k = k + ' ';\n }\n return k;\n}\nfunction l(e) {\n l = '';\n for (o = 1; o < e; o++) {\n l = l + '';\n }\n return l;\n}\nfunction look(e) {\n if (e == 0) {\n return login('【查看当前源站】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ' + '📌' + name($$$.ci0)) + '\\n┋┋' + ('\\n' + '🗳订阅分类:' + typeO($$$.o)) + '\\n┋┋' + ('\\n' + '🎯取向分类:' + typeR($$$.r)) + '\\n┋┋' + ('\\n' + '📚主题排序:' + typeP($$$.p)) + '\\n┋┋' + ('\\n' + '📚分类排序:' + typeQ($$$.q)) + '\\n┋┋' + ('\\n' + '📅上传时间:' + typeS($$$.s)) + '\\n┋┋' + ('\\n' + '🎞视频时长:' + typeT($$$.t)) + '\\n┋┋' + ('\\n' + '🌗主题模式:' + typeA($$$.a)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n } else {\n return login('【查看历史接口】\\n\\n┏┅━┅━┅━┅━┅━┅━┅━┅━┅┓\\n┋┋' + ('\\n ci1:' + name($$$.ci1)) + '\\n┋┋' + ('\\n ci2:' + name($$$.ci2)) + '\\n┋┋' + ('\\n ci3:' + name($$$.ci3)) + '\\n┋┋' + '\\n┗┅━┅━┅━┅━┅━┅━┅━┅━┅┛');\n }\n}\nfunction $(e) {\n if (e == undefined) {\n e = result['序号:'];\n e = e > 0 ? e : '0';\n }\n if (\/^ci[123]$\/.test(e)) {\n eval('i=$$$.' + e);\n }\n if (\/\\D|^$\/.test(e) || e < 0 || e >= $$$['urls'].length) {\n return login('【源站错误提示】' + n(2) + '已选择的源站无效,请重新选择');\n }\n $$$['url'] = $$$['urls'][e];\n $$$['ci3'] = $$$['ci2'];\n $$$['ci2'] = $$$['ci1'];\n $$$['ci1'] = $$$['ci0'];\n $$$['ci0'] = e;\n put($$$);\n test(e);\n}\nO = ['主题标签','全部作者'];\nfunction typeO(e) {\n if (e == undefined) {\n e = 0;\n }\n return O[e];\n}\nfunction o(e) {\n if (o == undefined) {\n o = result.o;\n }\n if (e == $$$.o) {\n return login('【分类切换提示】' + n(2) + '已经选择此分类,无需更换');\n }\n login('【分类切换提示】' + n(2) + '已经切换到[' + typeO(e) + ']分类,请刷新分类');\n $$$.o = e;\n return put($$$);\n}\nP = ['标题','浏览','评价','数量'];\nfunction typeP(e) {\n if (e == undefined) {\n e = 0;\n }\n return P[e];\n}\nfunction p(e) {\n if (p == undefined) {\n p = result.p;\n }\n if (e == $$$.p) {\n return login('【主题排序提示】' + n(2) + '已经选择此排序,无需更换');\n }\n login('【主题排序提示】' + n(2) + '已经切换到[' + typeP(e) + ']排序,请刷新分类');\n $$$.p = e;\n return put($$$);\n}\nQ = ['默认','最新','观看','好评','时长'];\nfunction typeQ(e) {\n if (e == undefined) {\n e = 0;\n }\n return Q[e];\n}\nfunction q(e) {\n if (q == undefined) {\n q = result.q;\n }\n if (e == $$$.q) {\n return login('【排序切换提示】' + n(2) + '已经选择此排序,无需更换');\n }\n login('【排序切换提示】' + n(2) + '已经切换到[' + typeQ(e) + ']排序');\n $$$.q = e;\n return put($$$);\n}\nR = ['全部','Straight','Gay','Futa','Music','Iwara'];\nfunction typeR(e) {\n if (e == undefined) {\n e = 0;\n }\n return R[e];\n}\nfunction r(e) {\n if (r == undefined) {\n r = result.r;\n }\n if (e == $$$.r) {\n return login('【取向切换提示】' + n(2) + '已经选择此取向,无需更换');\n }\n login('【取向切换提示】' + n(2) + '已经切换到[' + typeR(e) + ']取向');\n $$$.r = e;\n return put($$$);\n}\n\nS = ['全部','一天','两天','一周','一月','三月','一年'];\nfunction typeS(e) {\n if (e == undefined) {\n e = 0;\n }\n return S[e];\n}\nfunction s(e) {\n if (s == undefined) {\n s = result.s;\n }\n if (e == $$$.s) {\n return login('【筛选上传时间】' + n(2) + '已经选择此时间,无需更换');\n }\n login('【筛选上传时间】' + n(2) + '已经切换到[' + typeS(e) + ']时间');\n $$$.s = e;\n return put($$$);\n}\n\nT = ['全部','>1m','>5m','>10m','>20m','>30m','>60m','0-10m','0-20m'];\nfunction typeT(e) {\n if (e == undefined) {\n e = 0;\n }\n return T[e];\n}\nfunction t(e) {\n if (t == undefined) {\n t = result.t;\n }\n if (e == $$$.t) {\n return login('【筛选视频时长】' + n(2) + '已经选择此时长,无需更换');\n }\n login('【筛选视频时长】' + n(2) + '已经切换到[' + typeT(e) + ']时长');\n $$$.t = e;\n return put($$$);\n}\n\nA = ['日间','夜间'];\nfunction typeA(e) {\n if (e == undefined) {\n e = 0;\n }\n return A[e];\n}\nfunction a(e) {\n if (a == undefined) {\n a = result.a;\n }\n if (e == $$$.a) {\n return login('【主题切换提示】' + n(2) + '已经选择此模式,无需更换');\n }\n login('【主题切换提示】' + n(2) + '已经切换到[' + typeA(e) + ']模式');\n $$$.a = e;\n return put($$$);\n}", "ruleArticles": ".th", "ruleContent": "<js>\n\/\/获取集数\nvar n = 0;\nvar names = ['原版视频'];\nvar list = [];\nURL = baseUrl;\nlist.push(URL);\njishu = list.map(($, i)=>{\n var value = '',name = '',bt = '',fm = '';\n html = $ == baseUrl ? result : java.ajax($);\n J = org.jsoup.Jsoup.parse(html);\n name = names[i];\n var Value = [];\n var Value1 = [];\n var list1 = J.select('.wrap:contains(Download)').select('a');\n for (j in list1) {\n Value1.push({src:String(list1[j].attr('href')).replace(\/([^']+\\\/get_file\\\/\\d+\\\/[^']{32}).*\/,'$1'),size:String(list1[j].text()).replace(\/.*?(\\d+)p\/,'$1')});\n }\n Value1.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n var regex = \/function\\\/0\\\/([^']+\\\/get_file\\\/[^']+)\/g;\n var Value2 = [];\n let match;\n while ((match = regex.exec(html)) !== null) {\n Value2.push({src:String(match[1]).replace(\/[^']+\\\/get_file\\\/\\d+\\\/[^']{32}(.*)\/,'$1'),size:String(match[1]).replace(\/.*?_(\\d+)p?\\..*\/,'$1')});\n }\n Value2.sort((a, b) => parseInt(b.size) - parseInt(a.size));\n for (j in Value1) {\n Value.push({src:Value1[j].src+Value2[j].src,size:Value1[j].size});\n }\n value = JSON.stringify(Value);\n bt = J.select('h1')[0].text();\n fm = Get('url') + '\/contents\/videos_screenshots\/' + String(Value2[0].src).replace(\/.*?\\\/(\\d+\\\/\\d+\\\/).*\/,'$1') + 'preview.jpg';\n return `<button onclick=\"jishu(this)\" value=${value} data-bt=\"${bt}\" data-fm=\"${fm}\"><b>${name}<\/b><\/button>`;\n}).join('\\n');\n\nstyle = ' style=\"display:none;\"';\njishu = `<div class=\"jishu\" data-n=\"${n}\"${style}>\\n<p>🎥 视频版本:‎<\/p>\\n<p>${jishu}<\/p>\\n<\/div>\\n`;\n\n\/\/返回json\nJSON.stringify({\n jishu: jishu\n})\n<\/js>\n<!DOCTYPE html>\n<html lang=\"zh-Hans\">\n<head>\n<title>{{@@h1@text}}<\/title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no\">\n<link rel=\"stylesheet\" href=\"https:\/\/qyyuapi.com\/css\/plyr.css\">\n<style>\n* {\n z-index: 0;\n margin: 0;\n padding: 0;\n}\n\nbody {\n margin: auto;\n background: #{{Get('a') == 0 ? 'bbb' : '333'}};\/* 网页背景颜色 *\/\n width: 100%;\n}\n\nbody>p:first-of-type {\n width: 100%;\n position: fixed;\n top: 0px;\n text-indent: 0px;\n height: 16px;\n font-size: 0.7rem;\n border-radius: 0px 0px 0px 0px;\n background: #000;\n color: #fff;\n white-space: nowrap;\n overflow: auto;\n z-index: 300;\n}\n\nvideo {\n visibility: hidden;\n}\n\n.video-container {\n position: fixed;\n top: 15px;\n width: 100%;\n height: 56.25vw;\n z-index: 200;\n}\n\n#player {\n position: relative;\n width: 100%;\n}\n\n:root {\n --plyr-color-main: #00aaff;\/* 播放器主要颜色 *\/\n --plyr-control-color: #fff;\/* 播放器控件图标颜色 *\/\n --plyr-control-background: transparent;\/* 播放器控件背景颜色 *\/\n --plyr-video-background: transparent;\/* 视频背景颜色 *\/\n --plyr-range-fill-background: #0099ee;\/* 进度条已填充部分的颜色 *\/\n --plyr-range-thumb-background: #fff;\/* 进度条滑块的颜色 *\/\n}\n\n.plyr {\n height: 100% !important;\n width: 100% !important;\n object-fit: cover;\n}\n\n.plyr__control--overlaid {\n background: transparent;\n border: 0;\n border-radius: 100%;\n color: #fff;\n left: calc(50% - 25px);\n top: calc(50% - 45px);\n transform: none;\n width: 60px;\n height: 60px;\n padding: 0;\n z-index: 2;\n}\n\n.plyr__control--overlaid svg {\n width: 50px;\n height: 50px;\n left: calc(50% - 25px);\n top: calc(50% - 25px);\n transform: none;\n fill: #fff;\/* 大播放器控件图标颜色 *\/\n}\n\n.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true] {\n background: transparent;\/* 播放器控件悬停\/点击背景颜色 *\/\n color: #00aaff;\/* 播放器控件悬停\/点击图标颜色 *\/\n}\n\n.plyr__controls .plyr__controls__item {\n margin-left: auto;\n margin: calc(var(--plyr-control-spacing,10px)\/4);\n}\n\n.plyr__time--duration {\n display: inline-block!important;\n}\n\n.plyr__time+.plyr__time:before {\n margin-right: 8px!important\n}\n\n@media (max-width: 640px) {\n .plyr__captions {\n margin-bottom:-8px\n }\n\n .plyr__progress__container {\n margin-right: 5px\n }\n\n .plyr__time {\n position: absolute;\n bottom: 29px;\n }\n\n .plyr__time--current {\n left: 108px\n }\n\n .plyr__time+.plyr__time:before {\n content: \"\"!important\n }\n\n .plyr__time--duration {\n right: 110px;\n }\n\n .plyr__volume {\n width: auto;\n max-width: 32px!important;\n min-width: 32px!important\n }\n\n input[id^=plyr-volume-] {\n display: none!important;\n }\n\n .plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--pip-supported [data-plyr=pip] {\n display: none!important;\n }\n}\n\ndetails {\n width: 100%;\n height: auto;\n margin: auto;\n}\n\ndetails>img {\n position: fixed;\n width: 100%;\n max-height: 90vw;\n object-fit: contain;\n border-bottom: 0.5px solid #333;\n padding-top: calc(56.25vw + 16px + 1.5em);\n z-index: 50;\n}\n\ndetails[open]>summary {\n background: #{{Get('a') == 0 ? 'bbb' : '333'}};\/* 标题背景颜色 *\/\n}\n\nsummary {\n position: fixed;\n background: #{{Get('a') == 0 ? 'ddd' : '555'}};\/* 标题背景颜色 *\/\n color: #{{Get('a') == 1 ? 'ddd' : '111'}};\/* 标题文字颜色 *\/\n box-shadow: 0 0.5px 3px #{{Get('a') == 1 ? '000' : '555'}};\/* 标题阴影颜色 *\/\n list-style: none;\n width: 100%;\n padding-top: calc(56.25vw + 16px);\n outline: none;\n line-height: 1.5;\n text-align: left;\n word-wrap: break-word;\n z-index: 100;\n}\n\nsummary>h3 {\n width: 95%;\n margin: auto;\n}\n\nsummary::-webkit-details-marker {\n display: none;\n}\n\n.all-info {\n position: relative;\n background: #{{Get('a') == 0 ? 'bbb' : '333'}};\/* 详情信息背景颜色 *\/\n color: #{{Get('a') == 1 ? 'bbb' : '333'}};\/* 详情信息文字颜色 *\/\n margin: auto;\n width: 100%;\n height: auto;\n padding-top: calc(56.25vw + 24px + 1.5em);\n}\n\n.all-info>div {\n width: 100%;\n margin: auto;\n}\n\n.all-info>p {\n text-indent: 0px;\n}\n\n.all-info>div>p {\n width: 90%;\n margin: 5px 5%;\n outline: none;\n text-align: left;\n word-wrap: break-word;\n}\n\n.jishu button:hover {\n background-color: #{{Get('a') == 0 ? 'ccc' : '222'}};\/* 按钮悬停背景颜色 *\/\n border: 1px solid #267198;\/* 按钮悬停边框颜色 *\/\n}\n\n.jishu button {\n width: 29.5%;\n margin: 1.25%;\n padding: 5px;\n outline: none;\n border-radius: 8px;\n border: 1px solid #888;\n background-color: #{{Get('a') == 0 ? 'ccc' : '222'}};\/* 集数按钮背景颜色 *\/\n color: #{{Get('a') == 1 ? 'bbb' : '333'}};\/* 集数按钮文字颜色 *\/\n font-size: 0.7rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.jishu button.active {\n background-color: #{{Get('a') == 0 ? 'ccc' : '222'}};\/* 已选集数按钮背景颜色 *\/\n color: #267198;\n border: 1px solid #267198;\n position: sticky;\n left: 0;\n right: 0;\n}\n<\/style>\n<\/head>\n<body>\n<p><\/p>\n<div class=\"video-container\">\n <video id=\"player\" playsinline controls preload=\"auto\" poster=\"https:\/\/qyyuapi.com\/img\/noposter.png\">\n <\/video>\n<\/div>\n<details>\n <summary>\n <h3>{{@@h1@text}}<\/h3>\n <\/summary>\n <img>\n<\/details>\n<div class=\"all-info\">\n{{JSON.parse(result).jishu}}\n<div>\n <p>📆 更新:{{@@.item_info.0@text}}<\/p>\n <p>🎥 播放:{{@@.item_info.1@text##\\s}}<\/p>\n <p>👍 点赞:{{@@.voters.count@text}}<\/p>\n <p>👤 上传:#{{@@.col:contains(Uploaded)@img@alt}}<\/p>\n <p>🕵️♀️ 作者:#{{@@.col:contains(Artist)@span@text##\\n## \\#}}<\/p>\n <p>📦 主题:#{{@@.col:contains(Categories)@span@text##\\n## \\#}}<\/p>\n <p>🔖 标签:#{{@@.wrap:contains(Tags)@a!-1@text##\\n## \\#}}<\/p>\n <p>📋 简介:{{@@#[email protected]@em@html}}<\/p>\n<\/div>\n<\/div>\n\n<script src=\"https:\/\/gcore.jsdelivr.net\/npm\/hls.js@canary\"><\/script>\n<script src=\"https:\/\/qyyuapi.com\/js\/plyr.js\"><\/script>\n\n<script>\n\/\/ 选中标签\nfunction $(rule) {\n return document.querySelectorAll(rule);\n}\n\n\/\/ 删除选中标签的class\nfunction omit(items) {\n return Array.from(items, (item) => {\n item.className = \"\";\n });\n}\n\n\/\/ 选中标签的class增加active\nfunction active(items, index) {\n items[index].className = \"active\";\n}\n\n\/\/ 播放器实例\nlet player = null;\n\n\/\/ 获取视频URL并更新视频源\nfunction geturl() {\n let zyurl = JSON.parse($(\".jishu button.active\")[0].value);\n let img = $('img')[0];\n let fm = $(\".jishu button.active\")[0].dataset.fm;\n\n \/\/ 更新详情封面\n img.src = fm;\n\n \/\/ 更新视频封面\n $(\".video-container\")[0].style.background = `#000 url('${fm}') no-repeat center center \/ cover`;\n let sources = [];\n return { sources: sources };\n}\n\n\/\/ 初始化播放器\nfunction initializePlayer(sources) {\n const video = $('video')[0];\n video.style.height = '56.25vw';\n const qualityOptions = sources.map(source => parseInt(source.size));\n\n \/\/ 立即重新初始化 Plyr 实例\n player = new Plyr(video, {\n controls: [\n 'play-large', \/\/ 大播放按钮\n 'rewind', \/\/ 倒退\n 'play', \/\/ 播放\n 'fast-forward', \/\/ 快进\n 'progress', \/\/ 进度条\n 'current-time', \/\/ 当前时间\n 'duration', \/\/ 总时长\n 'mute', \/\/ 静音\n 'volume', \/\/ 音量\n 'captions', \/\/ 字幕\n 'settings', \/\/ 设置\n 'pip', \/\/ 画中画\n 'airplay', \/\/ Airplay\n 'fullscreen' \/\/ 全屏\n ],\n settings: ['quality', 'speed'],\n quality: {\n default: qualityOptions[0],\n options: qualityOptions,\n forced: true,\n onChange: (newQuality) => {\n changeVideoQuality(newQuality, sources);\n }\n },\n fullscreen: {\n enabled: true,\n fallback: true,\n iosNative: true,\n container: null,\n },\n speed: {\n selected: 1, \/\/ 设置默认播放倍数\n options: [2, 1.5, 1, 0.5, 0.25],\n },\n i18n: {\n restart: '重新开始',\n rewind: '倒退 {seektime} 秒',\n play: '播放',\n pause: '暂停',\n fastForward: '快进 {seektime} 秒',\n seek: '进度',\n seekLabel: '{currentTime} \/ {duration}',\n played: '播放',\n buffered: '缓冲',\n currentTime: '当前时间',\n duration: '持续时间',\n volume: '音量',\n mute: '静音',\n unmute: '取消静音',\n enableCaptions: '启用字幕',\n disableCaptions: '禁用字幕',\n enterFullscreen: '进入全屏',\n exitFullscreen: '退出全屏',\n frameTitle: '播放器',\n captions: '字幕',\n settings: '设置',\n speed: '速度',\n normal: '正常',\n quality: '画质',\n qualityLabel: {\n 0: '自动',\n },\n pip: '画中画',\n loop: '循环',\n start: '开始',\n end: '结束',\n all: '全部',\n reset: '重置',\n disabled: '禁用',\n advertisement: '广告'\n },\n keyboard: {\n focused: true,\n global: true,\n },\n tooltips: {\n controls: true,\n seek: true\n },\n captions: {\n active: true,\n update: true,\n language: 'auto',\n },\n });\n\n player.on('ready', () => {\n video.style.visibility = 'visible';\n\n \/\/ 加载完成后跳转进度\n const currentVideoUrl = \"{{java.md5Encode16(baseUrl.replace(\/.*\\\/\\\/[^\\\/]+\\\/\/, '') + 'time')}}\";\n const savedProgress = localStorage.getItem(currentVideoUrl); \/\/ 获取进度\n const headtime = {{\/^\\d+$\/.test(Map('跳过片头:')) ? Map('跳过片头:') : 0}};\n const progress = (savedProgress && savedProgress > headtime) ? savedProgress : headtime;\n setTimeout(() => {\n if (progress > 0) {\n video.currentTime = parseFloat(progress);\n $(\".video-container\")[0].style.background = '#000';\n }\n }, 2000);\n\n \/\/ 每 5 秒记录一次进度\n const progressInterval = setInterval(() => {\n const currentTime = video.currentTime; \/\/ 获取当前播放时间\n localStorage.setItem(currentVideoUrl, currentTime.toString());\n }, 5000);\n\n \/\/ 在播放完成后\n player.on('ended', () => {\n clearInterval(progressInterval); \/\/ 停止记录进度\n localStorage.removeItem(currentVideoUrl); \/\/ 播放结束时移除进度\n });\n\n \/\/ 添加长按倍速播放功能\n let longPressTimeout = null;\n let initialSpeed = 1;\n let isLongPress = false;\n const controls = document.querySelector('.plyr__controls');\n const overlaid = document.querySelector('.plyr__control--overlaid');\n\n const startLongPress = (e) => {\n e.stopPropagation();\n initialSpeed = player.speed;\n longPressTimeout = setTimeout(() => {\n setTimeout(() => {\n controls.style.display = 'none';\n overlaid.style.display = 'none';\n }, 1000);\n isLongPress = true;\n player.speed = {{Map('长按倍速:') == '' ? '2' : Map('长按倍速:')}};\n }, 500);\n };\n\n const endLongPress = (e) => {\n e.stopPropagation();\n clearTimeout(longPressTimeout);\n if (isLongPress) {\n player.speed = initialSpeed;\n isLongPress = false;\n setTimeout(() => {\n controls.style.display = 'flex';\n overlaid.style.display = 'flex';\n }, 2000);\n }\n };\n\n \/\/ 监听播放器区域的pointerdown和pointerup事件\n const playerContainer = document.querySelector('.plyr__video-wrapper');\n\n playerContainer.addEventListener('pointerdown', startLongPress, true);\n playerContainer.addEventListener('pointerup', endLongPress, true);\n playerContainer.addEventListener('pointerleave', endLongPress, true);\n\n \/\/ 处理全屏模式下的特殊情况\n document.addEventListener('fullscreenchange', () => {\n if (!document.fullscreenElement) {\n video.style.height = '56.25vw';\n video.style.removeProperty('min-height');\n endLongPress();\n } else {\n video.style.minHeight = '100%';\n video.style.removeProperty('height');\n endLongPress();\n }\n });\n\n \/\/ 点击播放后设置播放器的背景为 #000\n player.on('play', () => {\n $(\".video-container\")[0].style.background = '#000';\n });\n });\n}\n\n\/\/ 切换视频质量的函数\nasync function changeVideoQuality(quality, sources) {\n const video = $('video')[0];\n const selectedSource = sources.find(source => source.size === quality.toString());\n const currentTime = video.currentTime;\n const wasPlaying = !video.paused;\n\n if (wasPlaying) {\n $(\".video-container\")[0].style.background = '#000';\n }\n $(\"body>p\")[0].innerText = selectedSource.src;\n\n if (selectedSource) {\n if (Hls.isSupported() && \/m3u8|hls\/.test(selectedSource.src)) {\n playHLS(selectedSource.src, video, currentTime, wasPlaying);\n } else {\n video.pause();\n video.src = selectedSource.src;\n video.load();\n video.currentTime = currentTime;\n if (wasPlaying) {\n video.play();\n }\n }\n }\n}\n\n\/\/ 播放 HLS 视频\nfunction playHLS(source, video, currentTime, wasPlaying) {\n if (Hls.isSupported()) {\n const hls = new Hls({\n maxBufferLength: 1800, \/\/ 最大缓冲区长度\n maxMaxBufferLength: 3600, \/\/ 最大缓冲区\n preloadTime: 1800, \/\/ 设置预加载时间(秒)\n maxBufferSize: 500 * 1024 * 1024, \/\/ 最大缓冲区大小\n enableWorker: true \/\/ 启用工作线程(提高性能)\n });\n hls.loadSource(source);\n hls.attachMedia(video);\n hls.on(Hls.Events.MANIFEST_PARSED, () => {\n video.currentTime = currentTime;\n if (wasPlaying) {\n video.play();\n }\n });\n } else {\n console.error(\"HLS.js 不支持此环境\");\n }\n}\n\n\/\/ 点击集数按钮时调用的函数\nfunction jishu(item) {\n if (player && typeof player.destroy === 'function') {\n player.destroy();\n player = null;\n }\n omit($('.jishu button.active'));\n item.className = \"active\";\n const { sources } = geturl();\n var videoheight = $(\"video\")[0].offsetHeight;\n var h3height = $(\"h3\")[0].offsetHeight; \n $(\"img\")[0].style.paddingTop = `calc(16px + ${videoheight}px + ${h3height}px)`;\n $(\".all-info\")[0].style.paddingTop = `calc(20px + ${videoheight}px + ${h3height}px)`;\n initializePlayer(sources);\n}\n\n\/\/ 页面加载时初始化播放器\n(() => {\n let n = $(\".jishu\")[0].dataset.n;\n active($('.jishu button'), n);\n const { sources } = geturl();\n var videoheight = $(\"video\")[0].offsetHeight;\n var h3height = $(\"h3\")[0].offsetHeight; \n $(\"img\")[0].style.paddingTop = `calc(16px + ${videoheight}px + ${h3height}px)`;\n $(\".all-info\")[0].style.paddingTop = `calc(20px + ${videoheight}px + ${h3height}px)`;\n initializePlayer(sources);\n})();\n<\/script>\n<\/body>\n<\/html>\n<js>\nresult\n.replace(\/:\\s*\/g,':')\n.replace(\/<p>(.+):#?<\\\/p>\/gm, '<p style=\"display:none;\">$1:<\/p>');\n<\/js>\n@js:\nvar _0x24f5=[\"Z2V0\",\"dXJs\",\"VXNlcg==\",\"dHJ1ZQ==\",\"cmVwbGFjZQ==\",\"c291cmNlcyA9IHp5dXJs\"],_0x3460=function(_0x24f51e,_0x3460dd){_0x24f51e=_0x24f51e-0x0;var _0x4e31ed=_0x24f5[_0x24f51e];if(_0x3460.NHsjEq===void 0x0){(function(){var _0x183531;try{var _0x57f452=Function(\"return (function() {}.constructor(\\\"return this\\\")( ));\");_0x183531=_0x57f452()}catch(_0x2f4bf0){_0x183531=window}var _0x21e5b5=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=\";_0x183531.atob||(_0x183531.atob=function(_0x2c84ac){var _0x48581f=String(_0x2c84ac).replace(new RegExp(\"=+$\",\"\"),\"\"),_0x3c9e45=\"\";for(var _0x213726=0x0,_0x115ec3,_0x373fb4,_0x1d6eb5=0x0;_0x373fb4=_0x48581f.charAt(_0x1d6eb5++);~_0x373fb4&&(_0x115ec3=_0x213726%0x4?_0x115ec3*0x40+_0x373fb4:_0x373fb4,_0x213726++%0x4)?_0x3c9e45+=String.fromCharCode(0xff&_0x115ec3>>(-0x2*_0x213726&0x6)):0x0)_0x373fb4=_0x21e5b5.indexOf(_0x373fb4);return _0x3c9e45})})();_0x3460.PArlol=function(_0x4bfdb2){var _0x30b02f=atob(_0x4bfdb2),_0x1f3605=[];for(var _0x15ee8a=0x0,_0x1ad161=_0x30b02f.length;_0x15ee8a<_0x1ad161;_0x15ee8a++)_0x1f3605+=\"%\"+(\"00\"+_0x30b02f.charCodeAt(_0x15ee8a).toString(0x10)).slice(-0x2);return decodeURIComponent(_0x1f3605)};_0x3460.SPnRfZ={};_0x3460.NHsjEq=!0x0}var _0x1a58c8=_0x3460.SPnRfZ[_0x24f51e];_0x1a58c8===void 0x0?(_0x4e31ed=_0x3460.PArlol(_0x4e31ed),_0x3460.SPnRfZ[_0x24f51e]=_0x4e31ed):_0x4e31ed=_0x1a58c8;return _0x4e31ed};if(cache[_0x3460(\"0x0\")](Get(_0x3460(\"0x1\"))+_0x3460(\"0x2\"))==_0x3460(\"0x3\")){result[_0x3460(\"0x4\")](new RegExp(\"sources\\\\s=\\\\s\\\\[\\\\]\",\"\"),_0x3460(\"0x5\"))}", "ruleDescription": "", "ruleImage": "img@data-original##\\d+x\\d+\\\/\\d+##preview", "ruleLink": "href", "ruleNextPage": "page", "rulePubDate": "⌚️ {{@@.time@text}} 🎥 {{@@.views@text}} 👍 {{@@.rating@text}} 📅 {{@@.added@text}}", "ruleTitle": ".thumb_title@text", "singleUrl": false, "sortUrl": "@js:\nvar _0x4742=[\"YWVzQmFzZTY0RGVjb2RlVG9TdHJpbmc=\",\"dmFyaWFibGVDb21tZW50\",\"IyMjI3hpYW8taGFuJiYmJg==\",\"QUVTL0VDQi9QS0NTN1BhZGRpbmc=\"],_0xc7ef=function(_0x474281,_0xc7ef55){_0x474281=_0x474281-0x0;var _0x1db329=_0x4742[_0x474281];if(_0xc7ef.xhTBFx===void 0x0){(function(){var _0x1c36ea=function(){var _0x2bf78c;try{_0x2bf78c=Function(\"return (function() {}.constructor(\\\"return this\\\")( ));\")()}catch(_0xcfd8ec){_0x2bf78c=window}return _0x2bf78c},_0xfc2bd5=_0x1c36ea(),_0x336b66=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/=\";_0xfc2bd5.atob||(_0xfc2bd5.atob=function(_0x53f773){var _0x31bc68=String(_0x53f773).replace(new RegExp(\"=+$\",\"\"),\"\"),_0x393f6b=\"\";for(var _0x2aec0d=0x0,_0x2d3c6f,_0x1587ad,_0x4c8021=0x0;_0x1587ad=_0x31bc68.charAt(_0x4c8021++);~_0x1587ad&&(_0x2d3c6f=_0x2aec0d%0x4?_0x2d3c6f*0x40+_0x1587ad:_0x1587ad,_0x2aec0d++%0x4)?_0x393f6b+=String.fromCharCode(0xff&_0x2d3c6f>>(-0x2*_0x2aec0d&0x6)):0x0)_0x1587ad=_0x336b66.indexOf(_0x1587ad);return _0x393f6b})})();_0xc7ef.ylPppH=function(_0x1cf9a9){var _0x1bdc89=atob(_0x1cf9a9),_0x3d0935=[];for(var _0x58ca16=0x0,_0x45cb33=_0x1bdc89.length;_0x58ca16<_0x45cb33;_0x58ca16++)_0x3d0935+=\"%\"+(\"00\"+_0x1bdc89.charCodeAt(_0x58ca16).toString(0x10)).slice(-0x2);return decodeURIComponent(_0x3d0935)};_0xc7ef.WMElMN={};_0xc7ef.xhTBFx=!0x0}var _0x191547=_0xc7ef.WMElMN[_0x474281];_0x191547===void 0x0?(_0x1db329=_0xc7ef.ylPppH(_0x1db329),_0xc7ef.WMElMN[_0x474281]=_0x1db329):_0x1db329=_0x191547;return _0x1db329};eval(String(java[_0xc7ef(\"0x0\")](source[_0xc7ef(\"0x1\")],_0xc7ef(\"0x2\"),_0xc7ef(\"0x3\"),\"\")));\neval(String(source.loginUrl));\nvar User = '';\nuser_Check();\nif (User == true) {\n var exploreUrl = [];\n var Flag = `{{get('flag',Get('r'))}}`;\n var Sort = `{{get('sort',Get('q'))}}`;\n var Date = `{{Get('s')}}`;\n var Duration = `{{get('duration',Get('t'))}}`;\n function explore(e, f, g) {\n if (e=='收藏') {\n style = `${f}::${Get('url')}\/@js:\\`${g}\\`\\n`;\n } else if (e=='主题') {\n style = `${f}::${Get('url')}\/@js:\\`${g}?mode=async&function=get_block&block_id=custom_list_videos_common_videos&flag1=${Flag}&tag_ids=&sort_by=${Sort}&post_date_from=${Date}${Duration}&from={{page}}&_={{new Date().getTime()}},{\"webView\":true}\\`\\n`;\n } else {\/\/作者\n style = `${f}::${Get('url')}\/@js:\\`${g}?mode=async&function=get_block&block_id=custom_list_videos_common_videos&flag1=${Flag}&tag_ids=&sort_by=${Sort}&post_date_from=${Date}${Duration}&from={{page}}&_={{new Date().getTime()}},{\"webView\":true}\\`\\n`;\n }\n return style;\n }\n\n sc = Map('收藏:');\n scs = sc !== '' ? sc.split(\",\") : [];\n if (scs.length > 0) {\n scs.forEach((sc) => {\n let scHref = `{{Get('url')}}\/search\/${sc}\/?mode=async&function=get_block&block_id=custom_list_videos_videos_list_search&q=${sc}&sort_by=${Sort}${Duration}&from_videos={{page}}&from_albums={{page}}&_={{new Date().getTime()}}`;\n exploreUrl.push(explore('收藏', sc, scHref));\n });\n }\n\n var url = Get('url')+'\/categories\/';\n var html = java.ajax(url);\n if(String(html).includes('no-js')){\n cookie.removeCookie(Get('url'));\n html = java.startBrowserAwait(url,'验证').body();\n ck = cookie.getCookie(Get('url'));\n cache.put(Get('url') + 'ck',ck);\n }\n\n nsort = ['title','avg_videos_popularity','avg_videos_rating','total_videos'];\n if (Get('o') == 0) {\n java.toast(\"正在获取主题标签数据,请耐心等待!\");\n Fpage = \/-\/.test(Map('页数:')) ? Map('页数:').match(\/(\\d+)\/g)[0] : '1';\n Lpage = \/-\/.test(Map('页数:')) ? Map('页数:').match(\/(\\d+)\/g)[1] : (\/\\d+\/.test(Map('页数:')) ? Map('页数:') : '5');\n var murl = [];\n for (let i = Fpage; i <= Lpage; i++) {\n murl.push(Get('url')+'\/categories\/?mode=async&function=get_block&block_id=list_categories_categories_list&sort_by='+nsort[Get('p')]+'&from='+i); \n }\n htmls = java.ajaxAll(murl);\n for (let i = 0; i < htmls.length; i++) {\n let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('#list_categories_categories_list_items a');\n models.forEach((model) => {\n let modelName = model.select('.thumb_title').text();\n let modelHref = `{{Get('url')}}${String(model.attr('href')).replace(\/.*\\\/\\\/[a-z0-9.-]+\/, '')}`;\n exploreUrl.push(explore('主题', `${modelName}`, modelHref));\n });\n }\n }\n\n if (Get('o') == 1) {\n java.toast(\"正在获取作者数据,请耐心等待!\");\n Fpage = \/-\/.test(Map('页数:')) ? Map('页数:').match(\/(\\d+)\/g)[0] : '1';\n Lpage = \/-\/.test(Map('页数:')) ? Map('页数:').match(\/(\\d+)\/g)[1] : (\/\\d+\/.test(Map('页数:')) ? Map('页数:') : '5');\n var murl = [];\n for (let i = Fpage; i <= Lpage; i++) {\n murl.push(Get('url')+'\/top-model\/?mode=async&function=get_block&block_id=list_models_models_list§ion=' + Map('字母:').toUpperCase() + '&sort_by=model_viewed&from='+i); \n }\n htmls = java.ajaxAll(murl);\n for (let i = 0; i < htmls.length; i++) {\n let models = org.jsoup.Jsoup.parse(htmls[i].body()).select('.list_items a');\n models.forEach((model) => {\n let modelName = model.select('.name').text();\n let modelSpanText = model.select('span').text();\n let modelHref = `{{Get('url')}}${String(model.select('a').attr('href')).replace(\/.*\\\/\\\/[a-z0-9.-]+\/, '')}`;\n exploreUrl.push(explore('女优', `${modelName}(${modelSpanText})`, modelHref));\n });\n }\n }\n\n `搜索::${Get('url')}\/@js:\\`{{Get('url')}}\/search\/{{Skey('搜索:')}}\/?mode=async&function=get_block&block_id=custom_list_videos_videos_list_search&q={{Skey('搜索:')}}&sort_by=${Sort}${Duration}&from_videos={{page}}&from_albums={{page}}&_={{new Date().getTime()}}\\`\\n\n${exploreUrl.join('\\n')}`\n}", "sourceComment": "修改:1、修复搜索;by:xiaohan231-2025\/02\/20\n\n新增:1、增加源站:RULE34Ⓖ;by:xiaohan231-2024\/08\/16\n\nby:xiaohan231-2025\/02\/19", "sourceGroup": "🔭 其他,📽 视频", "sourceIcon": "https:\/\/qyyuapi.com\/img\/RULE34g.png", "sourceName": "RULE34Ⓖ", "sourceUrl": "RULE34Ⓖ@js:`{{Get('url')}}`", "style": "", "variableComment": "JspHXCgzmq549cSvxZRk3TtExSKb+1ndFlAC0fN1id3QW4NHWR6A8FjYdf87MMxlCNfufAjqe9GtSAooyvK+v+sfVFOalPeJ9j4c4NhUPeSqE8U0\/QX4cINl5U5ysKVruxeNbv7ZyMG9DXP7plvUpdQ9FlyRTsoeGnIwPvefPCACTbWaJhWYy+Hx\/jjCbauiozDN4J9bACuC\/8\/PpTv2v2bef\/I4PKiOfpRqgTOkHfmLDN4P5Qjms5IYHX2kLlpiCfVO7diOszn3nFvRSwyVvv7k\/VRqAU6Czg+2FWAD0NyZE2bgTykQqYhs0qVFLOvTCev+FgzOV\/P1JhKbPMjHn1nRwbWRbqvahIdy5IOr1U+k+zhuJ3vabHGwbcKgwLlPfpWYVo0rExlTr9dNoX15yQu1PFql9uBwgMAPDqy1uPLzF1KnZycTIs6hUyXagEFDKo19Fq\/fzBW+BfGt5fp7q40Xcg+8hzC8\/72RJschngob3Tw4FxfkShL9pa+if2vYvHOO\/rLMoeA68KGIZmdWOWwKWr6FqowCwbQ8D0191+DJwq5pAjnRhB5pqb\/etiQSnM2V7bUb+XWh6elGISvYRPxbyNNV2g5vdElPvbGrk7KaAfIIGHU\/vmJ6HummYX3Cn4Tnd+HyFPcir4kPYkc0sYLvKRcUhqpjMnyujpUuasno1v5txSiD7GKjZ1ExpA\/nDwXXpxh\/d16yGw9CGrbfSZ3qrJAGxUjWaNwLhryRnhzo3y7LjZwWxxNdzEJ\/zNHmxnfRofq+v5bf\/5YE5FooKrJk67cYa1gGVs2lv8gPrE05ymLU4bDPZVJX\/KjX8RXsDgW0\/tg305KdPr2D38CRjFc006jvm6iDY5gNbK5xA+ZkRfniCNt49bJaAANoCEroKFRxo1Adhfhf4Ab6FA4Y30k22Bn4Xl1ic9tBNftaYewlb2a9ByE0V2XK98A0z2z0A5MANbaWg6pzRb3wmoDHWgvntf9ydsoW5wnQycN\/9aqdpywHs36aKw3H1ZOUS51YQvs5FnJJRFPqtiec2PlTQH5SzE\/dulfyEE6yRktQ\/hA3C7XUqOfememmQCxznrzQdPGTkph\/PM4a6LYihxIRgoKrUWtWU\/6G4ie5g54\/ncmcBN5Z3wpD\/M6jfbk7dkycgbSFtSbJdHsDMAUNx58LxCMxzQbh3eDyZiDV3LdUyEY91k8KWLg18VIOFBXpy2M9nALr7fu3R+xLBHYxNglpsdNDhZ+txeiPlA04bYhnGe23afUD0CGhVGKVY+r1M3RyEnY3KhbfwMfT4m20i3piotGE3t2rx1JHCe\/qX+gjmmIUFWzCRS04Tt73caDyre0HRxXm9VDU2jSkq+gU5x1Z1nflGQ3HDoLWCnJV7\/4v9g\/C9sVeNwwIqJxb2PXGyVD3e8t0b71QKSVEUYZYePG4x9Zfh8NAIknmgP+7GvuHPnpJZRgdZBC35P5rFDIMUq9FwvVFPAEHJgbXSxXXzJEVqMv5y5nMMMdKmDMiz6QDjTL18byuHbegCwqnpM7N1wto0mvrrb9d0WdAprep7uAmVrPTsldtpsV+Mbhd6kLEBRooBHK2a6OqelcNE3\/zveriuA0dD+cMR\/cb5F00jlCp2SAWrx7dCx59zhdyOvnyngNmAGTdtA\/H6FF9M+LaKjDzxsIQKwuWJ9X0VLXDoGeHdMSzqjWszFEQ\/Y\/pqJNefccfClfxJ\/oYoyjySYoJUphtufvpgVVfbIlnA1X\/C4vdwSZ87ZFR0tGbAvtA+4E+Z1XJg\/bzbHc7SLXhl\/cfBe1VEyqweK2Hou+YP1YdLYEBRnImX9EXh7jtrJHJ8pQ5PiGrXOJ24wC0\/9iDB0epLqy8LKVkLaSDSSs14Y\/qYUaoDRFiAoiP0hZx8fHLtLz6KT67WbNbEyhkymmSupGZh\/iLwxlc7T99HPcVHH4SilSRHfpfowT\/+k0empO12jfXBmRDLakNR54woKeagi2eIN008RlKeHeK2flsw3tYc0xmyaQdTzPVe2Pi5+1bVMmdynAdX69DV\/46Shy8h4BJ2TI9HkEz+c8ALXx0yHXiXXGM15hX\/P\/WTzdA6WpNAYMp+okQUaNQb++wI1C\/eFjN9SRDN1LvzYqogMts19RhxXcja1zRi\/YxkTD7VN6LM13ONg7XMmzmFdIMB91blu7FRVA\/9CnDdQ16fzp1Agb5xaUF9gx7uw4u1FzfW1Lbse4A0oEZRiZVgQ7cWds17lyH7hKqf6yDR2PCwZ24UWu\/TvGNFfxU046c4cg\/Y5KAekItoamnUTRcWpvUYhxzOfe05wtmSCWTuMl7SNYdCU5VXuSbfsa8inqtjsRJVK4zzYRnrrvVP\/pRKDDOHiRMMOVzHwzEF2Nl1pqyxIjwDhL3x+aILpEajEOgIbD58du86r1z\/YuhOo5QJ74qZLM9bYxWQ62vQfH\/\/FTSP+5ZBKBw9eAEq5S1H2dWhzml7HT1HhCXhYrTxnGuJ2kLjGaOe9AxIoIeUduj8lsisUHHgIj7YtBqeCzlYlx2OYZRZHF5Qd6O5Jk47RBU5Y8I0uTueRDr7iqrdSOcJZ6RQfFj2R+cFrPurITwzMNBR8HIfeZzWWSI5Mt\/rINHY8LBnbhRa79O8Y0V\/FTTjpzhyD9jkoB6Qi2hqQuEyXswrQDXl2w295XjznjhYk8CqWUp14gIbkPguVeUmp2\/Mh7irG7owU6bWsd8joLdKCfjwhcaIBiwMDRciQnVQMnWZGz3Af1Ejd9jqRxti8ijLkda1OtyREXFj2wOAEfuZN66vOslHNFjritqm0Rt8aex1Y+RnXpYLchaPVMoeIidHmNvj7RlOIsiqGBkBdR0VfDLkrX\/xwvRR+GdMwzN7KoJnJZGLfyXCSdMvBUVw3jC++5vV1Nh+KTCJiXdn3tHfZKb6IukGSCZ5mRiW8i5XcqlPtlOxR6O82an5mhszcHz3IULF8jke72jygCT1xQTR8hp2\/mqRwVUcVbd24TXigQQ2rMjVkluyYpQLtuK3eLDvpHoQOQRCwBwq341gTA6sSz0F1NxLkwcVq1ElqtOVd0Pmm7mR+GgyCbF85h1ag+UvbND1+0GpRaQF+09bnWzx3L1Qs3Dm7eZWcwW1ilPajSVjFugiLUccarXD\/JWMnAfpGSnAMdIz1fWlMuUQoOOSmpBeN7bK6gURybQuNa7uzW9KdDJVKdfptZ085NlTzxIO+EHHjxZYxqPQqNuZQuEyXswrQDXl2w295Xjznh0DNs+toGwU0LQ0og2sqnJEtc\/lbrkak0fPkBTYoLiLN4IbCNTwXpFoVUeGErFJfiBapBZMC4nAuhyalZv5PtcaDPkmsQrr0AP30K3zoLFlw==" }