黄区
https://zwtoacvqie3.hq777.icu
nuo-an (15232)10/26 22:15
黄区聚合源:小说+视频。发现页按分类浏览,搜索固定搜视频。视频打开章节会弹出内置播放器;小说为图文正文。当前为镜像域名 zwtoacvqie3.hq777.icu,主站 huangqu.top。 by斯诺伤
{
"bookSourceComment": "黄区聚合源:小说+视频。发现页按分类浏览,搜索固定搜视频。视频打开章节会弹出内置播放器;小说为图文正文。当前为镜像域名 zwtoacvqie3.hq777.icu,主站 huangqu.top。\nby斯诺伤",
"bookSourceGroup": "聚合",
"bookSourceName": "黄区",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/zwtoacvqie3.hq777.icu",
"bookUrlPattern": "(xs_ls|videoplay)\/\\d+",
"customButton": false,
"customOrder": 1,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"eventListener": false,
"exploreUrl": "[{\"title\": \"🟡 黄区\", \"style\": {\"layout_wrapBefore\": true, \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1}}, {\"title\": \"━━━ 🏠 首页 ━━━\", \"style\": {\"layout_wrapBefore\": true, \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1}}, {\"title\": \"🏠 首页推荐\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.5}}, {\"title\": \"\", \"url\": \"\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.5}}, {\"title\": \"━━━ 📖 小说分类 ━━━\", \"style\": {\"layout_wrapBefore\": true, \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1}}, {\"title\": \"小说首页\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/66\/-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"都市\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/69-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"校园\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/70-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"系统\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/72-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"乱伦\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/73-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"穿越\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/74-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"武侠\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/75-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"同人\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/76-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"科幻\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/77-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"玄幻\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/78-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"明星\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/79-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"历史\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/80-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"奇幻\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/81-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"贤者\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/xiaoshuo\/82-{{page}}-\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"\", \"url\": \"\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"━━━ 🎬 视频分类 ━━━\", \"style\": {\"layout_wrapBefore\": true, \"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 1}}, {\"title\": \"国产\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"女优\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/42\/---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"欧美\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/43\/---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"自拍\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/45---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"泄密\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/59---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"原创\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/46---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"淫妻\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/47---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"青年\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/48---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"精品\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/49---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"换脸\", \"url\": \"https:\/\/zwtoacvqie3.hq777.icu\/category\/41\/62---{{page}}\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"\", \"url\": \"\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}, {\"title\": \"\", \"url\": \"\", \"style\": {\"layout_flexGrow\": 1, \"layout_flexBasisPercent\": 0.25}}]",
"header": "{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 12; V2283A) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Mobile Safari\/537.36\", \"Referer\": \"https:\/\/zwtoacvqie3.hq777.icu\/\"}",
"jsLib": "var HQ_HOST = 'https:\/\/zwtoacvqie3.hq777.icu';\nvar HQ_KEY = 'UC2FmMyG928hRZY4';\nfunction hqDecode(html) {\n try {\n var m = String(html).match(\/APP\\.Index\\('([A-Za-z0-9_-]+)'\\)\/);\n if (!m) return null;\n var b64 = m[1].replace(\/-\/g, '+').replace(\/_\/g, '\/');\n while (b64.length % 4) b64 += '=';\n var raw = Packages.android.util.Base64.decode(b64, 2);\n var i;\n for (i = 0; i < raw.length; i++) raw[i] = raw[i] ^ HQ_KEY.charCodeAt(i % HQ_KEY.length);\n var bytes;\n if (raw[0] == 1) {\n var inf = new Packages.java.util.zip.Inflater(true);\n inf.setInput(raw, 1, raw.length - 1);\n var out = new Packages.java.io.ByteArrayOutputStream();\n var buf = Packages.java.lang.reflect.Array.newInstance(Packages.java.lang.Byte.TYPE, 8192);\n var n;\n while (!inf.finished()) {\n n = inf.inflate(buf);\n if (n <= 0) break;\n out.write(buf, 0, n);\n }\n inf.end();\n bytes = out.toByteArray();\n } else {\n bytes = Packages.java.util.Arrays.copyOfRange(raw, 1, raw.length);\n }\n return JSON.parse(String(new Packages.java.lang.String(bytes, 'UTF-8')));\n } catch (e) { return null; }\n}\nfunction hqEsc(s) {\n return String(s == null ? '' : s).replace(\/&\/g, '&').replace(\/<\/g, '<').replace(\/>\/g, '>').replace(\/\"\/g, '"');\n}\nfunction hqStrip(s) {\n return String(s == null ? '' : s).replace(\/<[^>]+>\/g, '');\n}\nfunction hqItems(data) {\n var arr = [];\n if (!data) return arr;\n var lists = [];\n if (data.list) lists.push(data.list);\n if (data.book && data.book.list) lists.push(data.book.list);\n if (data.vod && data.vod.list) lists.push(data.vod.list);\n if (data.new_vod && data.new_vod.list) lists.push(data.new_vod.list);\n if (data.cnxh_list && data.cnxh_list.list) lists.push(data.cnxh_list.list);\n var i, j, it;\n for (i = 0; i < lists.length; i++) {\n for (j = 0; j < lists[i].length; j++) {\n it = lists[i][j];\n if (it.book_id_attr != null) {\n arr.push({ t: 'novel', id: '' + it.book_id_attr, name: it.name || '', pic: it.pic || it.picx || '', author: it.author || '', intro: it.notice || it.content || '', extra: it.tags || '' });\n } else if (it.vod_id != null) {\n arr.push({ t: 'vod', id: '' + it.vod_id, name: it.vod_name || '', pic: it.vod_pic || '', author: it.vod_author || it.user_name || '', intro: it.vod_blurb || '', extra: it.vod_duration || it.vod_remarks || '' });\n }\n }\n }\n return arr;\n}\nfunction hqCards(items) {\n var s = '', i, it;\n for (i = 0; i < items.length; i++) {\n it = items[i];\n s += '<div class=\"hq-item\" data-t=\"' + it.t + '\" data-id=\"' + it.id + '\">'\n + '<span class=\"hq-name\">' + hqEsc(it.name) + '<\/span>'\n + '<img class=\"hq-pic\" src=\"' + hqEsc(it.pic) + '\">'\n + '<span class=\"hq-author\">' + hqEsc(it.author) + '<\/span>'\n + '<span class=\"hq-intro\">' + hqEsc(String(it.intro).slice(0, 200)) + '<\/span>'\n + '<span class=\"hq-extra\">' + hqEsc(it.extra) + '<\/span><\/div>';\n }\n return s;\n}",
"lastUpdateTime": "1793024101152",
"respondTime": 180000,
"ruleBookInfo": {
"author": "@js:\n(function () {\n var u = String(baseUrl);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n return (d && d.info) ? String(d.info.vod_author || d.info.user_name || '') : '';\n }\n return '';\n})()",
"coverUrl": "@js:\n(function () {\n var u = String(baseUrl);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n return (d && d.info) ? String(d.info.vod_pic || '') : '';\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n var img = doc.select('img[alt]');\n return img.size() > 0 ? String(img.get(0).attr('src')) : '';\n})()",
"intro": "@js:\n(function () {\n var u = String(baseUrl);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n if (!d || !d.info) return '';\n var s = d.info.vod_blurb || hqStrip(d.info.vod_content);\n return String(s || '').slice(0, 300);\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n var el = doc.select('.desc');\n return el.size() > 0 ? String(el.get(0).text()) : '';\n})()",
"kind": "@js:\n(function () {\n var u = String(baseUrl);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n if (!d || !d.info) return '';\n var cls = d.info.vod_class || [];\n var s = cls.slice(0, 4).join(',');\n if (d.info.vod_year) s += (s ? ',' : '') + d.info.vod_year;\n return s;\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n var txt = String(doc.select('.top .fix').text());\n var parts = [];\n var m1 = txt.match(\/\\u7c7b\\s*\\u522b\\uff1a(\\S+)\/);\n if (m1) parts.push(m1[1]);\n var m2 = txt.match(\/\\u72b6\\s*\\u6001\\uff1a(\\S+)\/);\n if (m2) parts.push(m2[1]);\n return parts.join(',');\n})()",
"lastChapter": "@js:\n(function () {\n var u = String(baseUrl);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n if (!d || !d.info) return '';\n return d.info.vod_duration ? ('时长 ' + d.info.vod_duration) : String(d.info.vod_remarks || '');\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n var ps = doc.select('.top .fix p');\n var i, t;\n for (i = 0; i < ps.size(); i++) {\n t = String(ps.get(i).text());\n if (t.indexOf('最新') >= 0) {\n var a = ps.get(i).select('a');\n return a.size() > 0 ? String(a.get(0).text()) : '';\n }\n }\n return '';\n})()",
"name": "@js:\n(function () {\n var u = String(baseUrl);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n return (d && d.info) ? String(d.info.vod_name || '') : '';\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n var p = doc.select('.top .fix p');\n if (p.size() > 0) return String(p.get(0).text()).replace(\/^\\u4e66\\s*\\u540d\\uff1a\/, '').replace(\/^\\s+|\\s+$\/g, '');\n var img = doc.select('img[alt]');\n return img.size() > 0 ? String(img.get(0).attr('alt')) : '';\n})()"
},
"ruleContent": {
"content": "@js:\n(function () {\n var u = String(baseUrl);\n var NL = String.fromCharCode(10);\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n if (!d || !d.info) return '详情数据解析失败,请刷新重试';\n var url = d.info.vod_play_url || '';\n if (!url) return '该视频暂无免费直链(可能需要付费),请到原站观看:' + NL + u;\n if (book.durChapterIndex == chapter.index) {\n var pic = d.info.vod_pic || '';\n var html = '<html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">'\n + '<style>html,body{margin:0;padding:0;background:#000;height:100%}video{width:100%;height:100%;object-fit:contain}<\/style><\/head>'\n + '<body><video src=\"' + url + '\" poster=\"' + pic + '\" controls autoplay playsinline><\/video><\/body><\/html>';\n try { java.startBrowser('about:blank', String(book.name || '播放'), html); } catch (e) {}\n }\n return '\\u25b6 ' + String(d.info.vod_name || '') + NL + NL + '播放器已打开;若未弹出,可复制下方地址到手机浏览器打开:' + NL + url;\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n var el = doc.select('#art-content');\n if (!el.size()) return '正文解析失败';\n var box = el.get(0);\n var bad = box.select('script,ins,iframe,style');\n var i;\n for (i = 0; i < bad.size(); i++) bad.get(i).remove();\n return box.html();\n})()"
},
"ruleExplore": {
"author": ".hq-author@text",
"bookList": "@js:\n(function () {\n var data = hqDecode(result);\n var items = hqItems(data);\n var doc = org.jsoup.Jsoup.parseBodyFragment(hqCards(items));\n return doc.select('.hq-item');\n})()",
"bookUrl": "@js:\n(function () {\n var s = String(result);\n var t = (s.match(\/data-t=\"(\\w+)\"\/) || [])[1];\n var id = (s.match(\/data-id=\"(\\d+)\"\/) || [])[1];\n if (!id) return '';\n return t === 'novel' ? 'https:\/\/zwtoacvqie3.hq777.icu\/xs_ls\/' + id : 'https:\/\/zwtoacvqie3.hq777.icu\/videoplay\/' + id;\n})()",
"coverUrl": ".hq-pic@src",
"intro": ".hq-intro@text",
"kind": ".hq-extra@text",
"name": ".hq-name@text"
},
"ruleSearch": {
"bookList": "@js:\n(function () {\n var doc = org.jsoup.Jsoup.parse(String(result));\n var els = new org.jsoup.select.Elements();\n els.addAll(doc.select('.novel-grid-item'));\n els.addAll(doc.select('.videoGridH-item'));\n return els;\n})()",
"bookUrl": "@js:\n(function () {\n var s = String(result);\n var m = s.match(\/href=\"(\\\/xs_ls\\\/\\d+)\"\/);\n if (m) return 'https:\/\/zwtoacvqie3.hq777.icu' + m[1];\n m = s.match(\/redirect_vod\\('(\\d+)'\\)\/);\n if (m) return 'https:\/\/zwtoacvqie3.hq777.icu\/videoplay\/' + m[1];\n return '';\n})()",
"checkKeyWord": "美女",
"coverUrl": "@js:\n(function () {\n var m = String(result).match(\/<img[^>]*src=\"([^\"]+)\"\/);\n return m ? m[1] : '';\n})()",
"name": "@js:\n(function () {\n var s = String(result);\n var m = s.match(\/novel-grid-item-title\">([^<]+)\/) || s.match(\/videoGridH-item-title\">([^<]+)\/);\n return m ? m[1] : '';\n})()"
},
"ruleToc": {
"chapterList": "@js:\n(function () {\n var u = String(baseUrl);\n book.type = 8;\n if (u.indexOf('\/videoplay\/') >= 0) {\n var d = hqDecode(result);\n var nm = (d && d.info && d.info.vod_name) || book.name || '播放';\n var els = new org.jsoup.select.Elements();\n var a = new org.jsoup.nodes.Element('a');\n a.attr('href', u);\n a.text('\\u25b6 ' + nm);\n els.add(a);\n return els;\n }\n var doc = org.jsoup.Jsoup.parse(String(result));\n return doc.select('#myList li a');\n})()",
"chapterName": "@text",
"chapterUrl": "@href"
},
"searchUrl": "https:\/\/zwtoacvqie3.hq777.icu\/so\/video\/{{key}}\/{{page}}",
"weight": 0
}