gedoor / legado

Legado 3.0 Book Reader with powerful controls & full functions❤️阅读3.0, 阅读是一款可以自定义来源阅读网络内容的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
GNU General Public License v3.0
25.64k stars 3.58k forks source link

搜索重定向的源,在翻页后java.get获取的值为空 #3975

Open restia-est opened 3 weeks ago

restia-est commented 3 weeks ago

确认 / Assignments

问题描述 / Describe Bugs

搜索重定向的源,在第一页用java.put存了变量后,翻页时用java.get获取的值为空,是我写法有问题还是其他原因?

搜索的写法

@js:
(()=>{
 java.log(page)
 if(page==1){
    let url = source.key + "/e/search/index.php";
    let body = `show=title&keyboard=${key}`;
    let surl = java.post(url,body,{}).header("Location");
    java.put('surl',surl)
    return surl
  } else {
    let surl = String(java.get('surl')).replace(/0\.html$/,`${page - 1}.html`)
    java.log("surl"+surl)
    return surl
  }
})()

{
  "bookSourceComment": "",
  "bookSourceGroup": "",
  "bookSourceName": "🛸久久小说",
  "bookSourceType": 0,
  "bookSourceUrl": "https://www.jjjjxs.com",
  "bookUrlPattern": "https://www.jjjjxs.com/txt/\\d+.htm",
  "concurrentRate": "",
  "customOrder": -115,
  "enabled": true,
  "enabledCookieJar": false,
  "enabledExplore": true,
  "exploreUrl": "女生::/e/action/toplist.php?page={{page-1}}&class=1\n男生::/e/action/toplist.php?page={{page-1}}&class=2\n耽美::/e/action/toplist.php?page={{page-1}}&class=3\n穿越小说::https://www.ijjjxs.com/txt/Chuanyue/index_{{page}}.html\n重生小说::https://www.ijjjxs.com/txt/chongshengxiaoshuo/index_{{page}}.html\n历史架空::https://www.ijjjxs.com/txt/Lsjs/index_{{page}}.html\n总裁豪门::https://www.ijjjxs.com/txt/Qinggan/index_{{page}}.html\n现代言情::https://www.ijjjxs.com/txt/Young/index_{{page}}.html\n仙侠幻想::https://www.ijjjxs.com/txt/Wuxia/index_{{page}}.html\n同人小说::https://www.ijjjxs.com/txt/tongrenxiaoshuo/index_{{page}}.html\n耽美小说::https://www.ijjjxs.com/txt/dmtr/index_{{page}}.html\n玄幻小说::https://www.ijjjxs.com/txt/Xuanhuan/index_{{page}}.html\n都市异能::https://www.ijjjxs.com/txt/dushi/index_{{page}}.html\n铁血军旅::https://www.ijjjxs.com/txt/tiexue/index_{{page}}.html\n惊悚悬疑::https://www.ijjjxs.com/txt/Kongbu/index_{{page}}.html",
  "header": "",
  "lastUpdateTime": 1717601601977,
  "loginCheckJs": "",
  "loginUi": "",
  "loginUrl": "",
  "respondTime": 2227,
  "ruleBookInfo": {
    "author": "class.zuozhe@tag.a.0@text",
    "coverUrl": "class.img@tag.img.0@src##\\?.*",
    "intro": "id.mainSoftIntro@textNodes##\\s{2}?\\W?文案",
    "name": "id.downInfoArea@tag.h1.0@text##《|》",
    "tocUrl": "class.yuedu.0@tag.a.0@href##1\\.html|(?<=read)/\\d+"
  },
  "ruleContent": {
    "content": "id.view_content_txt@tag.p@html",
    "imageStyle": "0"
  },
  "ruleExplore": {
    "author": ".mainGreen@text||.main@tag.span.-4@text##.*?作者:| .*",
    "bookList": "id.catalog@children",
    "bookUrl": "tag.a.0@href",
    "coverUrl": "tag.a.0@img@src",
    "intro": "tag.div.0@text",
    "kind": ".mainGreen@text&&.newDate@text&&.oldDate@text&&.main@tag.span.-2@text&&.classname@text##.*?写作进度:|(?:文件|书籍)?(?:大小|类别):|\\[|发布于|\\]| \\d+:.*",
    "name": "class.title@a@text"
  },
  "ruleReview": {},
  "ruleSearch": {
    "author": "tag.a@text##.*作者:",
    "bookList": "class.searchTopic",
    "bookUrl": "tag.a@href",
    "name": "tag.a@text"
  },
  "ruleToc": {
    "chapterList": "class.view_content@class.view_content_list@tag.li@tag.a",
    "chapterName": "text",
    "chapterUrl": "href"
  },
  "searchUrl": "@js:\n(()=>{\n\tjava.log(page)\n\tif(page==1){\n\t\tlet url = source.key + \"/e/search/index.php\";\n\t\tlet body = `show=title&keyboard=${key}`;\n\t\tlet surl = java.post(url,body,{}).header(\"Location\");\n  \tjava.put('surl',surl)\n  \treturn surl\n  } else {\n  \tlet surl = String(java.get('surl')).replace(/0\\.html$/,`${page - 1}.html`)\n  \tjava.log(\"surl\"+surl)\n  \treturn surl\n  }\n})()",
  "weight": 0
}

复现步骤 / How to reproduce

确认 / Assignment

其他信息 / Additions

Screenshot_2024-06-05-23-33-01-12_e2ba09773e1c9b06fd122062837b0a0a

日志提交 / Relevant log output

No response

阅读版本 / Legado version

3.24.060207

Android版本 / Android version

Android 14

机型 / Model

一加12

821938089 commented 3 weeks ago

我看了下源码实现,发现搜索使用java.put存的变量在搜索这里不是持久的保存,只在一次搜索过程中可以跨规则使用,下一次搜索就会丢失,不太清楚是不是bug

解决方法是用source.put 或 cache.put