[{"bookSourceComment":"书源说明：\n- 本书源基于Cloudflare Workers提供服务\n- 书源需输入密钥才可使用，每日限额500次\n- 为了防止滥用，同一个 IP 地址 24 小时内只能申请一次 API Token。","bookSourceGroup":"木里阅读","bookSourceName":"木里阅读公益版03.28[🍅番茄纯阅]","bookSourceType":0,"bookSourceUrl":"https:\/\/fqnovels.indevs.in\/","customButton":false,"customOrder":-1,"enabled":true,"enabledCookieJar":true,"enabledExplore":true,"eventListener":false,"exploreUrl":"@js:\n\nlet sort = [];\npush = (title, url, type) => sort.push({\n    title: title,\n    url: url,\n    style: {\n        layout_flexBasisPercent: type\n    }\n});\n    push('番茄书架', 'https:\/\/fanqienovel.com\/reading\/bookapi\/bookshelf\/info\/v:version\/?aid=1967&iid=0&version_code=56910&update_version_code=56910', 1);\n    push('巅峰榜单', 'https:\/\/fanqienovel.com\/api\/author\/misc\/top_book_list\/v1\/?limit=100&offset=0', 0.29);\n    push('出版榜单', 'https:\/\/fanqienovel.com\/api\/node\/publication\/list?page_index=0&page_count=100', 0.29);\n    push('爆更榜单', 'https:\/\/api-lf.fanqiesdk.com\/api\/novel\/channel\/homepage\/rank\/rank_list\/v2\/?aid=13&limit=50&offset=0&side_type=15&type=1', 0.29);\n    push('黑马榜单', 'https:\/\/api-lf.fanqiesdk.com\/api\/novel\/channel\/homepage\/rank\/rank_list\/v2\/?aid=13&limit=50&offset=0&side_type=13&type=1', 0.29);\n    push('热搜榜单', 'https:\/\/api-lf.fanqiesdk.com\/api\/novel\/channel\/homepage\/rank\/rank_list\/v2\/?aid=13&limit=50&offset=&side_type=12&type=1', 0.29);\t\n    push('每周推荐', 'https:\/\/fanqienovel.com\/api\/rank\/recommend\/list?type=1&limit=10&offset=0', 0.29);\t\n\t\n\tA=[[\"推荐\",\"10\"],[\"完结\",\"11\"],[\"热搜\",\"12\"]]\t;\n[[\"男频\",\"1\"],[\"女频\",\"0\"]].map([title,id]=>{\n\tpush('❤️'+title+'榜单❤️', null, 1);\n\tif(id==2){ \tA=A.slice(1,A.length-1) }\n\t\tA.map([title,uri]=>{\t\t\t\n\t\t  \turl= `https:\/\/novel.snssdk.com\/api\/novel\/channel\/homepage\/rank\/rank_list\/v2\/?aid=13&app_name=news_article&app_version=9.7.3&channel=tengxun_tt&device_platform=android&os=android&device_type=ProjectTitan&os_api=29&os_version=10&openlive_plugin_status=1&isTTWebViewHeifSupport=0&limit=100&offset={{(page-1)*100}}&side_type=${uri}&type=${id}`;\n\t\t\t\tpush(title, url, 0.29);\t\t\t\n\t\t\t});\n\t});\t\n\t\n\tcategory = () =>{\n\t\t\tcategory_url = \"https:\/\/novel.snssdk.com\/api\/novel\/channel\/homepage\/new_category\/page\/data\/v1\/?aid=13\";\nreturn  JSON.parse(java.ajax(category_url)).data\t\t\n\t\t}\n\t\t  \n  json = (data) => {\n     boy = data.boy_category;\n     girl = data.girl_category;\n     publish = data.publish_category;\n     json = [[\"男频\",\"gender=1\",boy],[\"女频\",\"gender=0\",girl],[\"出版\",\"genre_type=160\",publish]];\n     return JSON.parse(JSON.stringify(json));\n   }\t\n\t\tjson(category()).map([tit1,gender,category]=>{\n\t    push('❤️'+tit1+'❤️', null, 1);\n     category.map(($,index)=>{\n     \tindex++;\n\t    title = $.category_name;\n     \tcid = $.category_id;\n\t    url=  `https:\/\/novel.snssdk.com\/api\/novel\/channel\/homepage\/new_category\/book_list\/v1\/?aid=1967&app_name=news_article&app_version=9.7.3&channel=tengxun_tt&creation_status=9&device_platform=android&enter_from=novel_category&novel_host&novel_version&version_code=973&version_name=9.7.3&word_count=9&os=android&device_type=ProjectTitan&os_api=29&os_version=10&offset={{(page-1)*100}}&limit=100&category_id=${cid}&${gender}`;\n\t\t\t\tpush(title, url, 0.29);\t\n      });\n  });\nJSON.stringify(sort);","jsLib":"\nvar 木里得斯='https:\/\/fqnovels.indevs.in';\n\nfunction 密钥 () {\n    const {java, source, book} = this;\n    let loginInfoMap = source.getLoginInfoMap();\n    let apikey = \"\";\n    if (loginInfoMap && loginInfoMap['密钥'] && loginInfoMap['密钥'] !== \"\") {\n        apikey = loginInfoMap['密钥'];\n    }\n    \n    return apikey;\n}\n\n\n\nfunction getNovelComment(book_id, type) {\n    const { java, source, book } = this\n    if (type == 0) {\n    let count = book.getVariable(\"custom\")\n    if (count && count == \"\") count = 5\n    let res = java.ajax(`https:\/\/changdunovel.com\/reading\/ugc\/novel_comment\/book\/v1?query_type=0&offset=0&count=${count}&sort=create_time&need_hot_comment=0&book_id=${book_id}&aid=1967&addQueryPrefix=true`) \n    let rs = JSON.parse(res)\n    if (rs.code == \"101003\") return \"\";\n    let comments = rs.data.comment;\n    let result = `\\n📄 书评：${comments.length>0?(\"(共 \"+ comments.length +\" 条)\"):\"\"}\\n`\n    comments.forEach(c => {\n        let startNum = 5 - parseInt(c.score\/2)\n        let text = c.text.replace(\/\\#\/g, \"--\")\n        result += `${c.user_info.gender==1?\"👨🏻\":\"👱🏻\"} ${c.user_info.user_name} || ${\"★★★★★★☆☆☆☆☆\".slice(startNum, startNum + 5)}\\n${text}\\n&lrm;\\n`\n    })\n    return result\n    } \n  let result = \"\"\n  return result\n}\n\n","lastUpdateTime":"1774924227357","loginUi":"[\r\n    {\r\n        \"name\": \"密钥\",\r\n        \"type\": \"text\",\r\n        \"style\": {\r\n            \"layout_flexGrow\": 1,\r\n            \"layout_flexBasisPercent\": 1\r\n        }\r\n    },\r\n    {\r\n        \"name\": \" 密钥申请\",\r\n        \"type\": \"button\",\r\n        \"action\": \"密钥申请()\",\r\n        \"style\": {\r\n            \"layout_flexGrow\": 1,\r\n            \"layout_flexBasisPercent\": 1.4\r\n        }\r\n    },\r\n    {\r\n        'name': '👥加入群聊 👥',\r\n        'type': 'button',\r\n        \"action\":\"http:\/\/qm.qq.com\/cgi-bin\/qm\/qr?_wv=1027&k=6QMFbSP6uTETsgKhSt9BlJhu2U3ZV5PQ&authKey=Uw9pcKheZWSRFoBoxYTSaJz3INISY7Iw5Rilc0fsNehq7LaSTyb5VTqdZzoj%2FT%2Bq&noverify=0&group_code=1080288439\", \r\n            \"style\": {\r\n            \"layout_flexGrow\": 1,\r\n            \"layout_flexBasisPercent\": 0.4\r\n        }\r\n    },\r\n    {\r\n        \"name\": \"点击赞助\",\r\n        \"type\": \"button\",\r\n        \"action\": \"zz()\",\r\n        \"style\": {\r\n          \"layout_flexGrow\": 1,\r\n          \"layout_flexBasisPercent\": 0.4\r\n        }\r\n    },\r\n    {\r\n        'name': '本书源由Cloudflare Workers供服务',\r\n        'type': 'button',\r\n        \"style\": {\r\n            \"layout_flexGrow\": 1,\r\n            \"layout_flexBasisPercent\": 1.4\r\n        }\r\n    }\r\n\r\n]","loginUrl":"function login(){}\r\n\r\nfunction 密钥申请() {   \r\n\tjava.startBrowserAwait('https:\/\/fqnovels.indevs.in\/register', \"密钥申请\");\r\n}\r\n\r\nfunction zz() {\r\n    let url=\"https:\/\/ps.ssl.qhimg.com\/t0269ae68ef8e71dcae.jpg\"\r\n    let mes=\"欢迎赞助服务器！\"\r\n    java.startBrowser(url, \"木里得斯赞助码\")\r\n       java.longToast(mes);\r\n       return;\r\n}","respondTime":180000,"ruleBookInfo":{"author":"$.author","coverUrl":"$.bookshelf_thumb_url","init":"$.data","intro":"&nbsp;&nbsp;\n🆔 编号：{{$..book_id}}\n📕 源名：{{$..original_book_name}}\n📖 别名：{{$..book_flight_alias_name}}\n🔗 状态：__status__\n🗑 接口：{{木里得斯}}\n✏️ 开坑：{{$..create_time##T|\\+.*## }}\n🏷️ 标签：{{$..tags}}\n👤 主角：{{$..roles##\\[|\\\"|\\]}}\n👁️ 在线：{{$..read_count}}人在读\n📜 简介：{{$..abstract}}\n{{getNovelComment(java.getString(\"$..book_id\"),java.get(\"type\"))}} \n📍 {{$.copyright_info##，.*##。}}{{\"\\n\"+\"​\"}}\n@js:result.replace(\/.+：(人在读)?\\n\/g,\"\").replace('__status__', (java.getString('$..book_search_visible') == 'true' ? '正常' : (java.getString('$..tomato_book_status') == '3' ? '下架' : '小黑屋')))","kind":"$.category","name":"$.book_name","tocUrl":"{{木里得斯}}\/api\/book?book_id={{$..book_id}}&token={{密钥()}}"},"ruleContent":{"content":"data.content"},"ruleExplore":{"bookList":"<js>\nlet list = [];\nlet resultData = JSON.parse(result);\n\nlet targetData = resultData.data || resultData.list || resultData.book_list || \n                resultData.publication_list || resultData.result || resultData;\n                \nif (targetData != null && targetData.book_shelf_info) {\n    let bookIds = targetData.book_shelf_info.map(item => `{\"book_id\": \"${item.book_id}\"}`).join(',');\n    \n    let booksData = java.ajax(\n`https:\/\/fanqienovel.com\/api\/bookshelf\/multidetail,{\"method\": \"post\",\"body\": {\"books\":[${bookIds}]}}`\n        );\n    \n    let books = JSON.parse(booksData).data.detail_list;\n    for (let i in books) {\n        let d = books[i];\n        list.push({\n            src: d,\n            book_name: d.book_name,\n            author: d.author,\n            category:d.category,\n            tags:d.tags,\n            word_number:d.word_number,\n            lastChapterTitle: d.last_chapter_title,\n            abstract: d.abstract,\n            book_id: d.book_id,\n        });\n    }\n} else {\n    list = targetData.content || targetData;\n}\n\nJSON.stringify({data: list})\n<\/js>\ndata.data||data.list||book_list||data.publication_list||data.result||data","bookUrl":"{{木里得斯}}\/api\/detail?book_id={{$.book_id}}&token={{密钥()}}","name":"$.book_name"},"ruleSearch":{"author":"$.author","bookList":".book_data[*]","bookUrl":"{{木里得斯}}\/api\/detail?book_id={{$.book_id}}&token={{密钥()}}","checkKeyWord":"我能嗅到鬼味","coverUrl":"$.audio_thumb_uri","intro":"$.abstract","kind":"$.category","name":"$.book_name||$..series_title##（别名：.*?）"},"ruleToc":{"chapterList":"data.data.chapterListWithVolume[*].[*]","chapterName":"title","chapterUrl":"{{木里得斯}}\/api\/content?tab=小说&item_id={{$..itemId}}&token={{密钥()}}","updateTime":"{{java.timeFormatUTC(java.getString(\"firstPassTime\") * 1000, 'yyyy-MM-dd HH:mm:ss', 12)}}##第一卷：默认\r\n@js:\r\nif (result.startsWith(\" |\")) result = result.slice(2)\r\nif (result.startsWith(\"| \")) result = result.slice(2)\r\nresult\r\n"},"searchUrl":"{{木里得斯}}\/api\/search?key={{key}}&offset={{( page - 1) * 10}}&tab_type=3&token={{密钥()}}","weight":0}]