🎨禁漫天堂

https://jmcomicqa.cc

JY535 (11131)1天前

优化了发现和登录ui,添加了jm号搜索,添加魔法线路
二维码导入
{
    "bookSourceComment": "需要先在登录页面获取网址。\n部分内容需要登录才会显示,可登可不登。\n原作寿横、jiajunjin大佬,优化了发现和登录ui,添加了jm号搜索,添加魔法线路,有问题换魔法别用日韩。",
    "bookSourceGroup": "R18漫画",
    "bookSourceName": "🎨禁漫天堂",
    "bookSourceType": 2,
    "bookSourceUrl": "https:\/\/jmcomicqa.cc",
    "customOrder": 9,
    "enabled": true,
    "enabledCookieJar": true,
    "enabledExplore": true,
    "exploreUrl": "@js:\neval(String(source.loginUrl));\n\nvar URL =  $$$.url;\nvar lineType = $$$.lineType || '主线路'; \nvar shunt = $$$.shunt || 1;\nvar weekIndex = $$$.weekIndex || 0; \nvar list = [];\n\nfunction push(title, url, size) { \n    list.push({\n        \"title\": title,\n        \"url\": url,\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": size\n        }\n    });\n}\n\nvar urlHint = (lineType === '备用线路') ? ' (备用线路)' : (lineType === '国际通用' ? ' (国际通用)' : (lineType === '东南亚' ? ' (东南亚)' : ' (主线路)'));\n\npush('❗❗为空请获取\/更换链接,然后刷新❗❗','', 1);\npush('[▶ '+$$$.name+' ◀]', '', 1);\npush('[ '+$$$.url + urlHint + ' 分流' + $$$.shunt + ' ]', '', 1);\n\nvar sortConfigs = [\n  { key: 'mr', title: '按时间' },\n  { key: 'mv', title: '按阅读' },\n  { key: 'tf', title: '按最爱' },\n  { key: 'mo', title: '按收藏' },\n  { key: 'tr', title: '按评分' },\n  { key: 'md', title: '按评论' },\n  { key: 'mp', title: '按图片' }\n];\n\nvar categories = [\n[\"全部\", \"albums?o={key}&page=\"],\n  [\"COS\", \"albums\/another\/sub\/cosplay?o={key}&page=\"],\n  [\"3D\", \"search\/photos?search_query=3D&o={key}&page=\"],\n  [\"韩漫\", \"albums\/hanman?o={key}&page=\"],\n  [\"热门\", \"albums?o={key}&page=\"],\n  [\"单本\", \"albums\/single?o={key}&page=<,{{page}}>\"],\n  [\"CG\", \"albums\/doujin\/sub\/CG?o={key}&page=<,{{page}}>\"],\n  [\"青年漫\", \"albums\/single\/sub\/youth?o={key}&page=<,{{page}}>\"],\n  [\"短篇\", \"albums\/short?o={key}&page=<,{{page}}>\"],\n  [\"同人\", \"albums\/doujin?o={key}&page=<,{{page}}>\"],\n  [\"其他\", \"albums\/another?o={key}&page=<,{{page}}>\"],\n  [\"小说\", \"novels?o=mv?o={key}&page=<,{{page}}>\"],\n  [\"美漫\", \"albums\/meiman?o={key}&page=<,{{page}}>\"],\n  [\"C106&推荐本本\", \"promotes\/29?o={key}&page=<,{{page}}>\"],\n  [\"禁漫去码&全彩化\", \"promotes\/30?o={key}&page=<,{{page}}>\"],\n  [\"禁漫汉化组\", \"search\/photos?main_tag=0&search_query=%E7%A6%81%E6%BC%AB%E6%B1%89%E5%C%96%E7%BB%84?o={key}&page=<,{{page}}>\"]\n];\n\nvar currentTagIndex = Math.min(Math.max($$$.tag || 0, 0), sortConfigs.length - 1);\nvar currentKey = sortConfigs[currentTagIndex].key;\nvar currentTitle = sortConfigs[currentTagIndex].title;\n\n\npush('🏷️分类标签---' + currentTitle + '🏷️', '', 1);\n\n\n\nfor (var j = 0; j < categories.length; j++) {\n  var arr = categories[j];\n  var t = arr[0];\n  var u = arr[1];\n  var url = URL + '\/' + u.replace('{key}', currentKey);\n  if (u.indexOf('<,{{page}}>') === -1) {\n    url += '{{page}}';\n  }\n  push(t, url, 0.25);\n}\npush('🏷️每周必看 (当前: ' + weekIndex + ', 范围 0-210,0为最新)🏷️','',1); \n\ntry {\n    var pageHtml = java.ajax(URL + '\/albums'); \n    var albumRegex = \/href=\"\\\/album\\\/(\\d+)\"\/g;\n    var matches = [];\n    var match;\n    while ((match = albumRegex.exec(pageHtml)) !== null) {\n        matches.push(match[1]);\n    }\n    if (matches.length > 0) {\n        var randomId = matches[Math.floor(Math.random() * matches.length)];\n        var randomUrl = URL + '\/album\/' + randomId;\n        push('🎲 随机看一本(仅测试版可用) 🎲', randomUrl, 1);\n    }\n} catch (e) {\n    java.log('Failed to fetch random album: ' + e);\n}\n\nvar weeklyTypes = [['日漫','manga'],['韩漫','hanman'],['其他','another']];\nfor (var i = 0; i < weeklyTypes.length; i++) {\n    var arr = weeklyTypes[i];\n    var t = arr[0];\n    var p = arr[1];\n    push(t, URL + '\/week\/' + weekIndex + '?skdad=1&type=' + p + '&page={{page}}', 0.25);\n}\n\n\n\npush('🏷️每周连载🏷️', '', 1);\nlet _list = [[\"周一\", \"serialization\/1&page=\"], [\"周二\", \"serialization\/2&page=\"], [\"周三\", \"serialization\/3&page=\"], [\"周四\", \"serialization\/4&page=\"],[\"周五\", \"serialization\/5&page=\"], [\"周六\", \"serialization\/6&page=\"], [\"周日\", \"serialization\/7&page=\"], [\"已完结\", \"serialization\/7&page=\"]];\n    _list.map(([t, u]) => {\n    \t    push(t, `${URL}\/${u}` + '{{page}}', 0.25);\n    \t});\npush('👁‍🗨阅读排行榜👁‍🗨', '', 1);\nvar typeList = [[\"日榜\", \"&t=t\"], [\"周榜\", \"&t=w\"], [\"月榜\", \"&t=m\"],[\"总榜\", \"\"]];\nfor (var k = 0; k < typeList.length; k++) {\n    var arr = typeList[k];\n    var t = arr[0];\n    var type = arr[1];\n    push(t, URL + '\/albums?o=mv' + type + '&page=' + '{{page}}' , 0.2);\n}\n\t\npush('♥️收藏排行榜♥️', '', 1);\nfor (var l = 0; l < typeList.length; l++) {\n    var arr = typeList[l];\n    var t = arr[0];\n    var type = arr[1];\n    push(t, URL + '\/albums?o=mo' + type + '&page=' + '{{page}}', 0.2);\n}\n\nvar sorts1 = [\"無修正\",\"劇情向\",\"青年漫\",\"校服\",\"純愛\",\"人妻\",\"教師\",\"百合\",\"Yaoi\",\"性轉\",\"女裝\",\"癡女\",\"全彩\",\"女性向\",\"完結\",\"純愛\",\"禁漫漢化組\"];\nvar sorts2 = [\"御姐\",\"熟女\",\"未成年\",\"巨乳\",\"貧乳\",\"女性支配\",\"教師\",\"女僕\",\"護士\",\"泳裝\",\"眼鏡\",\"連褲襪\",\"其他制服\",\"兔女郎\"];\nvar sorts3 = [\"群交\",\"足交\",\"束縛\",\"肛交\",\"阿黑顏\",\"藥物\",\"扶他\",\"調教\",\"野外露出\",\"催眠\",\"自慰\",\"觸手\",\"獸交\",\"亞人\",\"怪物女孩\",\"皮物\",\"附身\",\"ryona\",\"骑大车\"];\nvar sorts4 = [\"CG\",\"重口\",\"獵奇\",\"非H\",\"血腥暴力\",\"站長推薦\"];\nvar sortCriteria = [\n  { label: '🏷️标签---按时间🏷️', sort: 'mr' },\n  { label: '🏷️标签---按阅读🏷️', sort: 'mv' },\n  { label: '🏷️标签---按最爱🏷️', sort: 'tf' },\n  { label: '🏷️标签---按收藏🏷️', sort: 'mo' },\n  { label: '🏷️标签---按评分🏷️', sort: 'tr' },\n  { label: '🏷️标签---按评论🏷️', sort: 'md' },\n  { label: '🏷️标签---按图片🏷️', sort: 'mp' }\n];\n\nvar sort =  sortCriteria[$$$.tag].sort;\nvar label = sortCriteria[$$$.tag].label;\n\npush(label, '', 1);\npush('▶主题A漫◀','', 1);\nfor (var m = 0; m < sorts1.length; m++) {\n    var s = sorts1[m];\n    push(s, URL + '\/search\/photos?search_query=' + s + '&o=' + sort + '&page=' + '{{page}}', 0.25);\n}\n\npush('▶角色\/扮演◀','', 1);\nfor (var n = 0; n < sorts2.length; n++) {\n    var s = sorts2[n];\n    push(s, URL + '\/search\/photos?search_query=' + s + '&o=' + sort + '&page=' + '{{page}}', 0.25);\n}\n\npush('▶特殊PLAY◀','', 1);\nfor (var p = 0; p < sorts3.length; p++) {\n    var s = sorts3[p];\n    push(s, URL + '\/search\/photos?search_query=' + s + '&o=' + sort + '&page=' + '{{page}}', 0.25);\n}\n\npush('▶其他◀','', 1);\nfor (var q = 0; q < sorts4.length; q++) {\n    var s = sorts4[q];\n    push(s, URL + '\/search\/photos?search_query=' + s + '&o=' + sort + '&page=' + '{{page}}', 0.25);\n}\n    \nJSON.stringify(list);",
    "header": "{\n\t\"User-Agent\":\"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/141.0.0.0 Safari\/537.36 Edg\/141.0.0.0\",\n\"Referer\":\"https:\/\/18comic.vip\/\"\n}",
    "jsLib": "function Get(e) {\n    var $this = this;\n    var java = $this.java;\n    var source = $this.source;\n    var cookie = $this.cookie;\n    var get = JSON.parse(source.getVariable());\n    return get[e];\n}",
    "lastUpdateTime": "1760810372215",
    "loginCheckJs": " var resultUrl = result.url();\n var resultCode = result.code();\n var resultBoDy = result.body();\n if (\/_cf_|ge_ua|verify.php\/ig.test(resultBoDy) ) {\n     if (key) {\n         url = baseUrl + java.ruleUrl;\n     }\n     cookie.removeCookie(baseUrl)\n     result = java.startBrowserAwait(resultUrl, \n     \t\"验证\", false);\n }\nresult;",
    "loginUi": "[ \n    {\n        \"name\": \"账号\",\n        \"type\": \"text\"\n    },\n    {\n        \"name\": \"密码\",\n        \"type\": \"password\"\n    },\n    {\n        \"name\": \"༺»`点击切换分流´«༻\",\n        \"type\": \"button\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        \"name\": \"切换分流线路(1-4)\",\n        \"type\": \"button\",\n        \"action\": \"toggleShunt()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.3\n        }\n    },\n    {\n        \"name\": \"切换国际线路\",\n        \"type\": \"button\",\n        \"action\": \"setIntlUrl()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.3,\n            \"fontSize\": \"medium\",\n            \"padding\": \"10px\",\n            \"fontWeight\": \"bold\",\n            \"color\": \"white\",\n            \"backgroundColor\": \"#28a745\"\n        }\n    },\n    {\n        \"name\": \"切换东南亚线路\",\n        \"type\": \"button\",\n        \"action\": \"setSeaUrl()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.3,\n            \"fontSize\": \"medium\",\n            \"padding\": \"10px\",\n            \"fontWeight\": \"bold\",\n            \"color\": \"#000000\",\n            \"backgroundColor\": \"#ffc107\"\n        }\n    },\n    {\n        \"name\": \"❤️获取\/切换国内直连\",\n        \"type\": \"button\",\n        \"action\": \"url()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.3,\n            \"fontSize\": \"large\",\n            \"padding\": \"15px\",\n            \"fontWeight\": \"bold\",\n            \"color\": \"white\",\n            \"backgroundColor\": \"#007bff\"\n        }\n    },\n    \n    {\n        \"name\": \"༺ˇ»`ʚ  点击切换排序    ɞ´«ˇ༻\",\n        \"type\": \"button\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        \"name\": \"时间\",\n        \"type\": \"button\",\n        \"action\": \"tag(0)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"阅读\",\n        \"type\": \"button\",\n        \"action\": \"tag(1)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"最爱\",\n        \"type\": \"button\",\n        \"action\": \"tag(2)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"收藏\",\n        \"type\": \"button\",\n        \"action\": \"tag(3)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"评分\",\n        \"type\": \"button\",\n        \"action\": \"tag(4)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"评论\",\n        \"type\": \"button\",\n        \"action\": \"tag(5)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"图片\",\n        \"type\": \"button\",\n        \"action\": \"tag(6)\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.25\n        }\n    },\n    {\n        \"name\": \"༺»`每周必看索引 (0-210)´«༻\",\n        \"type\": \"button\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 1\n        }\n    },\n    {\n        \"name\": \"重置\",\n        \"type\": \"button\",\n        \"action\": \"resetWeekIndex()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.2\n        }\n    },\n    {\n        \"name\": \"随机\",\n        \"type\": \"button\",\n        \"action\": \"randomWeekIndex()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.2\n        }\n    },\n    {\n        \"name\": \"+1\",\n        \"type\": \"button\",\n        \"action\": \"incrementWeekIndex()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.2\n        }\n    },\n    {\n        \"name\": \"-1\",\n        \"type\": \"button\",\n        \"action\": \"decrementWeekIndex()\",\n        \"style\": {\n            \"layout_flexGrow\": 1,\n            \"layout_flexBasisPercent\": 0.2\n        }\n    }\n]",
    "loginUrl": "var intlLinks = [];\nvar seaLinks = [];\nvar defaultIntlLinks = ['https:\/\/18comic.vip', 'https:\/\/18comic.ink'];\nvar defaultSeaLinks = ['https:\/\/jmcomic-zzz.one', 'https:\/\/jmcomic-zzz.org'];\nvar cachedPageHtml = null;\n\nfunction extractLinks(pageHtml, blockRegex) {\n    var links = [];\n    if (!pageHtml) return links;\n    var blockMatch = pageHtml.match(blockRegex);\n    if (blockMatch && blockMatch[1]) {\n        var blockContent = blockMatch[1];\n        var linkMatches = blockContent.match(\/<span>(.*?)<\\\/span>\/g);\n        if (linkMatches) {\n            links = linkMatches.map(function(spanTag) {\n                var domain = spanTag.replace(\/<\\\/?span>\/g, '').trim();\n                return 'https:\/\/' + domain;\n            }).filter(function(url) {\n                return url !== 'https:\/\/';\n            });\n        }\n    }\n    return links;\n}\n\nvar intlBlockRegex = \/<div class=\"international\">([\\s\\S]*?)<\\\/div>\/;\nvar seaBlockRegex = \/<div class=\"southeast_asia\">([\\s\\S]*?)<\\\/div>\/;\n\ntry {\n    cachedPageHtml = java.ajax('https:\/\/jmcomicqa.cc');\n    intlLinks = extractLinks(cachedPageHtml, intlBlockRegex);\n    seaLinks = extractLinks(cachedPageHtml, seaBlockRegex);\n\n    if (intlLinks.length === 0) {\n        java.log('未能从jmcomicqa.cc提取国际线路, 启用备用线路。');\n        intlLinks = defaultIntlLinks;\n    }\n    if (seaLinks.length === 0) {\n        java.log('未能从jmcomicqa.cc提取东南亚线路, 启用备用线路。');\n        seaLinks = defaultSeaLinks;\n    }\n} catch (e) {\n    java.log('访问jmcomicqa.cc失败, 启用备用线路: ' + e);\n    intlLinks = defaultIntlLinks;\n    seaLinks = defaultSeaLinks;\n}\n\nvar original = {\n    'url': 'https:\/\/jmcomicqa.cc',\n    'name': '寿横',\n    'tag': 0,\n    'weekIndex': 0, \n    'shunt': 1,\n    'usedIndexes': [],\n    'lineType': '主线路',\n    'intlLinkIndex': 0,\n    'seaLinkIndex': 0\n};\ntry {\n    $$$= JSON.parse(source.getVariable());\n    if ($$$ == null) {\n        throw new Error();\n    } else {\n        if (!$$$.hasOwnProperty('usedIndexes'))$$$.usedIndexes = [];\n        if (!$$$.hasOwnProperty('weekIndex')) $$$.weekIndex = 0;\n        if (!$$$.hasOwnProperty('tag')) $$$.tag = 0;\n        if (!$$$.hasOwnProperty('shunt')) $$$.shunt = 1; \n        if (!$$$.hasOwnProperty('lineType')) $$$.lineType = '主线路';\n        if (!$$$.hasOwnProperty('intlLinkIndex')) $$$.intlLinkIndex = 0;\n        if (!$$$.hasOwnProperty('seaLinkIndex')) $$$.seaLinkIndex = 0;\n    };\n} catch (e) {\n    $$$= original;\n    put($$$);\n}\n\nfunction put(data) {\n    return source.setVariable(JSON.stringify(data, null, '\\t'));\n}\n\nfunction n(e) {\n    var n_str = '\\n';\n    for (var m = 1; m < e; m++) {\n        n_str = n_str + '\\n';\n    }\n    return n_str;\n}\n\nfunction log(e) {\n    if (e == undefined) {\n        return;\n    }\n    java.longToast(e);\n}\n\nvar regexList = [\n    \/china\"><span>(.*?)<\\\/span>\/,\n    \/first_line\"><span>(.*?)<\\\/span>\/,\n    \/second_line\"><span>(.*?)<\\\/span>\/\n];\n\nfunction getRandomUnusedIndex() {\n    if ($$$.usedIndexes.length === regexList.length) {\n       $$$.usedIndexes = [];\n    }\n    var randomIndex;\n    do {\n        randomIndex = Math.floor(Math.random() * regexList.length);\n    } while ($$$.usedIndexes.indexOf(randomIndex) !== -1);\n    $$$.usedIndexes.push(randomIndex);\n    put($$$);\n    return randomIndex;\n}\n\nvar MAX_INDEX = 210;\nvar MIN_INDEX = 0;\n\nfunction updateIndex(newIndex) {\n    if (newIndex !== $$$.weekIndex) {\n        $$$.weekIndex = newIndex;\n        put($$$);\n        log('【索引更新】每周必看索引已更新为: ' + newIndex + n(2) + '请刷新探索页');\n    } else {\n        log('【提示】索引值未更改,当前值为: ' + newIndex);\n    }\n}\n\nfunction randomWeekIndex() {\n    var newIndex = Math.floor(Math.random() * (MAX_INDEX + 1));\n    updateIndex(newIndex);\n}\n\nfunction incrementWeekIndex() {\n    var newIndex = $$$.weekIndex + 1;\n    if (newIndex > MAX_INDEX) {\n        newIndex = MAX_INDEX;\n        log('【警告】已达最大索引值: ' + MAX_INDEX);\n    }\n    updateIndex(newIndex);\n}\n\nfunction decrementWeekIndex() {\n    var newIndex = $$$.weekIndex - 1;\n    if (newIndex < MIN_INDEX) {\n        newIndex = MIN_INDEX;\n        log('【警告】已达最小索引值: ' + MIN_INDEX);\n    }\n    updateIndex(newIndex);\n}\n\nfunction resetWeekIndex() {\n    updateIndex(MIN_INDEX);\n}\n\nfunction login() {\n    var result = JSON.parse(source.getLoginInfo());\n    var username = result['账号'];\n    $$$.name = username;\n    var password = result['密码'];\n    var options = {\n\t   body: 'username=' + username + '&password=' + password + '&submit_login=1',\n\t   method: 'POST'\n\t};\n    if (!cachedPageHtml) {\n        cachedPageHtml = java.ajax('https:\/\/jmcomicqa.cc');\n    }\n    var randomIndex = getRandomUnusedIndex();\n    var currentRegex = regexList[randomIndex];\n    var matchResult = cachedPageHtml.match(currentRegex);\n    var url = matchResult ? matchResult[1] : $$$.url;\n    \n    var lineType = randomIndex === 0 ? '主线路' : '备用线路';\n    var lineHint = randomIndex === 0 ? ' (默认主线路)' : ' (备用线路)';\n    log('站点变更:' + url + lineHint);\n    \n    $$$.url = url;\n    $$$.lineType = lineType;\n    put($$$);\n    java.ajax(url + '\/login,' + JSON.stringify(options));\n    return put($$$);\n}\n\nvar P = ['时间', '阅读', '最爱', '收藏', '评分', '评论', '图片'];\n\nfunction typeP(e) {\n    if (e == undefined || e < 0 || e >= P.length) {\n        e = 0;\n    }\n    return P[e];\n}\n\nfunction tag(e) {\n    if (e == $$$.tag) {\n        return log('【标签切换提示】' + n(2) + '已经选择[' + typeP(e) + '],无需更换');\n    }\n    log('【标签切换提示】' + n(2) + '已经切换到[' + typeP(e) + '],请刷新探索页');\n    $$$.tag = e;\n    return put($$$);\n}\n\nfunction url() {\n    if (!cachedPageHtml) {\n        cachedPageHtml = java.ajax('https:\/\/jmcomicqa.cc');\n    }\n    var randomIndex = getRandomUnusedIndex();\n    var currentRegex = regexList[randomIndex];\n    var matchResult = cachedPageHtml.match(currentRegex);\n    var url = matchResult ? matchResult[1] : $$$.url;\n    \n    var lineType = randomIndex === 0 ? '主线路' : '备用线路';\n    var lineHint = randomIndex === 0 ? ' (默认主线路)' : ' (备用线路)';\n    \n    if (url == $$$.url) {\n        return log('【站点提示】' + n(2) + '站点无需更换,当前为' + lineHint);\n    }\n    log('站点变更:' + url + lineHint);\n    $$$.url = url;\n    $$$.lineType = lineType;\n    return put($$$);\n}\n\nfunction setIntlUrl() {\n    if (typeof $$$.intlLinkIndex === 'undefined') $$$.intlLinkIndex = 0;\n    $$$.intlLinkIndex = ($$$.intlLinkIndex + 1) % intlLinks.length;\n    var newUrl = intlLinks[$$$.intlLinkIndex];\n    $$$.url = newUrl;\n    $$$.lineType = '国际通用,需魔法';\n    put($$$);\n    log('【国际站点】已切换 (' + ($$$.intlLinkIndex + 1) + '\/' + intlLinks.length + '): ' + newUrl + n(2) + '请刷新探索页');\n}\n\nfunction setSeaUrl() {\n    if (typeof $$$.seaLinkIndex === 'undefined') $$$.seaLinkIndex = 0;\n    $$$.seaLinkIndex = ($$$.seaLinkIndex + 1) % seaLinks.length;\n    var newUrl = seaLinks[$$$.seaLinkIndex];\n    $$$.url = newUrl;\n    $$$.lineType = '东南亚,需魔法';\n    put($$$);\n    log('【东南亚站点】已切换 (' + ($$$.seaLinkIndex + 1) + '\/' + seaLinks.length + '): ' + newUrl + n(2) + '请刷新探索页');\n}\n\nfunction toggleShunt() {\n    var newShunt = $$$.shunt + 1;\n    if (newShunt > 4) {\n        newShunt = 1;\n    }\n    log('【分流切换提示】' + n(2) + '已切换分流: ' + $$$.shunt + ' -> ' + newShunt + ',请刷新探索页');\n    $$$.shunt = newShunt;\n    return put($$$);\n}\n\n\nfunction shunt(e) {\n    if (e < 1 || e > 4) {\n        return log('【分流提示】' + n(2) + '分流值不合法,范围为1-4。');\n    }\n    if (e == $$$.shunt) {\n        return log('【分流切换提示】' + n(2) + '已经选择分流[' + e + '],无需更换');\n    }\n    log('【分流切换提示】' + n(2) + '已经切换到分流[' + e + '],请刷新探索页');\n    $$$.shunt = e;\n    return put($$$);}",
    "respondTime": 180000,
    "ruleBookInfo": {
        "author": "{{@@.phone-author-tag@text}}",
        "coverUrl": ".thumb-overlay.2@img@src",
        "init": "<js>\nurl = baseUrl\nvar num = baseUrl.indexOf(\"novel\") !== -1 ? 1 : 2;\njava.put(\"btype\",num);\nresult\n<\/js>",
        "intro": " {{@@class.train-number@text}}\n{{@@class.intro-collapse-content@text}}\n{{@@class.p-t-5 float-left@text##日期}}    {{@@class.p-t-5 float-right@text##日期}}\n{{@@class.col-xs-12 col-lg-7 nav-tab-content@class.p-t-5 p-b-5@text##叙述:|敘述:}}",
        "kind": "@js:\nvar text;\nif (baseUrl.indexOf('novel') !== -1){\n\ttext=java.getString('span[data-type=tags]@a@text');\n}else {\n\ttext=java.getString('#intro-block@[data-type=tags]@a@text');\n}\ntext;",
        "name": "{{@@h1@text}}",
        "tocUrl": "baseUrl",
        "wordCount": "{{@class.train-number@text}}"
    },
    "ruleContent": {
        "content": "{{@class.novel-content@html}}\n{{@class.row thumb-overlay-albums@tag.img@data-original}}\n@js:var url = baseUrl\nif(baseUrl.indexOf(\"novel\") !== -1){\n\tresult\n\t} else {\n        var lines = result.split(\"\\n\");\n        var newLines = [];\n        for (var i = 0; i < lines.length; i++) {\n            newLines.push('<img src=\"' + lines[i] + '\">');\n        }\n        newLines.join(\"\\n\")\n}",
        "imageDecode": "if (src.search(\"qyyuapi.com\") != -1) {\n    result;\n} else {\n    var Magua = new JavaImporter();\n    Magua.importPackage(Packages.java.io, Packages.android.graphics);\n    with(Magua) {\n        var mac = src.match(\/photos\\\/(\\d+)?\\\/(\\d+)?\/);\n        var bookId = mac[1];\n        var imgId = mac[2];\n        if (src.search(\"gif\") != -1 || Number(bookId) < 220980) {\n            result;\n        } else {\n            var num;\n            if (Number(bookId) > 421925) {\n                var md5 = java.md5Encode((bookId + imgId));\n                var ascii = md5.substr( - 1).charCodeAt(0);\n                num = (ascii % 8 + 1) * 2;\n            } else if (Number(bookId) >= 268850) {\n                var md5 = java.md5Encode((bookId + imgId));\n                var ascii = md5.substr( - 1).charCodeAt(0);\n                num = (ascii % 10 + 1) * 2;\n            } else {\n                num = 10;\n            }\n            var img = BitmapFactory.decodeByteArray(result, 0, result.length);\n            var height = img.getHeight();\n            var width = img.getWidth();\n            var y = Math.floor(height \/ num);\n            var remainder = height % num;\n            var newImg = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);\n            var canvas = new Canvas(newImg);\n            for (var i = 1; i <= num; i++) {\n                var h = i === num ? remainder: 0;\n                canvas.drawBitmap(Bitmap.createBitmap(img, 0, y * (i - 1), width, y + h), 0, height - y * i - h, null);\n            }\n            var newbit = new ByteArrayOutputStream();\n            newImg.compress(Bitmap.CompressFormat.PNG, 100, newbit);\n            newbit.toByteArray();\n        }\n    }\n}",
        "imageStyle": "FULL"
    },
    "ruleExplore": {},
    "ruleSearch": {
        "author": "@js:\nvar text;\nif (baseUrl.indexOf('novel') !== -1){\n\ttext=java.getString('.title-truncate.2@text');\n}else {\n\ttext=java.getString('.title-truncate.1@text');\n}\ntext;",
        "bookList": ".list-col||.list-item||.thumb-overlay-guess_likes",
        "bookUrl": "tag.a.0@href",
        "coverUrl": "img@data-original||img@src",
        "intro": ".video-title@text",
        "kind": ".tag@text",
        "lastChapter": "@js:\nvar text;\nif (baseUrl.indexOf('novel') !== -1){\n\ttext=java.getString('.title-truncate.1@text');\n}else {\n\ttext=java.getString('');\n}\ntext;",
        "name": ".video-title@text",
        "wordCount": "span.0@text##^##👍🏻"
    },
    "ruleToc": {
        "chapterList": "class.btn-toolbar.0@tag.a||.reading\n<js>\nvar type = +(java.get('btype'))\njava.log(type)\nswitch (type) {\n  case 1:\n    book.type = 8;\n    break;\n  case 2:\n    book.type = 64;\n}\nresult\n<\/js>",
        "chapterName": "text",
        "chapterUrl": "href##(.*)##$1\/?shunt={{Get('shunt')}}",
        "preUpdateJs": "{{}}",
        "updateTime": "span@text"
    },
    "searchUrl": "{{Get('url')}}\/search\/photos?search_query={{key}}&search-type=photos&main_tag=0&page={{page}}",
    "weight": 0
}
广告