[{"bookSourceGroup":"🐱 七猫","bookSourceName":"⭐七猫[官方]v3.1✨","bookSourceType":0,"bookSourceUrl":"https:\/\/api-bc.wtzw.com#七猫官方API","customButton":false,"customOrder":126,"enabled":true,"enabledCookieJar":false,"enabledExplore":true,"eventListener":false,"exploreUrl":"@js:\nvar s = [];\n\nfunction p(t, u, f, b) {\n    s.push({\n        title: t,\n        url: u || '',\n        style: {\n            layout_flexGrow: f,\n            layout_flexBasisPercent: b\n        }\n    });\n}\n\n\ns.push({\n    title: \"☃关键词💭：书名\/作者\",\n    type: \"text\",\n    style: {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: 0.6\n    }\n});\ns.push({\n    title: \"🔍搜索\",\n    type: \"button\",\n    action: \"java.searchBook(infoMap['☃关键词💭：书名\/作者'] || '', `${source.bookSourceName}::${source.getKey()}`);saveKeys(infoMap)\",\n    style: {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: -1,\n        layout_alignSelf: \"baseline\"\n    }\n});\ns.push({\n    title: \"⚙登录\",\n    type: \"button\",\n    action: \"java.open('login','http',null);saveKeys(infoMap)\",\n    style: {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: 0.4,\n        layout_alignSelf: \"baseline\"\n    }\n});\ns.push({\n    title: \"🔄刷新发现页\",\n    type: \"button\",\n    action: \"java.refreshExplore()\",\n    style: {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: 0.4,\n        layout_alignSelf: \"baseline\"\n    }\n});\n\n\nvar config = {};\ntry {\n    var raw = source.getVariable();\n    if (raw && raw !== '' && raw !== 'null' && raw !== 'undefined') {\n        config = JSON.parse(raw);\n    }\n} catch (e) {}\n\nvar selectedGroup = config.exploreGroup || '排行榜';\n\n\ns.push({\n    title: \"📁 选择分组\",\n    type: \"select\",\n    chars: [\"📊 排行榜\", \"📚 分类\", \"🏷️ 标签\"],\n    default: (function() {\n        var map = {\n            '排行榜': '📊 排行榜',\n            '分类': '📚 分类',\n            '标签': '🏷️ 标签'\n        };\n        return map[selectedGroup] || '📊 排行榜';\n    })(),\n    action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['📁 选择分组'] || '📊 排行榜'; var map = {'📊 排行榜':'排行榜','📚 分类':'分类','🏷️ 标签':'标签'}; c.exploreGroup = map[raw] || '排行榜'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n    style: {\n        layout_flexGrow: 1,\n        layout_flexBasisPercent: 1\n    }\n});\n\n\nfunction addRank(rankList) {\n    rankList.forEach(function(r) {\n        [1, 2].forEach(function(t) {\n            p(\n                (t == 1 ? '男频' : '女频') + r[0],\n                '\/leader-board?rank_type=' + r[1] + '&category_id=0&tab_type=' + t +\n                '&category_type=0&imei_ip=2937357107&book_privacy=1&read_preference=0',\n                1, 0.4\n            );\n        });\n    });\n}\n\nif (selectedGroup === '排行榜') {\n    addRank([\n        ['推荐榜⭐', 'rec_list'],\n        ['必读榜📖', 'must_read_list'],\n        ['大热榜🔥', 'hot_list'],\n        ['匠心榜✨', 'craft_list'],\n        ['完结榜🎬', 'end_list'],\n        ['新书榜🆕', 'new_list'],\n        ['飙升榜📈', 'up_list'],\n        ['热搜榜🔍', 'hot_search_list'],\n        ['打赏榜💰', 'reward_value_list'],\n        ['投票榜🗳️', 'ticket_list'],\n        ['好评榜👍', 'good_comment_list'],\n        ['粉丝榜👥', 'reward_user_list']\n    ]);\n}\n\n\nif (selectedGroup === \"分类\") {\n    var selectedSub = config.exploreSubCategory || '女频';\n    var subMap = {\n        '女频': '♀女频',\n        '男频': '♂男频',\n        '出版': '✎出版'\n    };\n\n    s.push({\n        title: \"📜 分类\",\n        type: \"select\",\n        chars: [\"♀女频\", \"♂男频\", \"✎出版\"],\n        default: subMap[selectedSub] || '♀女频',\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['📜 分类'] || '♀女频'; var map = {'♀女频':'女频','♂男频':'男频','✎出版':'出版'}; c.exploreSubCategory = map[raw] || '女频'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    var words = config.exploreWords || '-99';\n    var over = config.exploreOver || '-99';\n    var sort = config.exploreSort || '0';\n\n    \n    s.push({\n        title: \"📏 字数\",\n        type: \"select\",\n        chars: [\"全部\", \"50万以下\", \"50-100万\", \"100-300万\", \"300万以上\"],\n        default: (function() {\n            var map = {\n                '-99': '全部',\n                '1': '50万以下',\n                '2': '50-100万',\n                '3': '100-300万',\n                '4': '300万以上'\n            };\n            return map[words] || '全部';\n        })(),\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['📏 字数'] || '全部'; var map = {'全部':'-99','50万以下':'1','50-100万':'2','100-300万':'3','300万以上':'4'}; c.exploreWords = map[raw] || '-99'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    \n    s.push({\n        title: \"⏳ 状态\",\n        type: \"select\",\n        chars: [\"全部\", \"完结\", \"连载\"],\n        default: (function() {\n            var map = {\n                '-99': '全部',\n                '1': '完结',\n                '0': '连载'\n            };\n            return map[over] || '全部';\n        })(),\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['⏳ 状态'] || '全部'; var map = {'全部':'-99','完结':'1','连载':'0'}; c.exploreOver = map[raw] || '-99'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    \n    s.push({\n        title: \"📌 排序\",\n        type: \"select\",\n        chars: [\"热度\", \"更新\", \"评分\", \"新书\"],\n        default: (function() {\n            var map = {\n                '0': '热度',\n                '1': '更新',\n                '2': '评分',\n                '3': '新书'\n            };\n            return map[sort] || '热度';\n        })(),\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['📌 排序'] || '热度'; var map = {'热度':'0','更新':'1','评分':'2','新书':'3'}; c.exploreSort = map[raw] || '0'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    \n    var femaleItems = [\n        { name: \"现代言情\", id: 1, flex: 1 }, { name: \"总裁豪门\", id: 8 },\n        { name: \"职场情缘\", id: 11 }, { name: \"民国旧影\", id: 12 },\n        { name: \"娱乐明星\", id: 13 }, { name: \"现实生活\", id: 274 },\n        { name: \"青春校园\", id: 275 }, { name: \"年代重生\", id: 278 },\n        { name: \"都市奇幻\", id: 279 },\n        { name: \"古代言情\", id: 2, flex: 1 }, { name: \"种田经商\", id: 16 },\n        { name: \"宫闱宅斗\", id: 209 }, { name: \"古代情缘\", id: 216 },\n        { name: \"权谋天下\", id: 280 }, { name: \"武侠江湖\", id: 281 },\n        { name: \"远古大陆\", id: 282 },\n        { name: \"幻想言情\", id: 4, flex: 1 }, { name: \"玄幻仙侠\", id: 21 },\n        { name: \"未来科幻\", id: 22 }, { name: \"无限快穿\", id: 283 },\n        { name: \"末世求生\", id: 284 }, { name: \"异世幻想\", id: 285 },\n        { name: \"游戏竞技\", id: 200, flex: 1 }, { name: \"网游电竞\", id: 25 },\n        { name: \"运动竞技\", id: 27 }, { name: \"衍生言情\", id: 277, flex: 1 },\n        { name: \"现实主义\", id: 307, flex: 1 }\n    ];\n    var maleItems = [\n        { name: \"历史\", id: 56, flex: 1 }, { name: \"穿越历史\", id: 57 },\n        { name: \"架空历史\", id: 58 }, { name: \"历史传记\", id: 59 },\n        { name: \"军事\", id: 60, flex: 1 }, { name: \"现代军事\", id: 61 },\n        { name: \"抗战烽火\", id: 62 }, { name: \"谍战特工\", id: 63 },\n        { name: \"战争幻想\", id: 227 },\n        { name: \"科幻\", id: 64, flex: 1 }, { name: \"星际机甲\", id: 65 },\n        { name: \"末世危机\", id: 66 }, { name: \"未来幻想\", id: 67 },\n        { name: \"游戏\", id: 75, flex: 1 }, { name: \"电子竞技\", id: 78 },\n        { name: \"虚拟网游\", id: 232 },\n        { name: \"玄幻奇幻\", id: 202, flex: 1 }, { name: \"东方玄幻\", id: 37 },\n        { name: \"异界大陆\", id: 39 }, { name: \"西方奇幻\", id: 41 },\n        { name: \"诸天万界\", id: 217 }, { name: \"王朝争霸\", id: 218 },\n        { name: \"都市人生\", id: 203, flex: 1 }, { name: \"明星娱乐\", id: 46 },\n        { name: \"乡村生活\", id: 48 }, { name: \"异术超能\", id: 219 },\n        { name: \"都市高手\", id: 220 }, { name: \"商战职场\", id: 221 },\n        { name: \"热血校园\", id: 222 }, { name: \"现实百态\", id: 223 },\n        { name: \"都市修仙\", id: 224 },\n        { name: \"奇闻异事\", id: 204, flex: 1 },\n        { name: \"武侠仙侠\", id: 205, flex: 1 }, { name: \"上古洪荒\", id: 38 },\n        { name: \"古典仙侠\", id: 52 }, { name: \"传统武侠\", id: 54 },\n        { name: \"幻想修真\", id: 225 }, { name: \"武侠幻想\", id: 237 },\n        { name: \"体育\", id: 206, flex: 1 }, { name: \"N次元\", id: 207, flex: 1 },\n        { name: \"现实题材\", id: 306, flex: 1 }\n    ];\n    var publishItems = [\n        { name: \"现代言情\", id: 260 }, { name: \"古代言情\", id: 259 },\n        { name: \"文学艺术\", id: 240 }, { name: \"人文科社\", id: 241 },\n        { name: \"人物传记\", id: 247 }, { name: \"经管励志\", id: 242 },\n        { name: \"经典文学\", id: 243 }, { name: \"出版小说\", id: 257 },\n        { name: \"少儿教育\", id: 258 }, { name: \"青春文学\", id: 265 },\n        { name: \"武侠小说\", id: 289 }, { name: \"科幻未来\", id: 261 },\n        { name: \"悬疑推理\", id: 262 }, { name: \"仙侠奇缘\", id: 276 },\n        { name: \"仙侠玄幻\", id: 288 }, { name: \"现实小说\", id: 266 },\n        { name: \"现代军旅\", id: 290 }, { name: \"历史小说\", id: 264 }\n    ];\n\n    var groups = [\n        { items: femaleItems, gender: '2', category_type: null },\n        { items: maleItems, gender: '1', category_type: null },\n        { items: publishItems, gender: null, category_type: '2' }\n    ];\n    var subNames = ['女频', '男频', '出版'];\n    var index = subNames.indexOf(selectedSub);\n    if (index === -1) index = 0;\n    var group = groups[index];\n\n    group.items.forEach(function(item) {\n        var url = '\/category?';\n        if (group.gender !== null) {\n            url += 'gender=' + group.gender + '&';\n        }\n        if (group.category_type !== null) {\n            url += 'category_type=' + group.category_type + '&';\n        }\n        url += 'category_id=' + item.id +\n            '&words=' + words + '&sort=' + sort + '&over=' + over +\n            '&need_filters=1&page={{page}}&need_category=0';\n        p(item.name, url, 1, item.flex || 0.25);\n    });\n}\n\n\nif (selectedGroup === '标签') {\n    var selectedTagCat = config.exploreTagCategory || '全部';\n    var displayCategories = ['📋全部', '👤角色', '📖题材', '🎨风格', '🏞️背景', '🔖其他'];\n    var rawToDisplay = {\n        '全部': '📋全部',\n        '角色': '👤角色',\n        '题材': '📖题材',\n        '风格': '🎨风格',\n        '背景': '🏞️背景',\n        '其他': '🔖其他'\n    };\n\n    s.push({\n        title: \"🏷️ 分类\",\n        type: \"select\",\n        chars: displayCategories,\n        default: rawToDisplay[selectedTagCat] || '📋全部',\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['🏷️ 分类'] || '📋全部'; var map = {'📋全部':'全部','👤角色':'角色','📖题材':'题材','🎨风格':'风格','🏞️背景':'背景','🔖其他':'其他'}; c.exploreTagCategory = map[raw] || '全部'; c.tagLoadCount = 25; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    var tagWords = config.exploreWords || '-99';\n    var tagOver = config.exploreOver || '-99';\n    var tagSort = config.exploreSort || '0';\n\n    \n    s.push({\n        title: \"📏 字数\",\n        type: \"select\",\n        chars: [\"全部\", \"50万以下\", \"50-100万\", \"100-300万\", \"300万以上\"],\n        default: (function() {\n            var map = {\n                '-99': '全部',\n                '1': '50万以下',\n                '2': '50-100万',\n                '3': '100-300万',\n                '4': '300万以上'\n            };\n            return map[tagWords] || '全部';\n        })(),\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['📏 字数'] || '全部'; var map = {'全部':'-99','50万以下':'1','50-100万':'2','100-300万':'3','300万以上':'4'}; c.exploreWords = map[raw] || '-99'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    \n    s.push({\n        title: \"⏳ 状态\",\n        type: \"select\",\n        chars: [\"全部\", \"完结\", \"连载\"],\n        default: (function() {\n            var map = {\n                '-99': '全部',\n                '1': '完结',\n                '0': '连载'\n            };\n            return map[tagOver] || '全部';\n        })(),\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['⏳ 状态'] || '全部'; var map = {'全部':'-99','完结':'1','连载':'0'}; c.exploreOver = map[raw] || '-99'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    \n    s.push({\n        title: \"📌 排序\",\n        type: \"select\",\n        chars: [\"热度\", \"更新\", \"评分\", \"新书\"],\n        default: (function() {\n            var map = {\n                '0': '热度',\n                '1': '更新',\n                '2': '评分',\n                '3': '新书'\n            };\n            return map[tagSort] || '热度';\n        })(),\n        action: \"(function(){ try { var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } var raw = infoMap['📌 排序'] || '热度'; var map = {'热度':'0','更新':'1','评分':'2','新书':'3'}; c.exploreSort = map[raw] || '0'; source.setVariable(JSON.stringify(c)); java.refreshExplore(); } catch(e){ java.toast('切换失败：'+e); } })()\",\n        style: {\n            layout_flexGrow: 1,\n            layout_flexBasisPercent: 0.4\n        }\n    });\n\n    \n    var allTagPairs = config._tagItems;\n    if (!allTagPairs) {\n        var tagsStr = \"热血:1,轻松:3,现实题材:12,豪门总裁:16,治愈:17,甜宠:21,悬疑:27,兵王:28,护花高手:30,仙帝:31,赘婿:36,神豪:37,奶爸:41,鉴宝:47,皇帝:62,剑道:72,道士:74,女总裁:89,校花:92,皇后:106,王妃:107,医妃:108,公主:113,嫡女:117,庶女:118,王爷:125,太子:128,首辅:133,丑女:141,大叔:153,医生:156,律师:161,吸血鬼:182,特工:188,法医:189,仵作:190,女配:191,全能:196,杀伐果断:202,偏执:248,忠犬:259,残疾:264,毒舌:265,傲娇:268,病娇:273,美食:300,无敌流:305,诸天万界:307,争霸:312,召唤:313,种田:317,三国:321,大唐:322,西游:324,盗墓:327,火影:330,海贼王:331,快穿:335,清穿:336,穿书:338,宅斗:342,宫斗:343,随身空间:345,契约婚姻:355,萌宝:356,娱乐圈:357,武侠:371,穿越:373,逆袭:400,强者回归:402,灵气复苏:403,一统天下:410,直播:419,御兽:423,武魂:427,风水:437,龙:444,僵尸:449,欢喜冤家:464,青梅竹马:465,破镜重圆:467,替嫁:476,闪婚:480,隐婚:481,逃婚:483,致富:492,错嫁:501,师徒恋:507,先婚后爱:524,弃少:525,脑洞:526,战神:527,进化:528,吞噬:530,强强:533,国学:534,红色文学:535,影视:539,青少年:540,魔尊:544,团宠:545,特种兵:547,百年华诞:550,强国之志:551,民族故事:552,最美家乡:553,末世:556,无限流:557,马甲:558,洪荒:559,开局流:564,签到:565,长生流:566,恐怖:567,爽文:570,烧脑:571,足球:576,BE:579,世子:580,HE:581,一见钟情:583,1V1:585,主播:587,仙侠:589,弃妇:590,传记:591,侦探:592,作品集:597,动漫衍生:598,乡村:599,体育:601,军事:603,古代:604,古武:606,可盐可甜:608,呆萌:609,名著:610,四史:611,基建:612,国术:613,女扮男装:619,女强:620,奸臣:621,女尊:624,婚姻:628,姐弟恋:631,丧尸:632,大明:636,影视衍生:638,情商:639,带球跑:640,太监:642,女性:643,异能:644,散文:645,女帝:646,替身:648,心理:649,架空历史:653,二婚:655,封神:658,修仙:659,民国:660,养生:662,技术流:663,推理:668,历史:669,古穿今:671,年代:672,游戏衍生:673,教育:674,商战:675,奇幻:678,明星:684,文化:685,星际:686,家庭:687,暗恋:689,机甲:690,校园:691,异界:692,思政:694,成功学:696,探险:697,摄政王:698,校草:701,沟通:702,暴君:703,未来世界:704,正剧:707,经济:710,生活:712,皇子:713,游戏:714,电竞:715,玄幻:717,艺术:720,皇叔:721,相爱相杀:722,社会:723,评论:724,神话:726,近代:728,管理:729,科幻:730,篮球:732,科普:733,随笔:737,绿茶:738,打脸虐渣:739,网游:740,职场:741,西幻:744,言情:745,诗词:747,远古:750,败家子:752,追妻火葬场:753,金手指:756,锦衣卫:757,都市:758,青春:761,奇闻异事:769,现代言情:772,古代言情:773,幻想言情:774,重生:779,学霸:781,系统:782,天才:783,杀手:784,智商在线:785,励志:786,将军:787,搞笑:788,腹黑:789,复仇:790,废柴:791,反派:792,扮猪吃虎:794,文学艺术:795,人文社科:796,少儿教育:797,经管励志:798,现实征文:802,真假千金:808,读心术:810,咸鱼:812,锦鲤:813,特色题材:816,恋综:817,双男主:818,无CP:819,双重生:828,爱国流:830,迪化流:832,克苏鲁:834,稳健流:837,高武:840,扮演:842,双女主:843,双向奔赴:844,后妈:845,黑莲花:849,黑月光:850,白月光:851,书生:852,四合院:854,科技:855,万人迷:856,男二上位:857,大秦:858,无女主:860,单女主:861,逃荒:864,国运:868,日常:878,都市脑洞:883,玄幻脑洞:884,历史脑洞:885,优质脑洞:888,囤物资:894,玄学:900,糙汉:907,相亲:909,综艺:911,短篇:934,综武:940,宋朝:943,丞相:944,多女主:945,驸马:946,双洁:947,作精:948,多重人格:954,赛博朋克:957,外卖员:958,丫鬟:961,恶婆婆:962,幕后BOSS:963,宠夫:964,抖快热门:965,崩坏星穹铁道:969,奶团:971,大女主:972,主母:973,第一人称:977,情感:979,NBA:984\";\n        var rawPairs = tagsStr.split(',').map(function(pair) {\n            var parts = pair.split(':');\n            return { name: parts[0], id: parseInt(parts[1], 10) };\n        });\n        var categoryMap = {\n            '总裁': '角色', '校花': '角色', '皇后': '角色', '王妃': '角色', '医妃': '角色', '公主': '角色', '嫡女': '角色', '庶女': '角色', '王爷': '角色', '太子': '角色', '首辅': '角色', '丑女': '角色', '大叔': '角色', '医生': '角色', '律师': '角色', '吸血鬼': '角色', '特工': '角色', '法医': '角色', '仵作': '角色', '女配': '角色', '兵王': '角色', '仙帝': '角色', '赘婿': '角色', '奶爸': '角色', '鉴宝': '角色', '皇帝': '角色', '剑道': '角色', '道士': '角色', '女总裁': '角色', '校草': '角色', '将军': '角色', '杀手': '角色', '书生': '角色', '驸马': '角色', '丫鬟': '角色', '恶婆婆': '角色', '主母': '角色', '太监': '角色', '摄政王': '角色', '皇子': '角色', '皇叔': '角色', '丞相': '角色', '女帝': '角色', '世子': '角色', '奸臣': '角色', '弃妇': '角色', '废柴': '角色', '反派': '角色', '黑莲花': '角色', '黑月光': '角色', '白月光': '角色', '万人迷': '角色', '男二上位': '角色', '糙汉': '角色', '作精': '角色', '多重人格': '角色', '外卖员': '角色', '奶团': '角色', '大女主': '角色', '女尊': '角色', '女扮男装': '角色', '女强': '角色', '女神': '角色', '豪门总裁': '角色', '护花高手': '角色', '萌宝': '角色', '魔尊': '角色', '团宠': '角色', '特种兵': '角色', '弃少': '角色', '战神': '角色', '主播': '角色', '锦衣卫': '角色', '学霸': '角色', '天才': '角色', '摄政王': '角色', '皇叔': '角色', '女帝': '角色', '奸臣': '角色', '弃妇': '角色', '废柴': '角色', '反派': '角色', '黑莲花': '角色', '黑月光': '角色', '白月光': '角色', '万人迷': '角色', '男二上位': '角色', '糙汉': '角色', '作精': '角色', '多重人格': '角色', '外卖员': '角色', '奶团': '角色', '大女主': '角色', '女尊': '角色', '女扮男装': '角色', '女强': '角色', '女神': '角色',\n            '玄幻': '题材', '仙侠': '题材', '武侠': '题材', '都市': '题材', '历史': '题材', '科幻': '题材', '奇幻': '题材', '游戏': '题材', '体育': '题材', '军事': '题材', '现实': '题材', '言情': '题材', '悬疑': '题材', '推理': '题材', '恐怖': '题材', '探险': '题材', '神话': '题材', '动漫衍生': '题材', '影视衍生': '题材', '游戏衍生': '题材', '穿越': '题材', '重生': '题材', '快穿': '题材', '穿书': '题材', '清穿': '题材', '古穿今': '题材', '末世': '题材', '星际': '题材', '机甲': '题材', '赛博朋克': '题材', '洪荒': '题材', '克苏鲁': '题材', '诸天万界': '题材', '无限流': '题材', '电竞': '题材', '网游': '题材', '篮球': '题材', '足球': '题材', '侦探': '题材', '竞技': '题材', '争霸': '题材', '召唤': '题材', '种田': '题材', '三国': '题材', '大唐': '题材', '西游': '题材', '火影': '题材', '海贼王': '题材', '盗墓': '题材', '现实题材': '题材', '美食': '题材', '宅斗': '题材', '宫斗': '题材', '随身空间': '题材', '契约婚姻': '题材', '闪婚': '题材', '隐婚': '题材', '逃婚': '题材', '替嫁': '题材', '错嫁': '题材', '先婚后爱': '题材', '娱乐圈': '题材', '灵气复苏': '题材', '一统天下': '题材', '直播': '题材', '御兽': '题材', '武魂': '题材', '风水': '题材', '龙': '题材', '僵尸': '题材', '欢喜冤家': '题材', '青梅竹马': '题材', '破镜重圆': '题材', '致富': '题材', '师徒恋': '题材', '进化': '题材', '吞噬': '题材', '国学': '题材', '红色文学': '题材', '影视': '题材', '青少年': '题材', '百年华诞': '题材', '强国之志': '题材', '民族故事': '题材', '最美家乡': '题材', '国运': '题材', '囤物资': '题材', '玄学': '题材', '综艺': '题材', '短篇': '题材', '综武': '题材', '崩坏星穹铁道': '题材', 'NBA': '题材', '高武': '题材', '扮演': '题材', '四合院': '题材', '科技': '题材', '逃荒': '题材', '日常': '题材', '都市脑洞': '题材', '玄幻脑洞': '题材', '历史脑洞': '题材', '优质脑洞': '题材', '作品集': '题材', '四史': '题材', '基建': '题材', '国术': '题材', '婚姻': '题材', '姐弟恋': '题材', '丧尸': '题材', '大明': '题材', '情商': '题材', '带球跑': '题材', '女性': '题材', '异能': '题材', '散文': '题材', '心理': '题材', '架空历史': '题材', '二婚': '题材', '封神': '题材', '修仙': '题材', '民国': '题材', '养生': '题材', '技术流': '题材', '古穿今': '题材', '年代': '题材', '游戏衍生': '题材', '教育': '题材', '商战': '题材', '明星': '题材', '文化': '题材', '家庭': '题材', '暗恋': '题材', '校园': '题材', '异界': '题材', '思政': '题材', '成功学': '题材', '探险': '题材', '沟通': '题材', '暴君': '题材', '未来世界': '题材', '正剧': '题材', '经济': '题材', '生活': '题材', '艺术': '题材', '相爱相杀': '题材', '社会': '题材', '评论': '题材', '近代': '题材', '管理': '题材', '科普': '题材', '西幻': '题材', '诗词': '题材', '远古': '题材', '败家子': '题材', '锦衣卫': '题材', '都市': '题材', '青春': '题材', '奇闻异事': '题材', '现代言情': '题材', '古代言情': '题材', '幻想言情': '题材', '文学艺术': '题材', '人文社科': '题材', '少儿教育': '题材', '经管励志': '题材', '现实征文': '题材', '特色题材': '题材', '恋综': '题材', '爱国流': '题材', '迪化流': '题材', '稳健流': '题材', '黑莲花': '题材', '黑月光': '题材', '白月光': '题材', '万人迷': '题材', '男二上位': '题材', '糙汉': '题材', '作精': '题材', '多重人格': '题材', '外卖员': '题材', '奶团': '题材', '大女主': '题材', '女尊': '题材', '女扮男装': '题材', '女强': '题材', '女神': '题材',\n            '爽文': '风格', '烧脑': '风格', '治愈': '风格', '甜宠': '风格', '轻松': '风格', '热血': '风格', '无敌流': '风格', '开局流': '风格', '签到流': '风格', '长生流': '风格', '稳健流': '风格', '迪化流': '风格', '爱国流': '风格', '杀伐果断': '风格', '智商在线': '风格', '搞笑': '风格', '腹黑': '风格', '复仇': '风格', '扮猪吃虎': '风格', '打脸虐渣': '风格', '追妻火葬场': '风格', '金手指': '风格', '系统': '风格', '马甲': '风格', '读心术': '风格', '咸鱼': '风格', '锦鲤': '风格', '双男主': '风格', '双女主': '风格', '无CP': '风格', '双重生': '风格', '单女主': '风格', '多女主': '风格', '双洁': '风格', '第一人称': '风格', 'BE': '风格', 'HE': '风格', '偏执': '风格', '忠犬': '风格', '残疾': '风格', '毒舌': '风格', '傲娇': '风格', '病娇': '风格', '全能': '风格', '逆袭': '风格', '强者回归': '风格', '脑洞': '风格', '强强': '风格', '一见钟情': '风格', '签到': '风格', '1V1': '风格', '双向奔赴': '风格', '后妈': '风格', '宠夫': '风格', '情感': '风格', '可盐可甜': '风格', '呆萌': '风格', '随笔': '风格', '绿茶': '风格', '败家子': '风格', '智商在线': '风格', '励志': '风格', '搞笑': '风格', '腹黑': '风格', '复仇': '风格', '废柴': '风格', '反派': '风格', '扮猪吃虎': '风格', '真假千金': '风格', '读心术': '风格', '咸鱼': '风格', '锦鲤': '风格', '双男主': '风格', '无CP': '风格', '双重生': '风格', '爱国流': '风格', '迪化流': '风格', '克苏鲁': '风格', '稳健流': '风格', '黑莲花': '风格', '黑月光': '风格', '白月光': '风格', '万人迷': '风格', '男二上位': '风格', '糙汉': '风格', '作精': '风格', '多重人格': '风格', '外卖员': '风格', '奶团': '风格', '大女主': '风格', '女尊': '风格', '女扮男装': '风格', '女强': '风格', '女神': '风格', '签到': '风格', '爱情': '风格',\n            '古代': '背景', '现代': '背景', '民国': '背景', '未来': '背景', '架空历史': '背景', '远古': '背景', '大明': '背景', '大秦': '背景', '宋朝': '背景', '近代': '背景', '乡村': '背景', '都市': '背景', '校园': '背景', '职场': '背景', '宫廷': '背景', '豪门': '背景'\n        };\n        var tagItems = rawPairs.map(function(item) {\n            var cat = categoryMap[item.name] || '其他';\n            return { name: item.name, id: item.id, category: cat };\n        });\n        config._tagItems = tagItems;\n        source.setVariable(JSON.stringify(config));\n        allTagPairs = tagItems;\n    }\n\n    if (config._lastTagCategory !== selectedTagCat) {\n        config.tagLoadCount = 25;\n        config._lastTagCategory = selectedTagCat;\n        source.setVariable(JSON.stringify(config));\n    }\n\n    var filteredPairs = [];\n    if (selectedTagCat === '全部') {\n        filteredPairs = allTagPairs;\n    } else if (selectedTagCat === '其他') {\n        filteredPairs = allTagPairs.filter(function(item) {\n            return !item.category || item.category === '其他';\n        });\n    } else {\n        filteredPairs = allTagPairs.filter(function(item) {\n            return item.category === selectedTagCat;\n        });\n    }\n\n    var pageSize = 25;\n    var total = filteredPairs.length;\n    var currentCount = config.tagLoadCount || pageSize;\n    if (currentCount > total) currentCount = total;\n    var displayPairs = filteredPairs.slice(0, currentCount);\n\n    \n    if (total > pageSize) {\n        var isAllLoaded = (currentCount >= total);\n        var batchTitle, batchAction;\n        if (isAllLoaded) {\n            batchTitle = \"🔼 收起（显示\" + pageSize + \"个）\";\n            batchAction = \"(function(){ var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } c.tagLoadCount = \" + pageSize + \"; source.setVariable(JSON.stringify(c)); java.refreshExplore(); })()\";\n        } else {\n            var newCount = currentCount + pageSize;\n            if (newCount > total) newCount = total;\n            batchTitle = \"📂 分批加载（+\" + (newCount - currentCount) + \"）\";\n            batchAction = \"(function(){ var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } c.tagLoadCount = \" + newCount + \"; source.setVariable(JSON.stringify(c)); java.refreshExplore(); })()\";\n        }\n        s.push({\n            title: batchTitle,\n            type: \"button\",\n            action: batchAction,\n            style: {\n                layout_flexGrow: 1,\n                layout_flexBasisPercent: 0.4\n            }\n        });\n\n        var allTitle, allAction;\n        if (isAllLoaded) {\n            allTitle = \"↩️ 恢复默认（显示\" + pageSize + \"个）\";\n            allAction = \"(function(){ var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } c.tagLoadCount = \" + pageSize + \"; source.setVariable(JSON.stringify(c)); java.refreshExplore(); })()\";\n        } else {\n            allTitle = \"📦 全部加载（\" + total + \"个）\";\n            allAction = \"(function(){ var c = {}; try { c = JSON.parse(source.getVariable() || '{}'); } catch(e) { c = {}; } c.tagLoadCount = \" + total + \"; source.setVariable(JSON.stringify(c)); java.refreshExplore(); })()\";\n        }\n        s.push({\n            title: allTitle,\n            type: \"button\",\n            action: allAction,\n            style: {\n                layout_flexGrow: 1,\n                layout_flexBasisPercent: 0.4\n            }\n        });\n    }\n\n    \n    displayPairs.forEach(function(pair) {\n        var url = '\/tag\/need_filters=1&tag_id=' + pair.id + '&gender=2&words=' + tagWords + '&sort=' + tagSort + '&over=' + tagOver + '&page={{page}}';\n        p(pair.name, url, 1, 0.25);\n    });\n}\n\n\nJSON.stringify(s);","lastUpdateTime":"1786455829809","loginUi":"@js:\nvar ui = [];\nfunction p(t, a, y, e) { ui.push({ name: t, type: y || 'button', action: a || '', style: { layout_flexGrow: 1, layout_flexBasisPercent: e || 1 } }); }\np('📌关于本书源','xx()');\np('🎑更新日志','g()','','0.4');\np('📰更新(公告)','gx()','','0.4');\np('🎓书源修改作者主页','my()','','0.4');\np('🐧QQ聊天群','qqltq()','','0.4');\np('❣️🎉🎁祝你天天开心🎁🎉❣️','cd()');\nJSON.stringify(ui);","loginUrl":"const localVersion = '3.1';\nfunction login(){\n    let csh=this.setcsh();\n    return true;\n}\nxx= () => {\nsource.removeLoginHeader();\n java.toast(\"\\n🎊🎁🎉'观迎使用🎉🎁🎉🎊\\n❗❗❗本书源禁止倒卖❗❗❗\\n\\n注：\\n仅供学习研究使用，请在24h内删除\\n正版也是免费的，请支持正版。\\n\\n不接受任何以分享、整理的名义倒卖。禁止删除本源的任何注释\\n\\n简介：\\n✨开发中……\\n七猫小说官方接口(API)\\n纯本地无云控\\n已更新最新版app搜索接囗, 无段评,部分出版书籍\/短篇无法观看\\n\\n作者:\\n书源发现修改拼接 一只可爱的猫\\n书源本体 渊呀&风停在了窗边&yc1101b&一程\\n最新app搜索椄口 龙珠&妍希\\n版本规则 清词\\n登录规则 辞晨\\n彩蛋 梓澄qwq(also Naiy)\")\n}\ng= () => {\nsource.removeLoginHeader();\n java.toast(\"\\n2026.3.8 公开发布增源社区\\n此后以版本号更新\\n1.0 优化详情页简介显示,增加版本号\\n1.1 优化详情页显示,发现页加入搜索,登录,分类,精简书源\\n2.0 新增排行榜,重构发现页,修复简介分段,精简\\n2.1 修复推荐榜参数缺失\\n2.2 重构发现页,统一数据结构,修复最新章节语法,移除调试日志,修正标签URL\\n2.3 新增发现切换,更新分类(去除失效,新增有效)\\n2.4 标签分类补全\\n2.5 发现页加入刷新按钮\\n2.6 标签分组分页(默认25个),缓存+异步刷新,切换更流畅\\n2.7 详情页卡片式布局,简介置顶保留换行和斜体,逐行显示,新增来源行和底部警示框\\n2.8 重写登录UI逻辑,发现分类,添加字数_状态_排序分类筛选功能,详情页添加角色\\n2.9 为标签添加字数_状态_排序筛选功能,去除书源请求头\\n3.0 尝试修复下拉选择分组\/分类\/标签\/筛选条件后,发现页不自动刷新的问题.统一所有切换动作的刷新逻辑,强制在UI线程执行刷新\\n3.1 修复所有下拉选择器(分组\/分类\/字数\/状态\/排序\/标签)在切换后自动刷新发现页,应该不再需要手动点“刷新”.修正部分控件的style位置错误和action语法问题\")\n}\ngx =() =>{\njava.startBrowser('https:\/\/fzh134679.lanzouv.com\/b00yayp8gj','书源发布页')\nsource.removeLoginHeader();\n}\nmy=()=>{\njava.startBrowser('https:\/\/ycoo.net\/home.php?mod=space&uid=29089&do=profile&mobile=2','发布页')\n}\nqqltq=()=>{\njava.startBrowser('https:\/\/qun.qq.com\/universal-share\/share?ac=1&authKey=SBa0EDxv4jW1wI7ajkH%2BsQPKSUnsiJ2L01PHRFFYSgwgEIpSg3tLLVXDiDdsawal&busi_data=eyJncm91cENvZGUiOiI5MDc2NzQyNDgiLCJ0b2tlbiI6IkNnT1dqQWFJcU44OERWaks3RDJaL0ozSytuN2lyUFNDenFYQmswMGRQdVN3eG9kVUYwVVpCTXd2TkNkQmRMS3EiLCJ1aW4iOiIzMTMxOTE4Njg4In0%3D&data=ms49BoXwdi6sUmCn_pRDTFVeCI2V0evk7H7woHNiLOTbnqS58VJtVD2veZXX67R4kwemRZmiLUz6sl1mFaa73w&svctype=4&tempid=h5_group_info','QQ聊天群')\n}\nfunction cd() {\n  let gc = [\"(*^ω^*)\", \"(=^▽^=)\", \"(。’▽’。)♡\", \"٩(๑´0`๑)۶\", \"喵\", \"你好？\", \"逢考必过！\", \"早ﾉ☀\"]\n  rnd = Math.floor(Math.random() * 100)\n  if (typeof gc[rnd] != \"undefined\") {\n    java.toast(gc[rnd])\n  } else {\n    let res = JSON.parse(\n      java.ajax(\"https:\/\/v1.hitokoto.cn\")\n    )\n    java.toast(res.hitokoto)\n  }\n}","respondTime":180000,"ruleBookInfo":{"author":"author","coverUrl":"image_link","init":"data.book","intro":"<useweb>\n<style>\n.card {\n    background: #f2f2f2;\n    border-radius: 12px;\n    padding: 14px;\n    margin: 8px 0;\n    box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n    font-size: 14px;\n}\nhtml.dark .card {\n    background: #1e1e1e;\n    box-shadow: 0 2px 8px rgba(0,0,0,0.4);\n}\n.item {\n    display: flex;\n    padding: 3px 0;\n}\n.label {\n    font-weight: bold;\n    width: 70px;\n    flex-shrink: 0;\n}\n.value {\n    flex: 1;\n}\n.intro-text p {\n    text-indent: 2em;\n    margin: 0 0 3px 0;\n    font-style: italic;\n}\n.disclaimer {\n    background: #fef8e7;\n    border: 2px solid #e67e22;\n    border-radius: 12px;\n    padding: 12px 14px;\n    margin: 8px 0;\n    font-size: 13px;\n    text-align: center;\n    color: #c0392b;\n}\nhtml.dark .disclaimer {\n    background: #2d1f0a;\n    border-color: #e67e22;\n    color: #f39c12;\n}\n<\/style>\n<div class=\"card\">\n    <div style=\"font-weight:bold;margin-bottom:4px;font-size:15px\">📜 简介<\/div>\n    <div class=\"intro-text\">\n        <p>{{$.intro##\\n##<\/p><p>}}<\/p>\n    <\/div>\n<\/div>\n<div class=\"card\">\n    <div class=\"item\"><span class=\"label\">📕书名<\/span><span class=\"value\">{{$.title}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">✍️作者<\/span><span class=\"value\">{{$.author}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">⌨️字数<\/span><span class=\"value\">{{$.words_num}}字<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">📎分类<\/span><span class=\"value\">{{$.category_over_words}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">🏷️标签<\/span><span class=\"value\">{{$.book_tag_list[*].title##\\s##☉}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">👥角色<\/span><span class=\"value\">{{$.characters}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">💯评分<\/span><span class=\"value\">{{$.attribute.score}}分<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">👁️在线<\/span><span class=\"value\">{{$.attribute.reading_info_list[2]}}人正在阅读<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">🕐更新<\/span><span class=\"value\">{{java.timeFormat(java.getString('$.update_time')*1000)}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">📡来源<\/span><span class=\"value\">{{$.source}}<\/span><\/div>\n    <div class=\"item\"><span class=\"label\">📍版权<\/span><span class=\"value\">{{$.statement}}<\/span><\/div>\n<\/div>\n<div class=\"disclaimer\">\n    ⚠️ 本书源仅供学习研究使用，严禁倒卖！<br>\n    请于24小时内删除，正版免费，请支持正版。\n<\/div>\n<\/useweb>","kind":"{{$.source}},{{$.category_over_words}},{{$.attribute.score}}分,{{$.attribute.reading_info_list[2]}}人正在阅读,{{$.book_tag_list[*].title##\\s##,}}","lastChapter":"{{$.latest_chapter_title}} {{java.timeFormat(java.getString('$.update_time')*1000)}}","name":"title@put:{bid:id}","tocUrl":"@js:\nvar sign_key='d3dGiJc651gSQ8w1';\nvar params={id:{{$.id}}};\nvar urlEncode=function(p,k,e){if(p==null)return '';var s='';var t=typeof p;if(t=='string'||t=='number'||t=='boolean'){s+='&'+k+'='+((e==null||e)?encodeURIComponent(p):p);}else{for(var i in p){var k2=k==null?i:k+(p instanceof Array?'['+i+']':'.'+i);s+=urlEncode(p[i],k2,e);}}return s;};\nvar ps=String(java.md5Encode(Object.keys(params).sort().reduce(function(pre,n){return pre+n+'='+params[n];},'')+sign_key));\nparams.sign=ps;\nvar headers={'app-version':'80400','platform':'android','reg':'0','AUTHORIZATION':'','application-id':'com.****.reader','net-env':'1','channel':'unknown','qm-params':''};\nheaders.sign=String(java.md5Encode(Object.keys(headers).sort().reduce(function(pre,n){return pre+n+'='+headers[n];},'')+sign_key));\njava.put('headers',JSON.stringify({headers:headers}));\n'https:\/\/api-ks.wtzw.com\/api\/v1\/chapter\/chapter-list?'+urlEncode(params)+','+java.get('headers');","wordCount":"words_num"},"ruleContent":{"content":"@js:\nvar javaImport = new JavaImporter();\njavaImport.importPackage(Packages.java.lang, Packages.javax.crypto.spec, Packages.javax.crypto, Packages.java.util);\nwith (javaImport) {\n    function decode(content) {\n        var ivEncData = Base64.getDecoder().decode(String(content));\n        var key = SecretKeySpec(String(\"242ccb8230d709e1\").getBytes(), \"AES\");\n        var iv = IvParameterSpec(Arrays.copyOfRange(ivEncData, 0, 16));\n        var chipher = Cipher.getInstance(\"AES\/CBC\/PKCS5Padding\");\n        chipher.init(2, key, iv);\n        return String(chipher.doFinal(Arrays.copyOfRange(ivEncData, 16, ivEncData.length)));\n    }\n}\nsign_key = \"d3dGiJc651gSQ8w1\";\ndata = java.hexDecodeToString(result)\n\/\/java.log(data)\nparams = { id: String(java.get(\"bid\")), chapterId: String(data.split(\"\/\").shift()) };\n\/\/java.log(JSON.stringify(params))\nvar urlEncode = function (param, key, encode) {\n    if (param == null) return \"\";\n    var paramStr = \"\";\n    var t = typeof param;\n    if (t == \"string\" || t == \"number\" || t == \"boolean\") {\n        paramStr += \"&\" + key + \"=\" + (encode == null || encode ? encodeURIComponent(param) : param);\n    } else {\n        for (var i in param) {\n            var k = key == null ? i : key + (param instanceof Array ? \"[\" + i + \"]\" : \".\" + i);\n            paramStr += urlEncode(param[i], k, encode);\n        }\n    }\n    return paramStr;\n};\nparamSign = String(\n    java.md5Encode(\n        Object.keys(params)\n            .sort()\n            .reduce((pre, n) => pre + n + \"=\" + params[n], \"\") + sign_key\n    )\n);\nparams[\"sign\"] = paramSign;\nurl = \"https:\/\/api-ks.wtzw.com\/api\/v1\/chapter\/content?\" + urlEncode(params);\ndecode(JSON.parse(java.ajax(url + \",\" + java.get(\"headers\"))).data.content);"},"ruleExplore":{"author":"$.author","bookList":"<js>\nvar base=baseUrl;\nvar sign_key='d3dGiJc651gSQ8w1';\nvar headers={'app-version':'80400','platform':'android','reg':'0','AUTHORIZATION':'','application-id':'com.****.reader','net-env':'1','channel':'unknown','qm-params':''};\nheaders.sign=String(java.md5Encode(Object.keys(headers).sort().reduce(function(pre,n){return pre+n+'='+headers[n];},'')+sign_key));\nvar urlEncode=function(p,k,e){if(p==null)return '';var s='';var t=typeof p;if(t=='string'||t=='number'||t=='boolean'){s+='&'+k+'='+((e==null||e)?encodeURIComponent(p):p);}else{for(var i in p){var k2=k==null?i:k+(p instanceof Array?'['+i+']':'.'+i);s+=urlEncode(p[i],k2,e);}}return s;};\nvar isLB=base.indexOf('leader-board')>-1;\nif(isLB){var qs=base.split('?')[1];var ps={};qs.split('&').forEach(function(p){var kv=p.split('=');ps[kv[0]]=kv[1];});ps.sign=String(java.md5Encode(Object.keys(ps).sort().reduce(function(pre,n){return pre+n+'='+ps[n];},'')+sign_key));var u='https:\/\/api-bc.wtzw.com\/api\/v1\/leader-board?'+urlEncode(ps);java.put('headers',JSON.stringify({headers:headers}));java.ajax(u+','+java.get('headers'));}else{\nvar g=base.match(\/gender=(\\d+)\/)?base.match(\/gender=(\\d+)\/)[1]:'';\nvar cid=base.match(\/category_id=(\\d+)\/)?base.match(\/category_id=(\\d+)\/)[1]:'';\nvar pg=base.match(\/page=(\\d+)\/)?base.match(\/page=(\\d+)\/)[1]:'';\nvar nf=base.match(\/need_filters=(\\d+)\/)?base.match(\/need_filters=(\\d+)\/)[1]:'1';\nvar nc=base.match(\/need_category=(\\d+)\/)?base.match(\/need_category=(\\d+)\/)[1]:'0';\nvar tid=base.match(\/tag_id=(\\d+)\/)?base.match(\/tag_id=(\\d+)\/)[1]:'';\nvar words=base.match(\/words=([^&]+)\/)?base.match(\/words=([^&]+)\/)[1]:'-99';\nvar sort=base.match(\/sort=([^&]+)\/)?base.match(\/sort=([^&]+)\/)[1]:'0';\nvar over=base.match(\/over=([^&]+)\/)?base.match(\/over=([^&]+)\/)[1]:'-99';\nvar ct=base.match(\/category_type=(\\d+)\/)?base.match(\/category_type=(\\d+)\/)[1]:'';\nif(base.match(\/category\/)){\n    var ps={gender:g,category_id:cid,need_filters:nf,page:pg,need_category:nc,words:words,sort:sort,over:over};\n    if(ct) ps.category_type=ct;\n    ps.sign=String(java.md5Encode(Object.keys(ps).sort().reduce(function(pre,n){return pre+n+'='+ps[n];},'')+sign_key));\n    var u='https:\/\/api-bc.wtzw.com\/api\/v4\/category\/get-list?'+urlEncode(ps);\n    java.put('headers',JSON.stringify({headers:headers}));\n    java.ajax(u+','+java.get('headers'));\n}else if(base.match(\/tag\/)){\n    var ps={gender:g,need_filters:nf,page:pg,tag_id:tid,words:words,sort:sort,over:over};\n    ps.sign=String(java.md5Encode(Object.keys(ps).sort().reduce(function(pre,n){return pre+n+'='+ps[n];},'')+sign_key));\n    var u='https:\/\/api-bc.wtzw.com\/api\/v4\/tag\/index?'+urlEncode(ps);\n    java.put('headers',JSON.stringify({headers:headers}));\n    java.ajax(u+','+java.get('headers'));\n}}\n<\/js>\n$.data.books","bookUrl":"@js:\nvar sign_key='d3dGiJc651gSQ8w1';\nvar params={id:{{$.id}},imei_ip:'2937357107',teeny_mode:0};\nvar urlEncode=function(p,k,e){if(p==null)return '';var s='';var t=typeof p;if(t=='string'||t=='number'||t=='boolean'){s+='&'+k+'='+((e==null||e)?encodeURIComponent(p):p);}else{for(var i in p){var k2=k==null?i:k+(p instanceof Array?'['+i+']':'.'+i);s+=urlEncode(p[i],k2,e);}}return s;};\nvar ps=String(java.md5Encode(Object.keys(params).sort().reduce(function(pre,n){return pre+n+'='+params[n];},'')+sign_key));\nparams.sign=ps;\nvar headers={'app-version':'80400','platform':'android','reg':'0','AUTHORIZATION':'','application-id':'com.****.reader','net-env':'1','channel':'unknown','qm-params':''};\nheaders.sign=String(java.md5Encode(Object.keys(headers).sort().reduce(function(pre,n){return pre+n+'='+headers[n];},'')+sign_key));\njava.put('headers',JSON.stringify({headers:headers}));\n'https:\/\/api-bc.wtzw.com\/api\/v4\/book\/detail?'+urlEncode(params)+','+java.get('headers');","coverUrl":"$.image_link","intro":"$.intro","kind":"$.score&&$.ptags&&$.sub_title&&$.heat_number","name":"$.title","wordCount":"$.words_num"},"ruleSearch":{"author":"original_author","bookList":"$.data.books","bookUrl":"@js:\nvar sign_key='d3dGiJc651gSQ8w1';\nvar params={id:{{$.id}},imei_ip:'2937357107',teeny_mode:0};\nvar urlEncode=function(p,k,e){if(p==null)return '';var s='';var t=typeof p;if(t=='string'||t=='number'||t=='boolean'){s+='&'+k+'='+((e==null||e)?encodeURIComponent(p):p);}else{for(var i in p){var k2=k==null?i:k+(p instanceof Array?'['+i+']':'.'+i);s+=urlEncode(p[i],k2,e);}}return s;};\nvar ps=String(java.md5Encode(Object.keys(params).sort().reduce(function(pre,n){return pre+n+'='+params[n];},'')+sign_key));\nparams.sign=ps;\nvar headers={'app-version':'80400','platform':'android','reg':'0','AUTHORIZATION':'','application-id':'com.****.reader','net-env':'1','channel':'unknown','qm-params':''};\nheaders.sign=String(java.md5Encode(Object.keys(headers).sort().reduce(function(pre,n){return pre+n+'='+headers[n];},'')+sign_key));\njava.put('headers',JSON.stringify({headers:headers}));\n'\/api\/v4\/book\/detail?'+urlEncode(params)+','+java.get('headers');","checkKeyWord":"我在末世变废为宝","coverUrl":"image_link","intro":"$.intro","kind":"$.score&&$.ptags&&$.sub_title&&$.heat_number","name":"original_title","wordCount":"words_num"},"ruleToc":{"chapterList":"$.data.chapter_lists","chapterName":"$.title","chapterUrl":"@js:\nvar cid='{{$.id}}';var cmd5='{{$.content_md5}}';\n'data:;base64,'+java.base64Encode(cid+'\/'+cmd5)+',{\"type\":\"qm\"}';","updateTime":" {{$.words}} 字"},"searchUrl":"@js:\njava.longToast('严禁倒卖，点击登录查看相关信息');\nvar sign_key='d3dGiJc651gSQ8w1';\nvar headers={'app-version':'80400','platform':'android','reg':'0','AUTHORIZATION':'','application-id':'com.kmxs.reader','net-env':'1','channel':'qm-xiaomi_If','qm-params':''};\nvar params={gender:'3',imei_ip:'2937357107',page:page,wd:key};\nvar urlEncode=function(p,k,e){if(p==null)return '';var s='';var t=typeof p;if(t=='string'||t=='number'||t=='boolean'){s+='&'+k+'='+((e==null||e)?encodeURIComponent(p):p);}else{for(var i in p){var k2=k==null?i:k+(p instanceof Array?'['+i+']':'.'+i);s+=urlEncode(p[i],k2,e);}}return s;};\nheaders.sign=String(java.md5Encode(Object.keys(headers).sort().reduce(function(pre,n){return pre+n+'='+headers[n];},'')+sign_key));\nparams.sign=String(java.md5Encode(Object.keys(params).sort().reduce(function(pre,n){return pre+n+'='+params[n];},'')+sign_key));\njava.put('headers',JSON.stringify({headers:headers}));\n'\/search\/v1\/words?'+urlEncode(params)+','+java.get('headers');","weight":0}]