📖 晋江书单
📖晋江书单
分享者: 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,'  $1<br>').replace(\/<br>(?!&emsp)\/gm,'<br>  ').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
}