📖 星辰小说

https://quickapi.biduwenxue.com/api/xingchen

laizhiyu (6509)1天前

API书源
二维码导入
{
    "bookSourceGroup": "纯接口,API",
    "bookSourceName": "📖 星辰小说",
    "bookSourceType": 0,
    "bookSourceUrl": "https:\/\/quickapi.biduwenxue.com\/api\/xingchen",
    "bookUrlPattern": "https?:\/\/(?:quickapi|m|api|imgcdn)[a-z0-9.\\-]*\\.biduwenxue\\.com\/api\/book\/info\\?.*?bookId=\\d+",
    "concurrentRate": "1\/800",
    "customButton": false,
    "customOrder": 1,
    "enabled": true,
    "enabledCookieJar": false,
    "enabledExplore": true,
    "eventListener": false,
    "exploreUrl": "@js:(function(){\n  \/\/ 读当前 API 线路(多通道兜底,@js 环境绑定差异大)\n  var B='';\n  try{B=XC_base()}catch(e0){}\n  if(!B){try{B=XC_ok(source.get('xcLine'))}catch(e1){}}\n  if(!B){try{var vv=String(this.source.getVariable()||'');var oo=vv?(JSON.parse(vv)||{}):{};B=XC_ok(oo.xcLine)}catch(e2){}}\n  if(!B){try{B=XC_ok(java.get('xcLine'))}catch(e3){}}\n  if(!B){try{B=XC_ok(cache.get('xcLine'))}catch(e4){}}\n  if(!B)B='https:\/\/quickapi.biduwenxue.com';\n  if(String(B).indexOf('http')!==0)B='https:\/\/quickapi.biduwenxue.com';\n  B=String(B).replace(\/\\\/+$\/,'');\n  var OPT=JSON.stringify({method:'POST',body:'x=1',headers:{'Content-Type':'application\/x-www-form-urlencoded'}});\n  \/\/ 选中频道:infoMap 优先(select 真机注入)→ java.get 兜底 → 默认男频\n  var ch='',hasIm=false;\n  try{if(typeof infoMap!=='undefined'&&infoMap['频道']){ch=String(infoMap['频道']);hasIm=true}}catch(e5){}\n  if(!hasIm){try{var v2=String(java.get('xcChannel')||'');if(v2)ch=v2}catch(e6){}}\n  if(ch!=='男频'&&ch!=='女频')ch='男频';\n  var pd=(ch==='男频')?1:2, mark=(ch==='男频')?'♂ ':'♀ ';\n  \/\/ 全部条目均来自 ProxyPin 抓包中 App 真实操作的接口与响应:\n  \/\/   allCategorys(男17\/女7) \/ book.rankList(男女各3榜) \/\n  \/\/   columnList(appname=lingmao-android -> 男生id9 女生id10) \/\n  \/\/   columnContent(每栏目3个 xmbdName) \/ xmbd.bookList(xmbdId 36..41)\n  var CFG={\"男频\": {\"colId\": 9, \"colName\": \"男生\", \"lists\": [[36, \"老书虫热推\"], [37, \"全网齐上新\"], [38, \"经典耐看\"]]}, \"女频\": {\"colId\": 10, \"colName\": \"女生\", \"lists\": [[39, \"通勤路上看\"], [40, \"午休睡前看\"], [41, \"晚上自己看\"]]}};\n  var ALLC={\"男频\": [[1, \"都市热血\"], [2, \"玄幻爽文\"], [3, \"历史权谋\"], [4, \"武侠仙侠\"], [6, \"末世脑洞\"], [7, \"悬疑恐怖\"], [25, \"都市逆袭\"], [26, \"都市重生\"], [27, \"都市修真\"], [28, \"都市战神\"], [29, \"都市小白\"], [31, \"都市异能\"], [32, \"都市脑洞\"], [33, \"都市乡土\"], [34, \"玄幻奇幻\"], [35, \"玄幻脑洞\"], [36, \"历史架空\"]], \"女频\": [[10, \"现言\"], [11, \"古言\"], [12, \"幻想言情\"], [14, \"穿越重生\"], [41, \"穿越架空\"], [44, \"风水灵异\"], [45, \"推理刑侦\"]]};\n  var RKS=[[1, \"人气榜\"], [2, \"收藏榜\"], [3, \"字数榜\"]];\n  var CATS=ALLC[ch]||ALLC['男频'];\n  var c=CFG[ch];\n  var out=[];\n  \/\/ ① 频道 select:infoMap 优先 → result 兜底 → java.refreshExplore() 清两级缓存重绘\n  out.push({title:'频道',type:'select',chars:['男频','女频'],default:'男频',\n    action:\"(function(){var v='';try{if(typeof infoMap!=='undefined'&&infoMap['频道'])v=String(infoMap['频道']);}catch(e){}if(!v){try{if(typeof result!=='undefined'&&result&&result.get)v=String(result.get('频道')||'');}catch(e2){}}if(v){java.put('xcChannel',v);java.toast('✅ 已切换到频道:'+v);}else{java.toast('⚠ 未取到频道选项,保持原频道');}try{java.refreshExplore();}catch(e3){try{java.reUiView(true);}catch(e4){}}})()\",\n    style:{layout_flexBasisPercent:1,layout_wrapBefore:true}});\n  \/\/ ② 当前频道状态行(动态文本,纯文本不带外层引号)\n  out.push({title:'当前频道',type:'button',action:\"java.toast('当前频道:'+(java.get('xcChannel')||'男频'))\",\n    viewName:\"'当前频道:'+(java.get('xcChannel')||'男频')\",\n    style:{layout_flexBasisPercent:1,layout_wrapBefore:true}});\n  \/\/ ③ 榜单(book\/rankList 实测:男\/女各 人气\/收藏\/字数;rankBookList POST + {{page}} 原生翻页)\n  for(var i=0;i<RKS.length;i++){\n    \/\/ ★ 男频字数榜(rankType=3)站点 current=1 返回 data:[] 空壳,数据从 current=2 起\n    \/\/   (抓包 17 条 rankBookList 从无 rankType=3;对照 current=1 空 \/ 2 有2本 \/ 3 有10本 \/ 4 有1本)。\n    \/\/   换 appname\/pageSize\/完整设备参数均无效 ⇒ 站点数据缺陷,用页码偏移 +1 让首屏落到有数据的页。\n    \/\/   其它 5 个榜单 current=1 均有数据,保持 {{page}};女频字数榜 current=1 也有数据。\n    var pgExpr=(pd===1 && RKS[i][0]===3)?'{{(function(){return (Number(page)||1)+1})()}}':'{{page}}';\n    out.push({title:mark+RKS[i][1],\n      url:B+'\/api\/rankBookList?current='+pgExpr+'&pindao='+pd+'&rankType='+RKS[i][0]+'&pageSize=30,'+OPT,\n      style:{layout_flexBasisPercent:0.33,layout_flexGrow:0}});\n  }\n  \/\/ ④ 精品栏目(columnContent 该频道栏目,@js 摊平 3 个 dataList;站点一次返回全部,不带 {{page}})\n  out.push({title:'✨ '+c.colName+'·精品书单',\n    url:B+'\/api\/boutique\/columnContent?columnId='+c.colId+','+OPT,\n    style:{layout_flexBasisPercent:1,layout_wrapBefore:true}});\n  \/\/ ⑤ 该频道 3 个真实书单(xmbdName 取自抓包 columnContent 的 data[].xmbdName;current=2 空=不分页)\n  for(var k=0;k<c.lists.length;k++){\n    out.push({title:'📚 '+c.lists[k][1],\n      url:B+'\/api\/xmbd\/bookList?xmbdId='+c.lists[k][0]+'&current=1,'+OPT,\n      style:{layout_flexBasisPercent:0.33,layout_flexGrow:0}});\n  }\n  \/\/ ⑥ 该频道分类(search\/lib GET + {{page}};分类名取自抓包 allCategorys)\n  for(var j=0;j<CATS.length;j++){\n    out.push({title:mark+CATS[j][1],\n      url:B+'\/api\/search\/lib?s='+CATS[j][0]+'&pageNo={{page}}&pageSize=30',\n      style:{layout_flexBasisPercent:0.33,layout_flexGrow:0}});\n  }\n  return JSON.stringify(out);\n})()\n",
    "header": "{\"User-Agent\": \"okhttp\/4.9.2\"}",
    "jsLib": "function XC_ok(v){\n  var s='';try{s=String(v)}catch(e){return ''}\n  if(!s||s==='null'||s==='undefined')return '';\n  if(s.indexOf('http')!==0)s='https:\/\/'+s;\n  var m=\/^(https?:\\\/\\\/[^\\\/]+)\/.exec(s);return m?m[1]:'';\n}\nfunction XC_base(){\n  var d='';\n  try{d=XC_ok(source.get('xcLine'))}catch(e0){}\n  if(!d){try{var v=String(this.source.getVariable()||'');var o=v?(JSON.parse(v)||{}):{};d=XC_ok(o.xcLine)}catch(e1){}}\n  if(!d){try{d=XC_ok(java.get('xcLine'))}catch(e2){}}\n  if(!d){try{d=XC_ok(cache.get('xcLine'))}catch(e3){}}\n  if(!d){try{d=XC_ok(java.get('xcLine'))}catch(e4){}}\n  if(!d)d='https:\/\/quickapi.biduwenxue.com';\n  return d;\n}\nfunction XC_cover(c){\n  c=String(c||'');\n  if(!c||c==='null'||c==='undefined')return '';\n  if(c.indexOf('http')===0)return c;\n  return 'https:\/\/biduwenxue-img.oss-cn-beijing.aliyuncs.com\/'+c.replace(\/^\\\/+\/, '');\n}\nfunction XC_arr(){return new Packages.java.util.ArrayList()}\n",
    "lastUpdateTime": "1794548470379",
    "loginUi": "[{\"name\": \"发布页\", \"type\": \"text\", \"viewName\": \"'网址发布页地址'\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}, {\"name\": \"应用发布页\", \"type\": \"button\", \"action\": \"XC_pubFrom(result)\", \"viewName\": \"'💾 应用发布页地址'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"获取路线\", \"type\": \"button\", \"action\": \"XC_fetchPub()\", \"viewName\": \"'🧭 一键从发布页获取网址路线'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"测试延时\", \"type\": \"button\", \"action\": \"XC_testAll()\", \"viewName\": \"'⏱ 测试延时(ms写入各网址按钮)'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"检查登录状态\", \"type\": \"button\", \"action\": \"XC_checkLogin()\", \"viewName\": \"'🔍 检查登录状态\/线路可用性'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"当前线路\", \"type\": \"label\", \"viewName\": \"XC_curLineText()\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}, {\"name\": \"网址列表\", \"type\": \"button\", \"action\": \"\", \"viewName\": \"'━━━ 点击切换网址(延时见按钮名)━━━'\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}, {\"name\": \"网址1\", \"type\": \"button\", \"action\": \"XC_switch(1)\", \"viewName\": \"XC_lineBtn(1)\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"网址2\", \"type\": \"button\", \"action\": \"XC_switch(2)\", \"viewName\": \"XC_lineBtn(2)\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"网址3\", \"type\": \"button\", \"action\": \"XC_switch(3)\", \"viewName\": \"XC_lineBtn(3)\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"网址4\", \"type\": \"button\", \"action\": \"XC_switch(4)\", \"viewName\": \"XC_lineBtn(4)\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"网址5\", \"type\": \"button\", \"action\": \"XC_switch(5)\", \"viewName\": \"XC_lineBtn(5)\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"网址6\", \"type\": \"button\", \"action\": \"XC_switch(6)\", \"viewName\": \"XC_lineBtn(6)\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"显示线路\", \"type\": \"button\", \"action\": \"XC_showLines()\", \"viewName\": \"'📋 显示当前全部线路'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"恢复默认\", \"type\": \"button\", \"action\": \"XC_reset()\", \"viewName\": \"'↩ 恢复默认线路'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"打开发布页\", \"type\": \"button\", \"action\": \"XC_web()\", \"viewName\": \"'🌐 打开网址发布页'\", \"style\": {\"layout_flexBasisPercent\": 0.48, \"layout_flexGrow\": 1}}, {\"name\": \"说明\", \"type\": \"label\", \"viewName\": \"'ℹ 星辰小说:游客免登会员,无需登录;本面板仅用于线路运维'\", \"style\": {\"layout_flexBasisPercent\": 1, \"layout_wrapBefore\": true}}]",
    "loginUrl": "\/\/ ============ 星辰小说 · 发布页\/线路运维面板 ============\n\/\/ APK Url.BASE_URL 固定 https:\/\/quickapi.biduwenxue.com;版本配置发布页\n\/\/ https:\/\/imgcdn.biduwenxue.com\/apk\/server_lm.txt 内含 apiAddress\/h5Address 备用线路。\n\/\/ 本站游客自动注册(registerOrLogin\/user)即「免登会员」,无需账号密码登录;\n\/\/ 故无登录框,但按需求提供完整发布页\/线路运维面板 + 检查登录状态按钮。\n\/\/ 各按钮各阶段 Toast:开始 → 过程 → 结果\/失败。\n\/\/ 兼容 LT + legado-E:V1 静态 loginUi;viewName 动态文本只读 source(无 java 绑定);\n\/\/ action 由 SourceLoginDialog 拼 \"$loginJS\\n$action\" 后 eval,本文件函数全部可见。\nvar XC_MAX=6;\nvar XC_PUB_DEFAULT='https:\/\/imgcdn.biduwenxue.com\/apk\/server_lm.txt';\nvar XC_LINE_DEFAULT='https:\/\/quickapi.biduwenxue.com';\nvar XC_UA='okhttp\/4.9.2';\nvar XC_FALLBACK=[\n 'https:\/\/quickapi.biduwenxue.com','http:\/\/quickapi.biduwenxue.com',\n 'https:\/\/m.biduwenxue.com','https:\/\/imgcdn.biduwenxue.com',\n 'https:\/\/biduwenxue-img.oss-cn-beijing.aliyuncs.com'];\nfunction XC_toast(t){try{java.longToast(String(t))}catch(e){try{java.toast(String(t))}catch(e2){}}}\nfunction XC_gv(k,d){var v='';try{v=String(source.get(k))}catch(e){v=''}\n  if(v===''||v==='null'||v==='undefined')v=d||'';return v}\nfunction XC_norm(u){var s=String(u||'').trim().replace(\/\\\/+$\/,'');\n  if(s==='')return '';if(s.indexOf('http')!==0)s='https:\/\/'+s;\n  var m=\/^(https?:\\\/\\\/[^\\\/]+)\/.exec(s);return m?m[1]:''}\nfunction XC_host(u){var m=\/^https?:\\\/\\\/([^\\\/]+)\/.exec(String(u));return m?m[1]:String(u)}\nfunction XC_hdr(){return JSON.stringify({'User-Agent':XC_UA})}\nfunction XC_pub(){return XC_gv('xcPub',XC_PUB_DEFAULT)}\nfunction XC_line(){var d=XC_norm(XC_gv('xcLine',XC_LINE_DEFAULT));return d.indexOf('http')===0?d:XC_LINE_DEFAULT}\nfunction XC_writeLine(L){\n  L=XC_norm(L)||XC_LINE_DEFAULT;\n  try{source.put('xcLine',L)}catch(e0){}\n  try{var o={},v=String(source.getVariable()||'');try{o=v?(JSON.parse(v)||{}):{}}catch(e1){o={}}\n      o.xcLine=L;source.setVariable(JSON.stringify(o))}catch(e2){}\n  try{java.put('xcLine',L)}catch(e3){}\n  try{cache.put('xcLine',L)}catch(e4){}\n  return L;\n}\nfunction XC_setFound(list){var out=[],i,u;\n  for(i=0;i<list.length&&out.length<XC_MAX;i++){u=XC_norm(list[i]);if(u&&out.indexOf(u)<0)out.push(u)}\n  if(!out.length)out=XC_FALLBACK.slice(0);\n  source.put('xcFound',out.join(' '));\n  for(i=0;i<XC_MAX;i++)source.put('xcDelay'+i,'');\n  return out;}\nfunction XC_found(){var s=XC_gv('xcFound','');if(!s)return XC_setFound(XC_FALLBACK);\n  var a=s.split(\/\\s+\/),out=[],i;\n  for(i=0;i<a.length&&out.length<XC_MAX;i++){var u=XC_norm(a[i]);if(u&&out.indexOf(u)<0)out.push(u)}\n  return out.length?out:XC_setFound(XC_FALLBACK);}\nfunction XC_pubFrom(r){\n  XC_toast('💾 正在保存发布页地址…');\n  var v='';\n  try{if(r&&r.get)v=String(r.get('发布页')||'')}catch(e0){}\n  if(!v){try{v=String(r['发布页']||'')}catch(eA){}}\n  if(!v){try{if(result&&result.get)v=String(result.get('发布页')||'')}catch(e1){}}\n  if(!v){try{v=String(result['发布页']||'')}catch(eB){}}\n  if(!v||!v.trim())v=XC_PUB_DEFAULT;\n  var p=XC_norm(v);source.put('xcPub',p);\n  XC_toast('✅ 发布页已设为:'+p+'\\n点「🧭 一键从发布页获取网址路线」生效');\n  XC_refresh();}\nfunction XC_fetchPub(){\n  var pub=XC_pub(),url=pub+'\/apk\/server_lm.txt';\n  XC_toast('🧭 开始获取:正在打开发布页 '+XC_host(pub));\n  var raw='',err='';\n  try{raw=String(java.ajax(url+',{\"headers\":{\"User-Agent\":\"'+XC_UA+'\"},\"timeout\":10000}'))}catch(e){err=String(e).substring(0,90)}\n  if(!err&&(raw.length<20||raw.indexOf('Exception')===0||raw.indexOf('timeout')>-1))err='发布页内容异常';\n  if(err!==''){\n    XC_toast('⚠ 发布页抓取失败('+err+'),载入内置 '+XC_FALLBACK.length+' 条兜底线路');\n    XC_setFound(XC_FALLBACK);XC_toast('✅ 已载入内置线路;点「⏱ 测试延时」测速');XC_refresh();return;}\n  XC_toast('🔓 发布页已获取('+raw.length+'B),正在解析线路…');\n  var lines=[],i,u,m,re=\/https?:\\\/\\\/([a-z0-9][a-z0-9.\\-]*\\.[a-z]{2,}(?::[0-9]+)?)\/gi;\n  while((m=re.exec(raw))!==null){u=XC_norm(m[0]);\n    var hn=XC_host(u);\n    \/\/ 只收本站家族域名;排除阿里云\/统计\/第三方 API 等非站点线路\n    if(hn.indexOf('biduwenxue')<0)continue;\n    if(u&&lines.indexOf(u)<0)lines.push(u)}\n  var cur=XC_line();if(lines.indexOf(cur)<0)lines.unshift(cur);\n  for(i=0;i<XC_FALLBACK.length&&lines.length<XC_MAX;i++)if(lines.indexOf(XC_FALLBACK[i])<0)lines.push(XC_FALLBACK[i]);\n  var got=XC_setFound(lines);try{XC_writeLine(XC_line())}catch(eW){}\n  XC_toast('✅ 共获取 '+got.length+' 条路线:\\n'+got.map(XC_host).join('\\n'));\n  XC_toast('已写入各网址按钮;点「⏱ 测试延时」把 ms 写进按钮名');XC_refresh();}\nfunction XC_probe(u){var h=XC_host(u),p='';\n  if(h.indexOf('quickapi')>-1)p='\/api\/book\/info?bookId=207376';\n  else if(h.indexOf('imgcdn')>-1)p='\/apk\/server_lm.txt';\n  else if(h.indexOf('oss-cn')>-1)p='\/pic\/book\/taoxiaoshuo\/207376.jpg?x-oss-process=image\/resize,w_90\/format,webp';\n  else if(h.indexOf('m.biduwenxue')>-1)p='\/api\/m\/2022-11-1\/privacy_app.html';\n  else p='\/';\n  return u+p+',{\"headers\":{\"User-Agent\":\"'+XC_UA+'\"},\"timeout\":8000}';}\nfunction XC_testAll(){\n  var list=XC_found();\n  XC_toast('⏱ 开始测速:共 '+list.length+' 条线路,逐个请求真实业务路径(绝不测搜索)…');\n  var i,t0,b,ms,tag,best=-1,bestMs=999999;\n  for(i=0;i<list.length;i++){ms=-1;tag='✗ 不可达';t0=Date.now();\n    try{b=String(java.ajax(XC_probe(list[i])));\n      \/\/ 本站特征:quickapi 系须 code:0;imgcdn 系须 server_lm.txt 的 androidVersion;\n      \/\/ oss 图床系返回二进制(长度>1000);m 系隐私页须含 html 标签。绝不按纯长度放行第三方域。\n      var hn=XC_host(list[i]);\n      var ok=false;\n      if(hn.indexOf('quickapi')>-1)ok=b.indexOf('\"code\":0')>-1;\n      else if(hn.indexOf('imgcdn')>-1)ok=b.indexOf('androidVersion')>-1||b.indexOf('apiAddress')>-1;\n      else if(hn.indexOf('oss-cn')>-1)ok=b.length>1000;\n      else ok=(b.indexOf('<html')>-1||b.indexOf('<!DOCTYPE')>-1)&&b.length>500;\n      var bad=b.indexOf('Exception')>-1||b.indexOf('timeout')>-1||b.indexOf('Request method')>-1;\n      if(bad)tag='✗ 异常';\n      else if(ok){ms=Date.now()-t0;tag=ms+'ms';if(ms<bestMs){bestMs=ms;best=i}}\n      else tag='✗ 内容异常('+b.length+'B)';\n    }catch(e){tag='✗ '+String(e).substring(0,28)}\n    source.put('xcDelay'+i,tag);\n    XC_toast('  ['+(i+1)+'\/'+list.length+'] '+XC_host(list[i])+' → '+tag);}\n  if(best>=0){source.put('xcDelay'+best,'⚡'+bestMs+'ms');\n    XC_toast('🏁 测速完成:最快 '+XC_host(list[best])+' '+bestMs+'ms(点对应网址按钮切换)')}\n  else XC_toast('⚠ 测速完成:暂无可用线路,请先「🧭 一键从发布页获取网址路线」');\n  XC_refresh();}\nfunction XC_checkLogin(){\n  var d=XC_line();XC_toast('🔍 正在检查当前线路:'+XC_host(d));\n  var b='',code=0;\n  try{var r=java.connect(d+'\/api\/book\/info?bookId=207376',XC_hdr(),15000);\n      b=String(r.body());try{code=r.code?r.code():0}catch(eC){code=0}}\n  catch(e){XC_toast('❌ 检查失败:'+String(e).substring(0,90));return}\n  if(b.indexOf('Exception')>-1||(code&&(code<200||code>=400))||b.indexOf('\"code\":0')<0){\n    XC_toast('❌ 当前线路不可用('+(code?('HTTP '+code):'无有效数据')+'),建议测速后切换线路');return}\n  XC_toast('✅ 游客态可用(免登会员,无需登录)|线路 '+XC_host(d)+' 正常返回 code:0|本书源不依赖登录');}\nfunction XC_curLineText(){var l=XC_line(),dl='';\n  try{dl=XC_gv('xcDelay'+XC_found().indexOf(l),'')}catch(e){}\n  return '📍 当前线路:'+XC_host(l)+(dl?'('+dl+')':'')+'|点下方网址按钮切换';}\nfunction XC_lineBtn(n){var list=XC_found(),i=Number(n)-1;\n  if(i<0||i>=list.length)return '━━ 网址'+n+' 未获取 ━━';\n  var cur=XC_line(),mark=(list[i]===cur)?'▶ ':'  ';\n  var dl=XC_gv('xcDelay'+i,'');if(dl)mark+=dl+' ';\n  return mark+XC_host(list[i]);}\nfunction XC_switch(n){var list=XC_found(),i=Number(n)-1;\n  if(i<0||i>=list.length){XC_toast('⚠ 网址 '+n+' 尚未获取,请先点「🧭 一键从发布页获取网址路线」');return}\n  var old=XC_line(),nw=list[i];XC_toast('🔄 正在切换到 '+XC_host(nw)+' …');\n  XC_writeLine(nw);XC_toast('✅ 已切换:'+XC_host(old)+' → '+XC_host(nw));\n  XC_toast('📍 搜索\/发现\/详情\/目录\/正文全部跟随新线路;请下拉刷新发现页');XC_refresh();}\nfunction XC_reset(){XC_toast('↩ 正在恢复默认线路…');XC_writeLine(XC_LINE_DEFAULT);\n  XC_toast('✅ 已恢复默认:'+XC_LINE_DEFAULT);XC_refresh();}\nfunction XC_showLines(){XC_toast('📋 当前全部路线('+XC_found().length+'):\\n'+XC_found().map(XC_host).join('\\n'))}\nfunction XC_web(){var p=XC_pub();try{java.startBrowser(p+'\/apk\/server_lm.txt',p);XC_toast('🌐 已打开发布页 '+XC_host(p))}\n  catch(e){XC_toast('❌ 打开发布页失败:'+String(e).substring(0,60))}}\nfunction XC_refresh(){var ok=false;\n  try{java.reLoginView();ok=true}catch(e){try{java.reLoginView(false);ok=true}catch(e2){ok=false}}\n  if(!ok)XC_toast('ℹ 按钮文字可能未即时刷新:重新打开本面板即可看到 ▶ 标记与延时');}\nfunction login(e){if(e!=undefined){XC_toast(String(e));return}\n  XC_toast('✅ 星辰小说书源:游客免登(免登会员),无需账号密码');\n  XC_toast('📍 当前线路 '+XC_host(XC_line())+'|发布页 '+XC_pub());}\n",
    "respondTime": 180000,
    "ruleBookInfo": {
        "author": "$.author",
        "coverUrl": "$.coverUrl",
        "init": "@js:\n(function(){\nvar XB='';try{XB=XC_base()}catch(eB){}\nif(!XB){try{XB=XC_ok(source.get('xcLine'))}catch(eB2){}}\nif(!XB)XB='https:\/\/quickapi.biduwenxue.com';\nfunction CV(c){c=String(c||'');if(!c||c==='null'||c==='undefined')return '';\n  if(c.indexOf('http')===0)return c;\n  return 'https:\/\/biduwenxue-img.oss-cn-beijing.aliyuncs.com\/'+c.replace(\/^\\\/+\/, '');}\nvar o={};try{o=JSON.parse(String(result||''))}catch(e){o={}}\nvar d=o.data||{}, b=d.book||o.book||d, a=d.author||{}, c=d.category||{};\nvar bid=b.id||'';\nreturn JSON.stringify({\n  name:String(b.title||''),\n  author:String(a.nickname||b.authorName||''),\n  coverUrl:CV(b.cover),\n  intro:'<br>\\n📂 分类:'+String(c.name||b.categoryName||'')+'\\n🎗 标签:'+String(b.keywords||'')\n        +'\\n📖 字数:'+String(b.wordCount||'')+'\\n🕰 更新:'+String(b.updateTime||'')\n        +'\\n📝 简介:\\n'+String(b.intro||'').replace(\/\\r\/g,''),\n  kind:String(c.name||'')+'\\n'+(String(b.completionStatus)==='NORMAL'?'完结':'连载')+'\\n评分 '+String(b.bookGrade||''),\n  wordCount:String(b.wordCount||''),\n  lastChapter:String(b.lastChapterTitle||''),\n  tocUrl:XB+'\/api\/book\/chapters?bookId='+bid+'&pageNum=1&pageSize=100000'\n});\n})()",
        "intro": "$.intro",
        "kind": "$.kind",
        "lastChapter": "$.lastChapter",
        "name": "$.name",
        "tocUrl": "$.tocUrl",
        "wordCount": "$.wordCount"
    },
    "ruleContent": {
        "content": "$.data.content"
    },
    "ruleExplore": {
        "author": "$.author",
        "bookList": "@js:\n(function(){\nvar XB='';try{XB=XC_base()}catch(eB){}\nif(!XB){try{XB=XC_ok(source.get('xcLine'))}catch(eB2){}}\nif(!XB)XB='https:\/\/quickapi.biduwenxue.com';\nfunction CV(c){c=String(c||'');if(!c||c==='null'||c==='undefined')return '';\n  if(c.indexOf('http')===0)return c;\n  return 'https:\/\/biduwenxue-img.oss-cn-beijing.aliyuncs.com\/'+c.replace(\/^\\\/+\/, '');}\nvar o={};try{o=JSON.parse(String(result||''))}catch(e){o={}}\nvar d=o.data, arr=[], i, j;\nif(d && typeof d.length==='number' && d.length>0){\n  if(d.length && d[0] && d[0].dataList){          \/\/ 精品 columnContent:摊平各栏目 dataList\n    for(i=0;i<d.length;i++){var dl=d[i].dataList||[];for(j=0;j<dl.length;j++)arr.push(dl[j])}\n  }else arr=d;                                    \/\/ 榜单 rankBookList\n}else if(d && d.pageList && d.pageList.length){arr=d.pageList}  \/\/ 分类 search\/lib\nelse if(d && d.pageList){arr=d.pageList}\nelse if(o.pageList){arr=o.pageList}\nvar out=new Packages.java.util.ArrayList();\nfor(i=0;i<arr.length;i++){\n  var b=arr[i]||{};if(!b)continue;\n  var bid=b.id||b.bookId;if(!bid)continue;\n  var cn=b.categoryname||b.categoryName||'';\n  var wc=b.wordcount||b.wordCount||'';\n  var au=b.authorname||b.authorName||b.author||'';\n  var gr=b.bookGrade||'';\n  var ch=b.channelid||b.channelId||'';\n  out.add(JSON.stringify({\n    bookUrl: XB+'\/api\/book\/info?bookId='+bid,\n    name: String(b.title||''),\n    author: String(au),\n    coverUrl: CV(b.cover),\n    intro: String(b.intro||'').replace(\/\\r\/g,''),\n    kind: String(cn)+(ch?('\\n'+(String(ch)==='1'?'男频':'女频')):'')+(gr?('\\n评分 '+gr):''),\n    wordCount: String(wc)\n  }));\n}\nreturn out;\n})()",
        "bookUrl": "$.bookUrl",
        "coverUrl": "$.coverUrl",
        "intro": "$.intro",
        "kind": "$.kind",
        "name": "$.name",
        "wordCount": "$.wordCount"
    },
    "ruleSearch": {
        "author": "$.author",
        "bookList": "@js:\n(function(){\nvar XB='';try{XB=XC_base()}catch(eB){}\nif(!XB){try{XB=XC_ok(source.get('xcLine'))}catch(eB2){}}\nif(!XB)XB='https:\/\/quickapi.biduwenxue.com';\nfunction CV(c){c=String(c||'');if(!c||c==='null'||c==='undefined')return '';\n  if(c.indexOf('http')===0)return c;\n  return 'https:\/\/biduwenxue-img.oss-cn-beijing.aliyuncs.com\/'+c.replace(\/^\\\/+\/, '');}\nvar o={};try{o=JSON.parse(String(result||''))}catch(e){o={}}\nvar d=o.data, arr=[], i, j;\nif(d && typeof d.length==='number' && d.length>0){\n  if(d.length && d[0] && d[0].dataList){          \/\/ 精品 columnContent:摊平各栏目 dataList\n    for(i=0;i<d.length;i++){var dl=d[i].dataList||[];for(j=0;j<dl.length;j++)arr.push(dl[j])}\n  }else arr=d;                                    \/\/ 榜单 rankBookList\n}else if(d && d.pageList && d.pageList.length){arr=d.pageList}  \/\/ 分类 search\/lib\nelse if(d && d.pageList){arr=d.pageList}\nelse if(o.pageList){arr=o.pageList}\nvar out=new Packages.java.util.ArrayList();\nfor(i=0;i<arr.length;i++){\n  var b=arr[i]||{};if(!b)continue;\n  var bid=b.id||b.bookId;if(!bid)continue;\n  var cn=b.categoryname||b.categoryName||'';\n  var wc=b.wordcount||b.wordCount||'';\n  var au=b.authorname||b.authorName||b.author||'';\n  var gr=b.bookGrade||'';\n  var ch=b.channelid||b.channelId||'';\n  out.add(JSON.stringify({\n    bookUrl: XB+'\/api\/book\/info?bookId='+bid,\n    name: String(b.title||''),\n    author: String(au),\n    coverUrl: CV(b.cover),\n    intro: String(b.intro||'').replace(\/\\r\/g,''),\n    kind: String(cn)+(ch?('\\n'+(String(ch)==='1'?'男频':'女频')):'')+(gr?('\\n评分 '+gr):''),\n    wordCount: String(wc)\n  }));\n}\nreturn out;\n})()",
        "bookUrl": "$.bookUrl",
        "coverUrl": "$.coverUrl",
        "intro": "$.intro",
        "kind": "$.kind",
        "name": "$.name",
        "wordCount": "$.wordCount"
    },
    "ruleToc": {
        "chapterList": "@js:\n(function(){\nvar XB='';try{XB=XC_base()}catch(eB){}\nif(!XB){try{XB=XC_ok(source.get('xcLine'))}catch(eB2){}}\nif(!XB)XB='https:\/\/quickapi.biduwenxue.com';\nvar o={};try{o=JSON.parse(String(result||''))}catch(e){o={}}\nvar d=o.data||{}, pu=d.pageUtil||{}, a=pu.pageList||d.pageList||((d&&typeof d.length==='number')?d:[]);\nvar opt=JSON.stringify({method:'POST',body:'x=1',headers:{'Content-Type':'application\/x-www-form-urlencoded'}});\nvar out=new Packages.java.util.ArrayList();\nfor(var i=0;i<a.length;i++){var c=a[i]||{};if(!c||!c.id)continue;\n  out.add(JSON.stringify({\n    name:String(c.title||''),\n    url:XB+'\/api\/chapter\/info?bookId='+String(c.bookId||'')+'&chapterId='+String(c.id)+','+opt,\n    updateTime:String(c.wordCount||'')+' 字 · '+String(c.publishTime||'')\n  }));}\nreturn out;\n})()",
        "chapterName": "$.name",
        "chapterUrl": "$.url",
        "updateTime": "$.updateTime"
    },
    "searchUrl": "@js:\n(function(){\nvar XB='';try{XB=XC_base()}catch(eB){}\nif(!XB){try{XB=XC_ok(source.get('xcLine'))}catch(eB2){}}\nif(!XB)XB='https:\/\/quickapi.biduwenxue.com';\nfunction CV(c){c=String(c||'');if(!c||c==='null'||c==='undefined')return '';\n  if(c.indexOf('http')===0)return c;\n  return 'https:\/\/biduwenxue-img.oss-cn-beijing.aliyuncs.com\/'+c.replace(\/^\\\/+\/, '');}\nreturn XB+'\/api\/search?keywords='+java.encodeURI(key)+'&pageNo='+page+'&pageSize=30,'+\n  JSON.stringify({method:'POST',body:'x=1',headers:{'Content-Type':'application\/x-www-form-urlencoded'}});\n})()",
    "weight": 0
}
广告