📖 晋江书单

📖晋江书单

分享者: guaner001125 (317)发布时间: 08/16 05:32

修bug
二维码导入
{
    "articleStyle": 2,
    "cacheFirst": false,
    "customOrder": 0,
    "enableJs": true,
    "enabled": true,
    "enabledCookieJar": true,
    "header": "{\n\t\"referer\":\"http:\/\/android.jjwxc.net\/?v=486\",\n\t\"versionCode\":\"486\",\n\t\"versiontype\":\"reading\",\n  \"User-Agent\": \"Dalvik\/2.1.0\"\n}",
    "jsLib": "function encode(data){\n    return String(this.java.createSymmetricCrypto(\"DES\/CBC\/PKCS5Padding\", String(\"KW8Dvm2N\"), String(\"1ae2c94b\")).encryptBase64(data));\n}\n",
    "lastUpdateTime": 1786829062065,
    "loadWithBaseUrl": true,
    "loginCheckJs": "cache.put(\"jjsdv0801\",1);\nresult",
    "preload": false,
    "preloadJs": "window.java = java;\nwindow.encryptBase64Await = encryptBase64Await;\nwindow.run = run",
    "ruleArticles": "$.data.data[*]||$.data.list[*]||$.data.fav_find_book_list[*]&&$.data.find_book_list[*]&&$.data.fav_list[*]&&$.data.book_list[*]||$.data.recommend[*]%%$.data.find[*]\n<js>\nif(result ==\"[]\"){\n\tresult = JSON.stringify([\n\t{\"title\":\"支持源作者\",\n\t\"url\":`data:pic;base64,PGltZyBzdHlsZT0id2lkdGg6MTAwJSIgc3JjPSJhYm91dDpibGFuayIgb25lcnJvcj0idGhpcy5zcmM9YXRvYignYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2WjNWaGJtVnlNREF4TVRJMUwySnZiMnR6YjNWeVkyVXZjbUYzTDIxaGMzUmxjaThsUlRVbE9VSWxRa1VsUlRjbE9Ea2xPRGN2WjNWaGJtVnlMbmRsWW5BPScpIj4KCg==,{\"type\":\"html\"}`}\n\t])\n\t\n\t}\nresult\n<\/js>\n$.[*]",
    "ruleContent": "@js:\njava.longToast(\"加载中.....\");\nlet lyc = 1;\ntry{\n\t  java.getThemeConfig();\n\t}catch(e){lyc = 0;}\n\n    let c = baseUrl.indexOf(\"getTopTenNovelComment\")>-1;\nfunction replaceEmoticons(t) {\n    const n = t => `<img class=\"ef\" src=\"https:\/\/i9-static.jjwxc.net\/tmp\/emoji\/${t}.png\"\/>`,\n        o = {'狗头': n('dog'),'星星眼': n('star'),'亲亲': n('kiss'),'害羞': n('shy'),'坏笑': n('bad_smile'),'爱心眼': n('love_heart'),'让我康康': n('look'),'加油': n('go'),'撒花': n('flower'),'奶茶': n('milk'),'彩虹屁': n('rainbow'),'笑哭': n('laugh'),'爆哭': n('cry'),'托腮': n('sigh'),'问号': n('question'),'闭嘴': n('shut'),'白眼': n('eyes'),'裂开': n('break'),'墨镜': n('20240809171403_66b5dddb9b4a9_201'),'吃瓜': n('20240813133503_66baf08792cb4_971'),'可怜': n('20240813133538_66baf0aa48da0_272'),'摊手': n('20240813133559_66baf0bfe94a8_123'),'化了': n('20240813133734_66baf11eca900_736'),'捂脸偷看': n('20240813133808_66baf140db042_203'),'哈哈大笑': n('20250327162728_67e50bf002312_926'),'摸头': n('20250327162816_67e50c2004946_460'),'抱抱': n('20250327162653_67e50bcdc4107_345'),'哦哦哦': n('20250327162901_67e50c4d70e05_616'),'无奈': n('20250327163425_67e50d916f9f7_934'),'捂脸笑哭': n('20250327162314_67e50af266b86_726'),'眼镜': n('20250513142108_6822e4d4908c7_855'),'好的': n('20250513142306_6822e54a95fec_363'),'求你了': n('20250513142345_6822e5719d933_198'),'求求你了': n('20250513142416_6822e59075a3b_751'),'小丑': n('20240813134155_66baf223161c9_172'),'猫头': n('20240813134245_66baf2554d0c0_482'),'三花猫头': n('20240813134304_66baf2688507d_882'),'垂耳兔头': n('20240813134345_66baf29111f22_694'),'竖耳兔头': n('20240813134441_66baf2c986c2b_931'),'熊猫头': n('20240813134502_66baf2deb9a59_203'),'害怕': n('fear'),'愤怒': n('anger'),'菜狗': n('20240813134018_66baf1c223617_332'),'狗头叼玫瑰': n('20250513142003_6822e493665f5_485'),'抱大腿': n('20260204135809_6982dff14e77e_333'),'加载ing': n('20260204140413_6982e15d2793a_774'),'抠脑壳': n('20260204140336_6982e138332f7_280'),'吐血': n('20260204140451_6982e1831a3eb_940'),'躺平': n('20260204140510_6982e1966d57c_902'),'咬手绢': n('20260204140825_6982e259def03_162'),'接': n('20260204140844_6982e26c6b04d_710'),'咦~': n('20260204140948_6982e2ace7d2d_985'),'鸽子': n('dove'),'发财': n('rich'),'好运莲莲': n('20240813132511_66baee37a0048_173'),'玫瑰': n('20240813132550_66baee5e5f847_433'),'橘糖': n('20240813132714_66baeeb282db3_126'),'紫糖': n('20240813132746_66baeed24ae82_531'),'猫爪': n('20240813132824_66baeef888f6a_514'),'药丸': n('20240813132902_66baef1e7590e_674'),'柠檬': n('20240813133018_66baef6a49f76_858'),'烟花': n('20250513142645_6822e6257d8f0_243'),'元宝': n('20250513142558_6822e5f6c2986_398'),'饭饭': n('20250513142708_6822e63c630d3_583'),'空碗': n('20250513142731_6822e653b7bac_594'),'鸡腿': n('20260204143139_6982e7cba82a6_247'),'蛋糕': n('20260204143253_6982e815d10ed_365'),'加一': n('20250513142841_6822e699f2124_862'),'减一': n('20250513142916_6822e6bc011ee_516'),'敲木鱼': n('20260204142929_6982e7493d944_145'),'耳朵': n('20240813133118_66baefa6c51c9_627'),'沙发': n('20260204143209_6982e7e9ea976_665'),'比心': n('hand_heart'),'点赞': n('like'),'鼓掌': n('clap'),'666': n('666'),'摆手': n('wave'),'合十': n('20240813132056_66baed38130c1_545'),'抱拳': n('20250327163246_67e50d2e50aa5_351'),'心碎': n('broken_heart'),'红心': n('red_heart'),'橙心': n('orange_heart'),'黄心': n('yellow_heart'),'绿心': n('green_heart'),'青心': n('cyan_heart'),'蓝心': n('blue_heart'),'紫心': n('purple_heart'),'粉心': n('pink_heart'),'裤子': n('20250513142753_6822e669080b5_216'),'橙裤': n('20251222112949_6948bb2d0c1a0_312'),'黄裤': n('20260204142815_6982e6ffb9231_878'),'绿裤': n('20260204150217_6982eef91613d_152'),'青裤': n('20260204153134_6982f5d665d98_318'),'蓝裤': n('20260204150249_6982ef1911a40_263'),'紫裤': n('20260204150315_6982ef3399d82_820')};\n    return t.replace(\/\\[([^\\]]+)\\]\/g, (t, r) => o[r.trim()] || t)\n}\n\nfunction getBooklist(list, src){\n    var html = \"\";\n    var alllist = list.recommend_novelinfo ? list.recommend_novelinfo : list;\n    if(!alllist || !alllist[0] || !alllist[0].novelid) alllist = [];\n    var json = src ? JSON.parse(src) : {};\n    json = json.data && json.data.booklist_desc ? json.data.booklist_desc : {};\n\n    for(var idx=0; idx<alllist.length; idx++){\n        var $ = alllist[idx];\n        var novelid = $.novelid;\n        var cover = ($.cover || `https:\/\/i9-static.jjwxc.net\/novelimage.php?novelid=${novelid}`).replace(\/http:\/g,'https:');\n        var cover2 = `https:\/\/i9-static.jjwxc.net\/novelimage.php?novelid=${novelid}`;\n        var novelname = $.novelname || \"\";\n        var authorname = $.authorname || \"\";\n        var novelstep_name = $.novelstep_name || $.novelstep_str || $.novelstep || \"\";\n        var novelsize = $.novelsize || \"\";\n        var novel_review_score = $.novel_review_score || ($.fav_count_str==undefined?\"\":$.fav_count_str+\"收藏\");\n        var novelstar = $.novelstar || 0;\n        var starStr = \"\";\n        for(var si=0; si<novelstar; si++){ starStr += \"★\"; }\n        starStr = starStr || $.commentdate || \"\";\n        var novelintroshort = $.novelintroshort || \"\";\n        var comment = $.comment || $.commentbody || \"\";\n        comment = replaceEmoticons(comment ? comment.replace(\/\\s*(.*)\\n\/g,'&emsp;&emsp;$1<br>').replace(\/<br>(?!&emsp)\/gm,'<br>&emsp;&emsp;').replace(\/null\/g,'') : \"\");\n        var novelclass_str = $.novelclass_str || (`第${$.chapterid}章  打分:${$.commentmark}分  订阅率:`+($.subscription_rate_info?($.subscription_rate_info.rate||\"\"):\"\")+($.subscription_rate_info&&$.subscription_rate_info.iconapp==\"rate_novelallbuy\"?\"100%\":\"\"));\n        novelclass_str = novelclass_str.replace(\/订阅率:$\/,'');\n        var onclickOpen = json.reader_name ? ` onclick=\"openS('${json.reader_name}','${json.readerid}')\"` : '';\n\n        html += `\n        <div class=\"book\">\n            <div class=\"bookdes\" onclick=\"addShelf('${novelid}')\">\n                <div class=\"pic\" onclick=\"addShelf('${novelid}')\">\n                    <img src=\"${cover}\" referrerpolicy=\"no-referrer\" onerror=\"if(this.src!='${cover2}')this.src='${cover2}'\">\n                <\/div>\n                <div class=\"details\" onclick=\"addShelf('${novelid}')\">\n                        <p class=\"bookname\">${novelname}<\/a><\/p>\n                        <p class=\"author\"><a onclick=\"window.open('https:\/\/m.jjwxc.net#bookAuthor=${authorname}')\">——${authorname}<\/a><\/p>\n                    <p class=\"tag info\">${novelsize}•${novelstep_name}${novel_review_score?\"•\"+novel_review_score:\"\"} <\/p>\n                    <p class=\"tag intro\">${novelintroshort}<\/p>\n                    <p class=\"tag other\">${novelclass_str}<\/p>\n                    <p class=\"tag star\">${starStr}<\/p>\n                <\/div>\n            <\/div>\n            ${comment ? `<div class=\"comment\"${onclickOpen}>${comment}<\/div>` : \"\"}\n        <\/div>`;\n    }\n    return replaceEmoticons(html);\n}\n\ntry{\n    var srcObj = JSON.parse(src);\n    var list = srcObj.data && (srcObj.data.novel_lists || srcObj.data.booklist_desc && srcObj.data.booklist_desc.recommend_novelinfo) || srcObj.data;\n    var d = srcObj.data && srcObj.data.booklist_desc ? srcObj.data.booklist_desc : {};\nlet readid = srcObj?.data?.booklist_desc?.readerid??baseUrl.match(\/reader_id=(\\d+)\/)?.[1];\nlet readname = srcObj?.data?.booklist_desc?.reader_name ?? \"\";\n    var html = `\n<!DOCTYPE html>\n<html>\n<head>\n<meta name=\"referrer\" content=\"no-referrer\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${d.listname||\"\"}<\/title>\n<\/head>\n<body>\n\n<div class=\"booklist_desc\" ${ c ? 'style=\"display:none\"' : ''}>\n    ${d.level ? `<span class=\"lv\">${d.level}级<\/span> ` : \"\"}\n    <span class=\"tt\">${d.listname||\"\"}<\/span>\n    <div class=\"dt\">${d.dateline||d.create_time||\"\"}<\/div>\n    <div class=\"cnt\">${baseUrl.includes(\"BookListFindBook\")?\"找书\":\"荐书\"}描述 共${d.booknum||0}本•<span class=\"read_id_find\" data-id=\"${readid}\" onclick=\"openS('${readname}','${readid}')\">${readname}<\/span><\/div>\n    <div class=\"intro\">${d.introduction||\"\"}<\/div>\n<\/div>\n\n<div class=\"books-box\">\n    <div class=\"booklists\">${getBooklist(list, src)}<\/div>\n<\/div>\n\n<div class=\"reply-box\">\n    <div class=\"reply-head\" id=\"replyAnchor\" ${c ? 'style=\"display:none\"' : ''}>全部讨论<\/div>\n    <div id=\"replyContainer\"><\/div>\n    <div id=\"loadingMore\" class=\"loading\" ${c ? 'style=\"display:none\"' : ''}>加载中...<\/div>\n<\/div>\n\n<div class=\"bottom-bar\">\n    <button onclick=\"window.scrollTo({top:0,behavior:'smooth'})\">⬆️ 顶部<\/button>\n    <button onclick=\"document.getElementById('replyAnchor').scrollIntoView({behavior:'smooth'})\">💬 评论<\/button>\n\n    <!-- 菜单容器 -->\n    <div class=\"menu-wrapper\">\n        <div class=\"menu\" id=\"moreMenu\">\n            <button onclick=\"openDiscover()\" ${!lyc ? 'style=\"display:none\"' : ''}>🔍 打开发现<\/button>\n            <button onclick=\"followReader()\" ${!c ? 'style=\"display:none\"' : ''}>👤 关注读者<\/button>\n            <button onclick=\"copyReaderID()\" ${c ? 'style=\"display:none\"' : ''}>📋 复制 readerID<\/button>\n            <button onclick=\"copyUrl()\" ${c ? 'style=\"display:none\"' : ''}>📋 读者分类链接<\/button>\n        <\/div>\n        <button onclick=\"toggleMenu()\">≡<\/button>\n    <\/div>\n<\/div>\n\n\n<div id=\"modalOverlay\">\n<div id=\"modalContent\">\n    <div class=\"modalName\"><\/div>\n    <div style=\"display:flex;justify-content:center;padding:12px;gap:12px\">\n        <button class=\"modalBtn\" id=\"viewCommentsBtn\">读者<br>分类<br>链接<\/button>\n        <button class=\"modalBtn\" id=\"viewBooklistBtn\" ${!lyc ? 'style=\"display:none\"' : ''}>📚书单<\/button>\n        <button class=\"modalBtn\" id=\"viewComBtn\" ${!lyc ? 'style=\"display:none\"' : ''}>💬评论<\/button>\n    <\/div>\n<\/div>\n<\/div>\n\n<script>\n\n${getBooklist.toString()}\n${replaceEmoticons.toString()}\nfunction openS(name,id){\n    var m=document.getElementById(\"modalOverlay\");\n    m.style.display=\"flex\";\n    document.querySelector(\".modalName\").textContent=name;\n    m.onclick=function(e){if(e.target===m)m.style.display=\"none\";};\n    document.getElementById(\"viewCommentsBtn\").onclick=function(){\n        copyUrl(name,id)\n    };\n    \n    document.getElementById(\"viewBooklistBtn\").onclick=function(){\n        java.open(\"sort\",\"https:\/\/android.jjwxc.net\/app.jjwxc\/android\/reading\/booklist\/get?versionCode=477&reader_id=\"+id+\"&type=all\",name+\"的书单\",\"书单\");\n    };\n    \n    document.getElementById(\"viewComBtn\").onclick=function(){\n        java.open(\"explore\",\"https:\/\/android.jjwxc.net\/app.jjwxc\/android\/reading\/comment\/getTopTenNovelComment?versionCode=477&reader_id=\"+id+\"&useridentity_check=1\"+\",\"+'{\"headers\":{\"versioncode\":\"357\"}}',name+\"的评论\",\"https:\/\/m.jjwxc.net\/channel\/\");\n    };\n    \n}\nwindow.addShelf=function(id){\n    window.open(\"legado:\/\/import\/addToBookshelf?src=\"+encodeURIComponent(\"https:\/\/app-cdn.jjwxc.net\/androidapi\/novelbasicinfo?novelId=\"+id));\n};\nvar RM={page:0,total:1,loading:false};\nfunction getListId(){var m=window.location.href.match(\/id=(\\\\d+)\/);return m?m[1]:0;};\n\n\nfunction setLoading(text) {\n    var el = document.getElementById(\"loadingMore\");\n    if (el) el.textContent = text;\n}\n\nfunction toggleMenu() {\n    document.getElementById('moreMenu').classList.toggle('show');\n}\n\nfunction openDiscover() {\n    java.open(\"explore\",\\`data:findbook{\\\\{java.put(\"page\",page-1)}};base64,${java.base64Encode(baseUrl+\",\"+'{\"headers\":{\"referer\":\"http:\/\/android.jjwxc.net\/?v=357\",\"versionCode\":\"357\"}}')},{\"type\":\"\"}\\`,\"${d.listname??\"评论\"}\",\"https:\/\/m.jjwxc.net\/channel\/\");\n}\n\nfunction followReader() {\n    window.open(\"https:\/\/guaner010225.com\"+window.location.href+\"&addReader=\")\n}\n\nasync function copyUrl(name,id) {\n    let url = \"https:\/\/android.jjwxc.net\/app.jjwxc\/android\/reading\/booklist\/get?versionCode=477&reader_id=\"+(id?id:document.querySelector(\".read_id_find\").dataset.id)+\"&type=all\";\n    name = name?name:document.querySelector(\".read_id_find\").textContent;\n    await copyText(name+\"::\"+url);\n    alert(\"已复制分类URL,可编辑订阅源粘贴至分类URL\");\n}\n\n\n\n\nasync function copyReaderID() {\n    let id = document.querySelector(\".read_id_find\").dataset.id;\n    await copyText(id);\n    alert('readerID 已复制:'+id);\n}\n\nconst moreMenu = document.getElementById('moreMenu');\n\nfunction toggleMenu() {\n    moreMenu.classList.toggle('show');\n}\ndocument.addEventListener('click', function (e) {\n    if (!moreMenu.contains(e.target) && !e.target.closest('.menu-wrapper button')) {\n        moreMenu.classList.remove('show');\n    }\n});\n\n\n  async function copyText(text) {\n    try {\n      if (navigator.clipboard && window.isSecureContext) {\n        await navigator.clipboard.writeText(text);\n        return true;\n      }\n      const ta = document.createElement('textarea');\n      ta.value = text;\n      ta.style.cssText = 'position:fixed;left:-9999px;top:0';\n      ta.readOnly = true;\n      document.body.appendChild(ta);\n      ta.select();\n      ta.setSelectionRange(0, text.length);\n      document.execCommand('copy');\n      document.body.removeChild(ta);\n      return true;\n    } catch {\n      return false;\n    }\n  }\n\nfunction loadReplies(page){\n    if(RM.loading||page>RM.total)return;\n    RM.loading=true;\n   setLoading(\"加载中...\");\n    var listid=getListId();\n    var url=${baseUrl.indexOf(\"Booklist\")>-1\n        ? `\"https:\/\/app-cdn.jjwxc.com\/app.jjwxc\/android\/reading\/Booklist\/getRecommendCommentList?versionCode=357&listid=\"+listid+\"&page=\"+page+\"&filter_choice=1\"`\n        : `\"https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListFindBook\/replyList?versionCode=357&listid=\"+listid+\"&page=\"+page+\"&filter_recommend=0\"`\n    };\n    fetch(url,{\n        headers:{\n            \"referer\":\"https:\/\/android.jjwxc.net\/?v=357\",\n            \"versionCode\":\"357\",\n            \"versiontype\":\"reading\",\n            \"User-Agent\":\"Dalvik\/2.1.0\"\n        }\n    })\n    .then(function(r){return r.text();})\n    .then(function(t){\n        var j=JSON.parse(t);\n        var data=j.data||{};\n        var replies=data.data?data.data:(data.comment_list?data.comment_list:[]);\n        \n        RM.total = data.page_count || (data.total ? Math.ceil(data.total \/ 20) : 1);\n        if(replies.length==0){\n            \n            setLoading(\"已加载完全部\");\n            if(RM.total==0)\n            document.querySelector(\"#replyAnchor\").textContent = \"\";\n            RM.total  = 0;\n            return;\n        }\n        if(data.total > 0){\n            document.querySelector(\"#replyAnchor\").textContent = \"全部讨论 \"+data.total + \"${baseUrl.includes(\"BookListFindBook\")?\"\":\"【只显示大于5字评论】\"}\"\n        }else{\n            document.querySelector(\"#replyAnchor\").textContent = \"\";\n        }\n        var container=document.getElementById(\"replyContainer\");\n        if(page===1)container.innerHTML=\"\";\n        var start=(page-1)*20;\n        for(var i=0;i<replies.length;i++){\n            var item=replies[i];\n            var floor=start+i+1;\n            var html='<div class=\"cmt\"><div class=\"cmthead\"><span class=\"nick\" onclick=\"openS(\\\\''+item.nickname+'\\\\',\\\\''+item.readerid+'\\\\')\"><span class=\"fl\">'+floor+'楼<\/span>'+item.nickname+'<\/span><span><\/span><sapn class=\"ctime\">'+item.create_time+\"•\"+item.location+'<\/span><\/div><div class=\"bd\">'+replaceEmoticons(item.body||\"\")+'<\/div>';\n            \n            var sub=item.floor_reply_all||[];\n            let replyHtml = \"\";\n            for(var j=0;j<sub.length;j++){\n                var r=sub[j];\n                html +='<div class=\"sub\"><span class=\"nick\" onclick=\"openS(\\\\''+r.nickname+'\\\\',\\\\''+r.readerid+'\\\\')\">'+r.nickname+'<\/span><span class=\"ctime\">'+r.create_time+'<\/span>'+replaceEmoticons(r.body||\"\")+'<\/div>';\n            }\n            html+='<\/div>';\n            \n            var div = document.createElement(\"div\");\n            div.innerHTML = html;\n            container.appendChild(div);\n            \n            var bookdiv = document.createElement(\"div\");\n            bookdiv.innerHTML = getBooklist(item);\n            container.appendChild(bookdiv);\n\n        }\n        RM.page=page;\n        setLoading(RM.page>=RM.total?\"已加载全部\":\"下滑加载更多\");\n    })\n    .catch(function(){setLoading(\"加载失败,点击重试\");})\n    .finally(function(){RM.loading=false;});\n}\n\nwindow.addEventListener(\"scroll\", function(){\n    if(RM.loading || RM.page >= RM.total) return;\n    var st = document.documentElement.scrollTop || document.body.scrollTop;\n    var wh = window.innerHeight;\n    var dh = document.documentElement.scrollHeight;\n    if(dh - st - wh < 240) {\n        loadReplies(RM.page + 1);\n    }\n});\n\ndocument.getElementById(\"loadingMore\").onclick=function(){loadReplies(RM.page+1);};\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    ${baseUrl.includes(\"getTopTenNovelComment\")?\"RM.loading = true\":\"loadReplies(1);\"}\n    \n});\n\n<\/script>\n<\/body>\n<\/html>\n`;\n\n    result = html;\n\n}catch(e){\n    java.log(e);\n    try{ result = JSON.parse(src).message; }catch(_){ result = \"解析失败\"; }\n}\n",
    "ruleDescription": "@js:\nbaseUrl = String(java.getString(\"$.url\")) || baseUrl;\nif(\/data:pic;base64\/.test(baseUrl)){\n\tresult = java.base64Decode(baseUrl.match(\/base64,(.*?),\/)[1]);\n\t}else{\n\t\tresult = \"\"\n\t\t}",
    "ruleImage": "$.display_novelinfo[0].ebookurl||$.display_novelinfo[0].localImg||$.cover||$.localImg\n@js:\ntry{\n\tif(\/(?:postimg|bmp|alicdn|i9-static)\\.\/.test(result)){\n\tresult = \"https:\/\/i9-static.jjwxc.net\/novelimage.php?novelid={{$.display_novelinfo[0].novelid}}\";\n\t}else if(\/data:\/.test(baseUrl) || String(java.getString(\"$.url\"))){\n\t\t\n\t\timg = String(java.base64Decode(String(java.getString(\"$.url\")).match(\/base64,(.*?),\/)[1]));\n\t\tresult = java.base64Decode(img.match(\/atob\\('([^']+)'\/)[1])\n\t\t}else{\n\t\tresult = result\n\t\t}\n\t\theader = {\n\t\t\"headers\":{\n\t\t\t\"referer\":result.match(\/(^https?:\\\/\\\/.*?\\\/)\/)?.[1]\n\t\t\t}\n\t\t}\nresult = (result +\",\"+ JSON.stringify(header)).replace(\/wx\\d+\/,'wx2')\n}catch(e){\n\tjava.log(e)\n\t}\nresult",
    "ruleLink": "<js>\nlet token = \"\";\nif(\/token=\\d+\/.test(baseUrl)){\n\t  token =\"&token=\"+ baseUrl.match(\/token=(.*)\/)[1];\n\t}\ndata_type = java.getString(\"$.data_type||$.examine_status||$.display_status\");\nif(data_type==\"2\"){\n\t\"https:\/\/app-cdn.jjwxc.com\/app.jjwxc\/android\/reading\/Booklist\/getDetail?listid={{$.listid}}\"+token\n\t}else if(\/http\/.test(baseUrl)){\n\t\t\"https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListFindBook\/subjectDetail?versionCode=357&listid={{$.listid}}\"+token;\n\t\t}else{\n\t\t\t\"http:\/\/www.baidu.com\"\n\t\t\t}\n<\/js>",
    "ruleNextPage": "<js>\nif(\/rec_new_offset\/.test(baseUrl)){\n\tresult = \"https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListFindBook\/square?versionCode=357&rec_new_offset={{$.data.rec_new_offset}}&find_new_offset={{$.data.find_new_offset}}&rec_edit_offset={{$.data.rec_edit_offset}}\"\n\t}else if(\/page=\/.test(baseUrl)){\n\t\tresult = baseUrl.replace(\/page=\\d+\/,\"page=\"+(Number(baseUrl.match(\/page=(\\d+)\/)[1])+1));\n\t\t\n\t\t\t}\n\t\t\n<\/js>",
    "rulePubDate": "【{{java.getString(\"$.data_type||$.examine_status||$.display_status\")==1?\"🔍找书\":\"📖荐书\"}}】•{{$.level}}级 {{$.recommend_count||$.booknum}}本 {{$.fav_count||$.favnum}}收藏  |  {{$.introduction}}\n@js:result = result.replace(\/•级\/g,'')\n.replace(\/【📖荐书】 本 收藏|\\s*\\|\\s*$\/g,'');",
    "ruleTitle": "$.subject||$.title||$.listname##<\/*.*?>|.*荐书.*",
    "searchUrl": "https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListSearch\/search?versionCode=357&keywords={{key}}&page=1&sort=fav_count",
    "shouldOverrideUrlLoading": "if(url.includes(\"addReader\")){\n\ttry{\n\tlet id = url.match(\/reader_id=(\\d+)\/)[1];\n\tlet token = url.match(\/token=(\\d+_[a-z\\d]{32})\/)?.[1] ?? \"\";\n\tif(token){\n\turl = \"https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/ReaderColumn\/favReader\";\n            let body = this.encode(`{\"versionCode\":\"486\",\"favreaderid\":\"${id}\",\"token\":\"${token}\",\"action\":\"add\"}`);\n            let sign = encode(`{\"token\":\"${token}\",\"time\":${Date.now()}}`);\n            let r = java.post(url,body,{\n                    \"versioncode\":\"486\",\n                    \"sign\":String(sign),\n         \"User-Agent\":String(String(java.getWebViewUA()).replace(\/\\\/$\/,'')+\"\/JINJIANG-Android\"),\n\t\"versiontype\":\"reading\"\n                }).body();\n            java.toast(JSON.parse(r).message);\n\t}else{java.toast(\"你没有登录\")}\n\t}catch(e){java.toast(e)}\n\ttrue\n\t}else if(\/[\\?#&]book[AN]\/.test(url)){\n\ttitle = url.match(\/[\\?#&]book[AN].+?=(.*)\/)[1];\n\tURLDecoder = Packages.java.net.URLDecoder;\n\tgb2312Str = URLDecoder.decode(title,\"gbk\");\n utf8Str = URLDecoder.decode(title,\"utf-8\");\n\t result = gb2312Str.length() >= utf8Str.length();\n\t title = result?decodeURI(title):gb2312Str;\n\t java.searchBook(title);\n  result = true\n\t}",
    "showWebLog": false,
    "singleUrl": false,
    "sortUrl": "为你弃殷商::https:\/\/android.jjwxc.net\/app.jjwxc\/android\/reading\/booklist\/get?versionCode=477&reader_id=37632148&type=all\n\n热门书单::https:\/\/android.jjwxc.net\/app.jjwxc\/android\/reading\/BookListFindBook\/hotSubjectMore?versionCode=429\n\n书单广场::https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListFindBook\/square?versionCode=357&rec_new_offset=0&find_new_offset=0&rec_edit_offset=0&page={{page}}\n\n搜索书单::https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListSearch\/search?versionCode=357&keywords={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"\/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容<\/text><\/svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image\/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}&page=1&sort=fav_count\n\n搜索百合书单::https:\/\/android.jjwxc.com\/app.jjwxc\/android\/reading\/BookListSearch\/search?versionCode=358&page=1&sort=fav_count&must_xx=3&could_xx=5&book_num_range=0%2C252&data_type=1%2C2&keywords={{svg=String(java.base64Encode(`<svg width=\"1190\" height=\"300\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"\/><text x=\"200\" y=\"100\" font-family=\"Arial, sans-serif\" font-size=\"70\" fill=\"#333\" font-weight=\"bold\">输入要搜索的内容<\/text><\/svg>`));if(page==1){let a=\"\";try{a=java.getVerificationCode('data:image\/svg+xml;base64,'+svg);}catch(e){java.log(e)};if(a==\"\"){a=source.getVariable()}source.setVariable(a);a}else{source.getVariable()};}}\n\n百合书单::https:\/\/app.jjwxc.org\/app.jjwxc\/android\/reading\/BookListSearch\/search?versionCode=357&keywords=&page=1&sort=fav_count&must_xx=3&could_xx=&book_num_range=0%2C2213&data_type=1%2C2\n\t\n支持源作者::data:pic;base64,PGltZyBzdHlsZT0id2lkdGg6MTAwJSIgc3JjPSJhYm91dDpibGFuayIgb25lcnJvcj0idGhpcy5zcmM9YXRvYignYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2WjNWaGJtVnlNREF4TVRJMUwySnZiMnR6YjNWeVkyVXZjbUYzTDIxaGMzUmxjaThsUlRVbE9VSWxRa1VsUlRjbE9Ea2xPRGN2WjNWaGJtVnlMbmRsWW5BPScpIj4KCg==,{\"type\":\"html\"}",
    "sourceComment": "\/\/点击右上角三点,设置源变量搜索书单,或者下拉搜索\n\nlyc改版支持点击用户名之后,查看该用户书单",
    "sourceGroup": "阅读",
    "sourceIcon": "https:\/\/m-static.jjwxc.net\/images\/wap\/logo.png",
    "sourceName": " 📖\n晋江书单",
    "sourceUrl": "📖晋江书单",
    "style": "body {\n  background: #f6f7f9;\n  color: #222;\n  font-family: -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n  margin: 0;\n  padding: 12px;\n}\n.ctime{\n\tdisplay:block;\n\tmargin-left:auto;\n\tfont-size:9px;\n\tcolor:#999\n}\n\n.ef{\n\twidth: 1.3em; display: inline-block; vertical-align: middle; margin-top: -4px;\n}\n\t\n\/* 书单描述卡片 *\/\n.booklist_desc {\n  background: #fff;\n  padding: 16px;\n  margin: -12px -12px 12px;\n \/\/ border-radius: 0; \n  box-shadow: 0 2px 6px rgba(0,0,0,.1);\n  border-bottom: 1px solid #eee;\n}\n\n\n.booklist_desc .lv,\n.booklist_desc .dt {\n  color: #999;\n  font-size: 12px;\n}\n\n.booklist_desc .lv{\n\tcolor: #5E9E9E\n\t}\n.booklist_desc .intro{\n\tcolor:#222;\n\tfont-size: 15px;\n\tmargin-top:4px;\n\tline-height:1.5em;\n}\n\n.booklist_desc .tt {\n  font-size: 17px;\n  font-weight: 550;\n  margin: 6px 0;\n}\n\n.booklist_desc .cnt {\n  color: #666;\n  font-size: 13px;\n  margin-top: 6px;\n}\n\n\/* 书籍卡片 *\/\n.book {\n  background: #fff;\n  border-radius: 12px;\n  padding: 14px;\n  margin-bottom: 12px;\n  box-shadow: 0 2px 8px rgba(0,0,0,.06);\n}\n\n.bookdes {\n  display: flex;\n  gap: 12px;\n}\n\n.pic {\n  width: 98px;\n  height: 130px;\n  flex: 0 0 98px;\n  box-shadow:    \n    4px 4px 8px rgba(0, 0, 0, .2);\n border-radius: 8px;  \n}\n\n.pic img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  border-radius: 8px;\n}\n\n.details {\n  flex: 1;\n  min-width: 0;\n}\n\n.bookname {\n  font-size: 15px;\n  font-weight: 600;\n  margin: 0;  \n  color:#5C9952;\n}\n\n\n.author {\n  font-size: 12px;\n  color: #888;\n  margin-top: 4px;\n  margin-bottom:4px;\n  text-align: right;\n}\n\n.tag {\n  font-size: 12px;\n  color: #666;\n  margin: 5px 0;\n  line-height: 1.5;\n}\n\n.star{\n\tcolor:#E2902E\n\t}\n.intro{\n\tcolor:#5E9E9E\n\t}\n\n\/* 评论区卡片 *\/\n.comment,.booklist_desc .intro {\n  margin: 12px 0 0;\n  padding: 12px;\n  background: #EFF2F9;\n  border-radius: 10px;\n  font-size: 14px;\n  line-height: 1.7;\n}\n\n\/* 回复区域 *\/\n.reply-box {\n  padding-bottom: 80px;\n  \n}\n\n.reply-head {\n  padding: 14px 0;\n  font-size: 14px;\n  font-weight: 500;\n  color: #333;\n}\n\n.cmt {\n  background:#EFF2F9;\n  border-radius: 12px;\n  padding: 12px;\n  margin-bottom: 10px;\n  box-shadow: 0 2px 6px rgba(0,0,0,.2);\n}\n\n.cmt .nick {\n  color: #3A9DBF;\n  font-size: 14px;\n  font-weight: 600;\n}\n\n.cmt .fl {\n  color: #777;\n  font-size: 12px;\n  margin-right: 6px;\n}\n\n.cmt .bd {\n  font-size: 14px;\n  line-height: 1.7;\n  margin-top: 6px;\n  color: #000;\n  font-weight: 500;\n}\n\n.cmt .sub {\n  margin: 15px 0 0 12px;\n  padding-left: 10px;\n  border-left: 2px solid #888;\n  font-size: 13px;\n  color: #444;\n}\n\n.sub .nick{\n\t  color: #888;\n      font-weight: 400;\n      font-size: 12px;\n}\n\n\/* 加载 *\/\n.loading {\n  padding: 16px;\n  text-align: center;\n  color: #999;\n  font-size: 13px;\n}\n\n\/* 底部栏 *\/\n.bottom-bar {\n    position: fixed;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    display: flex;\n    gap: 8px;\n    padding: 10px;\n    padding-bottom: calc(10px + env(safe-area-inset-bottom));\n    background: #fff;\n    border-top: 1px solid #ddd;\n    z-index: 100;\n}\n\n\/* 所有按钮等宽 *\/\n.bottom-bar button {\n    flex: 1;\n    min-width: 0;\n    padding: 10px;\n    font-size: 14px;\n    border: none;\n    background: #f7f7f7;\n    border-radius: 6px;\n    white-space: nowrap;\n}\n\n\/* ≡ 按钮的包裹层 *\/\n.menu-wrapper {\n    position: relative;\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n}\n\n\/* 弹出菜单 *\/\n.menu {\n    position: absolute;\n    bottom: 120%;\n    width:140px;\n    background: #fff;\n    right:30px;\n    border: 1px solid #ddd;\n    border-radius: 10px;\n    box-shadow: 0 6px 20px rgba(0,0,0,.12);\n    overflow: hidden;\n    opacity: 0;\n    transform: translateY(10px) scale(0.98);\n    pointer-events: none;\n    transition:\n        opacity .2s ease,\n        transform .2s ease;\n}\n\n\/* 菜单显示状态(JS 控制 .show) *\/\n.menu.show {\n    opacity: 1;\n    transform: translateY(0) scale(1);\n    pointer-events: auto;\n}\n\n\/* 菜单内部按钮 *\/\n.menu button {\n    text-align: left;\n    border-radius: 0;\n    background: none;\n    padding:8px;\n    margin:10px\n}\n\n.menu button:hover {\n    background: #f5f5f5;\n}\n\n\/* 小三角 *\/\n.menu::after {\n    content: \"\";\n    position: absolute;\n    bottom: -6px;\n    right: 14px;\n    width: 10px;\n    height: 10px;\n    background: #fff;\n    border-right: 1px solid #ddd;\n    border-bottom: 1px solid #ddd;\n    transform: rotate(45deg);\n}\n\n\n\n#modalOverlay {\n  position: fixed;\n  inset: 0;\n  background: rgba(0, 0, 0, .45);\n  display: none;\n  justify-content: center;\n  align-items: center;\n  z-index: 999;\n}\n\n#modalContent {\n  width: 300px;\n  background: #fff;\n  border-radius: 14px;\n  overflow: hidden;\n  box-shadow: 0 8px 30px rgba(0, 0, 0, .15);\n}\n\n.modalName {\n  padding: 16px;\n  text-align: center;\n  font-weight: 600;\n  font-size: 16px;\n  color: #222;\n}\n\n.modalBtn {\n  display: block;\n  width: calc(100% - 32px);\n  margin: 0px 5px;\n  padding: 5px 10px;\n  border: none;\n  border-radius: 8px;\n  background: #f2f6ff;\n  color: #4a89dc;\n  font-size: 14px;\n  cursor: pointer;\n}\n\n.modalBtn:active {\n  background: #e8efff;\n}\n",
    "type": 0
}
广告