├── CNAME ├── utils ├── README.md ├── read.ttf └── MI LANTING.ttf ├── zaimanhua.json ├── rezero.json ├── esjzone.json ├── masiro.json ├── fqweb.json ├── lk-lightnovel-us.json ├── wenku.json ├── README.md ├── fishhawk.json ├── LICENSE ├── bilinovel-like.json └── bilinovel.json /CNAME: -------------------------------------------------------------------------------- 1 | source.jwyihao.top -------------------------------------------------------------------------------- /utils/README.md: -------------------------------------------------------------------------------- 1 | # 额外文件(一般无需单独下载) 2 | 3 | 本目录下可能存在版权文件,与本项目无关,亦不受本项目许可的约束。 -------------------------------------------------------------------------------- /utils/read.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiwangyihao/source-j-legado/HEAD/utils/read.ttf -------------------------------------------------------------------------------- /utils/MI LANTING.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiwangyihao/source-j-legado/HEAD/utils/MI LANTING.ttf -------------------------------------------------------------------------------- /zaimanhua.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bookSourceComment": "酷安 @吉王义昊\nGitHub:https://github.com/jiwangyihao/source-j-legado\n\n# 关于许可的额外声明(在线版本参见 GitHub,以在线版本为准)\n\n- 当许可证与本声明冲突时,以本声明为准;\n- 对于本仓库中的任意代码片段:按照 `MPL 2.0` 中有关约定执行;\n- 对于本仓库中的某一完整书源的转载或二次开发,需满足以下全部条件:\n - 在[本仓库](https://github.com/jiwangyihao/source-j-legado)的 `issue` 中提出请求并具体说明转载地址、二次开发后的书源开源地址以及其他必要信息;\n - 等待原作者(即本仓库的初始所有者和初始代码贡献者 [@jiwangyihao](https://github.com/jiwangyihao))查看并通过 `issue` 或依据原作者要求更改转载方式或补充更详细的信息。\n - 考虑到本项目弃坑的可能,新 `issue` 开启后超过 20 个工作日原作者没有回复或者原作者回复要求更改的 `issue` 在更改后超过 20 个工作日原作者没有回复即视为原作者通过该 `issue`:\n - 此处的 `issue` 仅包括在[本仓库](https://github.com/jiwangyihao/source-j-legado)开启的,处于「开启状态」的 issue。(也就是说,请不要在已经关闭的 issue 中回复)。\n - 对于此种方式通过的 issue,转载/二次开发者仍应当遵守本声明中已经写明的相关约定。\n - 不得上传至源仓库或整理至`非轻小说专用`的书源合集中并应当避免其他人将转载/二次开发版本上传至源仓库或整理至`非轻小说专用`的书源合集中:\n - 关于轻小说的定义的额外说明:不包括国内的原创网络文学作品(如 `SF 轻小说` 中的原创轻小说以及`起点中文网`中标签包含轻小说的作品)。\n - 轻小说专用的定义:有且仅有想看轻小说的人可能会添加。\n - 必须在转载/二次开发地址的明显位置完整包含本声明的全部内容。\n - 必须保留源注释中原有的更改记录。", 4 | "bookSourceGroup": "漫画", 5 | "bookSourceName": "再漫画", 6 | "bookSourceType": 0, 7 | "bookSourceUrl": "https://manhua.zaimanhua.com/", 8 | "customOrder": -41328, 9 | "enabled": true, 10 | "enabledCookieJar": true, 11 | "enabledExplore": true, 12 | "lastUpdateTime": 1726801514321, 13 | "respondTime": 180000, 14 | "ruleBookInfo": { 15 | "author": "$..authorName", 16 | "coverUrl": "$..cover", 17 | "init": "@js:\njava.put('bid', `{{$..id}}`)\nresult", 18 | "intro": "$..description", 19 | "kind": "{{$..status}}\n{{$..readerGroup}}\n{{$..types##/##,}}", 20 | "lastChapter": "$..lastUpdateChapterName", 21 | "name": "$..comicInfo.title" 22 | }, 23 | "ruleContent": { 24 | "content": "$..page_url\n@js:\nJSON.parse(result).map(url=>``).join('\\n')" 25 | }, 26 | "ruleExplore": {}, 27 | "ruleSearch": { 28 | "author": "class.auth@text", 29 | "bookList": "class.update_con@tag.li", 30 | "bookUrl": "https://manhua.zaimanhua.com/api/v1/comic1/comic/detail?channel=%20pc&app_name=zmh&version=1.0.0&comic_py={{@@class.title@tag.a@href##.+info.(\\w+).html##$1}}", 31 | "coverUrl": "tag.img@src", 32 | "name": "class.title@text" 33 | }, 34 | "ruleToc": { 35 | "chapterList": "$..chapterList\n@js:\nresult = JSON.parse(result)[0]\nres = []\nresult.reverse().forEach(v=>{\n res.push(JSON.stringify({\n chapter_title: v.title,\n isV: true\n }))\n v.data.reverse().forEach(c=>{\n res.push(JSON.stringify(c))\n })\n})\nres", 36 | "chapterName": "$.chapter_title", 37 | "chapterUrl": "@js:\nresult = JSON.parse(result)\nresult.isV? '' : `https://manhua.zaimanhua.com/api/v1/comic1/chapter/detail?channel=pc&app_name=zmh&version=1.0.0&comic_id=${java.get('bid')}&chapter_id=${result.chapter_id}`", 38 | "isVolume": "$.isV" 39 | }, 40 | "searchUrl": "https://manhua.zaimanhua.com/dynamic/{{key}}", 41 | "weight": 0 42 | } 43 | ] -------------------------------------------------------------------------------- /rezero.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bookSourceComment": "酷安 @吉王义昊\nGitHub:https://github.com/jiwangyihao/source-j-legado\n\n# 关于许可的额外声明(在线版本参见 GitHub,以在线版本为准)\n\n- 当许可证与本声明冲突时,以本声明为准;\n- 对于本仓库中的任意代码片段:按照 `MPL 2.0` 中有关约定执行;\n- 对于本仓库中的某一完整书源的转载或二次开发,需满足以下全部条件:\n - 在[本仓库](https://github.com/jiwangyihao/source-j-legado)的 `issue` 中提出请求并具体说明转载地址、二次开发后的书源开源地址以及其他必要信息;\n - 等待原作者(即本仓库的初始所有者和初始代码贡献者 [@jiwangyihao](https://github.com/jiwangyihao))查看并通过 `issue` 或依据原作者要求更改转载方式或补充更详细的信息。\n - 考虑到本项目弃坑的可能,新 `issue` 开启后超过 20 个工作日原作者没有回复或者原作者回复要求更改的 `issue` 在更改后超过 20 个工作日原作者没有回复即视为原作者通过该 `issue`:\n - 此处的 `issue` 仅包括在[本仓库](https://github.com/jiwangyihao/source-j-legado)开启的,处于「开启状态」的 issue。(也就是说,请不要在已经关闭的 issue 中回复)。\n - 对于此种方式通过的 issue,转载/二次开发者仍应当遵守本声明中已经写明的相关约定。\n - 不得上传至源仓库或整理至`非轻小说专用`的书源合集中并应当避免其他人将转载/二次开发版本上传至源仓库或整理至`非轻小说专用`的书源合集中:\n - 关于轻小说的定义的额外说明:不包括国内的原创网络文学作品(如 `SF 轻小说` 中的原创轻小说以及`起点中文网`中标签包含轻小说的作品)。\n - 轻小说专用的定义:有且仅有想看轻小说的人可能会添加。\n - 必须在转载/二次开发地址的明显位置完整包含本声明的全部内容。\n - 必须保留源注释中原有的更改记录。", 4 | "bookSourceGroup": "轻小说", 5 | "bookSourceName": "rezero", 6 | "bookSourceType": 0, 7 | "bookSourceUrl": "https://re0zero.top", 8 | "customOrder": -72, 9 | "enabled": true, 10 | "enabledCookieJar": true, 11 | "enabledExplore": true, 12 | "lastUpdateTime": 1711502232991, 13 | "respondTime": 180000, 14 | "ruleBookInfo": { 15 | "author": "\nr=\"长月达平\"\n", 16 | "coverUrl": "@js:\nsource.bookSourceUrl + '/gitbook/res/imgs/article/chapter010/00-a.jpg'", 17 | "intro": "\nr=`走出便利商店要回家的高中生 菜月・昴(Natsuki・Subaru) 突然被召唤到异世界。\n\n这莫非就是很流行的异世界召唤!?可是眼前没有召唤者就算了,还遭遇强盗迅速面临性命危机。\n\n这时,一名神秘银发美少女和猫精灵拯救了一筹莫展的他。\n\n以报恩为名义,昴自告奋勇要帮助少女找回失物。\n\n然而,好不容易才掌握到线索,昴和少女却被不明人士攻击而殒命 ── 本来应该是这样,但回过神来,昴却发现自己置身在第一次被召唤到这个异世界时的所在位置。\n\n『死亡回归』 —— 无力的少年得到的唯一能力,是死后时间会倒转回到一开始。\n\n※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※\n\n仅仅是作为没有被赋予任何关于异世界知识、技能、力量的普通人,挣扎求存。 他唯一得到的祝福就是 「重生」 —— 触发条件是痛苦的 『死亡』 !\n\n他死了多少次? 历经多少死亡方式(剧透慎点)? 在不可靠的世界种如何夺取希望之物?\n\n但即使跨越无数血液、尸体和绝望,也要从死亡的命运中拯救少女!`\n", 18 | "name": "\njava.get('is')==1?\"Re:从零开始的异世界生活\":''\n" 19 | }, 20 | "ruleContent": { 21 | "content": "class.markdown-section@html\n\n\nresult=result.replace(new RegExp('.+anchor-navigation-ex-navbar[\\\\s\\\\S]+\\\\/h1.+','gi'),'')\nresult=result.replace(new RegExp('.+footer[\\\\s\\\\S]+\\\\/footer.+','gi'),'')\njava.log(result)\n", 22 | "imageStyle": "" 23 | }, 24 | "ruleExplore": {}, 25 | "ruleSearch": { 26 | "author": "\n\"长月达平\"\n", 27 | "bookList": "\nname='Re:从零开始的异世界生活长月达平RE0'\nif (name.match(java.get('key'))) {\n\t java.put('is',1)\n r=[\"\"]\n} else {\n\t java.put('is',0)\n r=[]\n}\nr\n", 28 | "bookUrl": "@js:\nsource.bookSourceUrl + \"/gitbook/book/\"", 29 | "checkKeyWord": "Re:从零开始的异世界生活", 30 | "coverUrl": "@js:\nsource.bookSourceUrl + '/gitbook/res/imgs/article/chapter010/00-a.jpg'", 31 | "intro": "\n`走出便利商店要回家的高中生 菜月・昴(Natsuki・Subaru) 突然被召唤到异世界。\n\n这莫非就是很流行的异世界召唤!?可是眼前没有召唤者就算了,还遭遇强盗迅速面临性命危机。\n\n这时,一名神秘银发美少女和猫精灵拯救了一筹莫展的他。\n\n以报恩为名义,昴自告奋勇要帮助少女找回失物。\n\n然而,好不容易才掌握到线索,昴和少女却被不明人士攻击而殒命 ── 本来应该是这样,但回过神来,昴却发现自己置身在第一次被召唤到这个异世界时的所在位置。\n\n『死亡回归』 —— 无力的少年得到的唯一能力,是死后时间会倒转回到一开始。\n\n※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※\n\n仅仅是作为没有被赋予任何关于异世界知识、技能、力量的普通人,挣扎求存。 他唯一得到的祝福就是 「重生」 —— 触发条件是痛苦的 『死亡』 !\n\n他死了多少次? 历经多少死亡方式(剧透慎点)? 在不可靠的世界种如何夺取希望之物?\n\n但即使跨越无数血液、尸体和绝望,也要从死亡的命运中拯救少女!`\n", 32 | "name": "\n\"Re:从零开始的异世界生活\"\n" 33 | }, 34 | "ruleToc": { 35 | "chapterList": "class.chapter\n\nres=[]\nresult.forEach(item=>{\n java.setContent(item);\n if (java.getString(\"tag.li.0@data-level\").match(new RegExp('^2','gi'))) {\n \t res.push(item);\n \t}\n})\nres\n", 36 | "chapterName": "tag.a.0@text", 37 | "chapterUrl": "tag.a.0@href", 38 | "isVolume": "@js:\njava.getString(\"tag.li.0@data-level\").match(new RegExp('\\\\.','gi')).length<2" 39 | }, 40 | "searchUrl": "https://baidu.com?key={{java.put('key',key)}}", 41 | "weight": 0 42 | } 43 | ] -------------------------------------------------------------------------------- /esjzone.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bookSourceComment": "建议登录\n\n酷安 @吉王义昊\nGitHub:https://github.com/jiwangyihao/source-j-legado\n\n# 关于许可的额外声明(在线版本参见 GitHub,以在线版本为准)\n\n- 当许可证与本声明冲突时,以本声明为准;\n- 对于本仓库中的任意代码片段:按照 `MPL 2.0` 中有关约定执行;\n- 对于本仓库中的某一完整书源的转载或二次开发,需满足以下全部条件:\n - 在[本仓库](https://github.com/jiwangyihao/source-j-legado)的 `issue` 中提出请求并具体说明转载地址、二次开发后的书源开源地址以及其他必要信息;\n - 等待原作者(即本仓库的初始所有者和初始代码贡献者 [@jiwangyihao](https://github.com/jiwangyihao))查看并通过 `issue` 或依据原作者要求更改转载方式或补充更详细的信息。\n - 考虑到本项目弃坑的可能,新 `issue` 开启后超过 20 个工作日原作者没有回复或者原作者回复要求更改的 `issue` 在更改后超过 20 个工作日原作者没有回复即视为原作者通过该 `issue`:\n - 此处的 `issue` 仅包括在[本仓库](https://github.com/jiwangyihao/source-j-legado)开启的,处于「开启状态」的 issue。(也就是说,请不要在已经关闭的 issue 中回复)。\n - 对于此种方式通过的 issue,转载/二次开发者仍应当遵守本声明中已经写明的相关约定。\n - 不得上传至源仓库或整理至`非轻小说专用`的书源合集中并应当避免其他人将转载/二次开发版本上传至源仓库或整理至`非轻小说专用`的书源合集中:\n - 关于轻小说的定义的额外说明:不包括国内的原创网络文学作品(如 `SF 轻小说` 中的原创轻小说以及`起点中文网`中标签包含轻小说的作品)。\n - 轻小说专用的定义:有且仅有想看轻小说的人可能会添加。\n - 必须在转载/二次开发地址的明显位置完整包含本声明的全部内容。\n - 必须保留源注释中原有的更改记录。\n\n原整理修改:GitHub@ZWolken\n原作者:酷安户山香澄Official\n\n2024.5.1\n酷安 @吉王义昊\n更改登录URL\n书源内链接改用相对URL\n更改发现\n更改部分页面显示效果\n2024.7.19\n酷安 @吉王义昊\n空白封面时返回无封面以便使用阅读默认封面", 4 | "bookSourceGroup": "轻小说", 5 | "bookSourceName": "ESJ Zone", 6 | "bookSourceType": 0, 7 | "bookSourceUrl": "https://www.esjzone.one", 8 | "bookUrlPattern": "https?://www.esjzone.one/detail/.*", 9 | "customOrder": 0, 10 | "enabled": true, 11 | "enabledCookieJar": true, 12 | "enabledExplore": true, 13 | "exploreUrl": "@js:\nresult=[\n {\n 'title': '>> 个人中心 <<',\n 'url': \"\",\n 'style':{\n layout_flexGrow:1,\n layout_flexBasisPercent:1\n }\n },\n {\n 'title': \"我的收藏\",\n 'url': `/my/favorite`,\n 'style':{\n layout_flexGrow:2,\n layout_flexBasisPercent:0.25\n \t}\n },\n {\n 'title': \"观看记录\",\n 'url': `/my/view`,\n 'style':{\n layout_flexGrow:2,\n layout_flexBasisPercent:0.25\n \t}\n }\n]\nhtml=org.jsoup.Jsoup.parse(java.ajax(source.bookSourceUrl+\"/list-01/\"))\ncategorys=html.select(\"#category option\")\nsortings=html.select(\"#sorting option\")\ncategorys.forEach(category => {\n result.push({\n 'title': '>> ' + java.t2s(category.text()) + ' <<',\n 'url': \"\",\n 'style':{\n layout_flexGrow:1,\n layout_flexBasisPercent:1\n }\n })\n sortings.forEach(sorting => {\n result.push({\n 'title': java.t2s(sorting.text()),\n 'url':`/list-${category.attr('value')}${sorting.attr('value')}/{{page}}.html`,\n 'style':{\n layout_flexGrow:2,\n layout_flexBasisPercent:0.25\n \t}\n })\n })\n})\nJSON.stringify(result)", 14 | "lastUpdateTime": 1732197018441, 15 | "loginUrl": "/my/profile.html", 16 | "respondTime": 2438, 17 | "ruleBookInfo": { 18 | "author": "class.list-unstyled mb-2 book-detail@tag.li.1@tag.a@text\n@js:\njava.t2s(result)", 19 | "canReName": "true", 20 | "coverUrl": "@css:div.col-md-3 > div > a > img@src", 21 | "intro": "{{@@section.m-t-20@a.tag@text##(^|[\\n])##🏷️}}\n{{'‎'}}\n{{@@div.description@html}}\n@js:\njava.t2s(result)", 22 | "kind": "关注:{{@css:.book-detail label:has(.icon-eye)@text}},喜欢:{{@css:.book-detail label:has(.icon-heart)@text}}\n{{@@class.list-unstyled mb-2 book-detail@tag.li.-2@text##.+: }}\n{{@@class.list-unstyled mb-2 book-detail@tag.li.-1@text## .+}}", 23 | "lastChapter": "@css:div[id = chapterList] >a:last-child@text\n@js:\njava.t2s(result)", 24 | "name": "@css:div.col-md-9.book-detail > h2@text\n@js:\njava.t2s(result)", 25 | "tocUrl": "", 26 | "wordCount": "@css: .book-detail label:has(.icon-file-text)@text##,##" 27 | }, 28 | "ruleContent": { 29 | "content": "@css:div.forum-content.mt-3,div[class =d_post_content j_d_post_content]@all\n@js:\njava.t2s(result)" 30 | }, 31 | "ruleExplore": { 32 | "author": "", 33 | "coverUrl": "", 34 | "wordCount": "" 35 | }, 36 | "ruleSearch": { 37 | "author": "class.card-author@tag.a@text\n@js:\njava.t2s(result)", 38 | "bookList": "@css: div.col-xl-9.col-lg-8.p-r-30 > div.row > div || .product-item", 39 | "bookUrl": "@css:div> div > div > h5 > a, .product-title > a@href", 40 | "coverUrl": "class.main-img@class.lazyload@data-src\n@js:\nresult.match(\"empty\") ? \"\" : result", 41 | "intro": "class.book-ep@div.-1@text\n@js:\njava.t2s(result)", 42 | "kind": "{{@css:.column:has(.icon-star-s)@text}},关注:{{@css:.column:has(.icon-eye)@text}},喜欢:{{@css:.column:has(.icon-heart)@text}},羽毛:{{@css:.column:has(.icon-feather)@text}},评论:{{@css:.column:has(.icon-message-square)@text}}##(\\([^()]+)##星$1人\n@js:\n!!result.split(\",\")[0] ? result : java.getString(\"class.book-update@text\")", 43 | "lastChapter": "@css:div>div>div[class=card-ep mt-2], .book-ep a@text\n@js:\njava.t2s(result)", 44 | "name": "@css: .card-title a, .product-title@text\n@js:\njava.t2s(result)", 45 | "wordCount": "@css: .column:has(.icon-file-text)@text##,##" 46 | }, 47 | "ruleToc": { 48 | "chapterList": "#chapterList@a[data-title], p.non, summary", 49 | "chapterName": "text\n@js:\njava.t2s(result)", 50 | "chapterUrl": "href", 51 | "isVolume": "p.non@text||summary@text" 52 | }, 53 | "searchUrl": "/tags/{{key}}/{{page}}.html", 54 | "weight": 0 55 | } 56 | ] -------------------------------------------------------------------------------- /masiro.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bookSourceComment": "酷安 @吉王义昊\nGitHub:https://github.com/jiwangyihao/source-j-legado\n\n# 关于许可的额外声明(在线版本参见 GitHub,以在线版本为准)\n\n- 当许可证与本声明冲突时,以本声明为准;\n- 对于本仓库中的任意代码片段:按照 `MPL 2.0` 中有关约定执行;\n- 对于本仓库中的某一完整书源的转载或二次开发,需满足以下全部条件:\n - 在[本仓库](https://github.com/jiwangyihao/source-j-legado)的 `issue` 中提出请求并具体说明转载地址、二次开发后的书源开源地址以及其他必要信息;\n - 等待原作者(即本仓库的初始所有者和初始代码贡献者 [@jiwangyihao](https://github.com/jiwangyihao))查看并通过 `issue` 或依据原作者要求更改转载方式或补充更详细的信息。\n - 考虑到本项目弃坑的可能,新 `issue` 开启后超过 20 个工作日原作者没有回复或者原作者回复要求更改的 `issue` 在更改后超过 20 个工作日原作者没有回复即视为原作者通过该 `issue`:\n - 此处的 `issue` 仅包括在[本仓库](https://github.com/jiwangyihao/source-j-legado)开启的,处于「开启状态」的 issue。(也就是说,请不要在已经关闭的 issue 中回复)。\n - 对于此种方式通过的 issue,转载/二次开发者仍应当遵守本声明中已经写明的相关约定。\n - 不得上传至源仓库或整理至`非轻小说专用`的书源合集中并应当避免其他人将转载/二次开发版本上传至源仓库或整理至`非轻小说专用`的书源合集中:\n - 关于轻小说的定义的额外说明:不包括国内的原创网络文学作品(如 `SF 轻小说` 中的原创轻小说以及`起点中文网`中标签包含轻小说的作品)。\n - 轻小说专用的定义:有且仅有想看轻小说的人可能会添加。\n - 必须在转载/二次开发地址的明显位置完整包含本声明的全部内容。\n - 必须保留源注释中原有的更改记录。\n\n2024.5.20\n酷安 @吉王义昊\n处理新版阅读目录加载失败问题", 4 | "bookSourceGroup": "轻小说", 5 | "bookSourceName": "真白萌", 6 | "bookSourceType": 0, 7 | "bookSourceUrl": "https://masiro.me", 8 | "bookUrlPattern": "", 9 | "customOrder": 6, 10 | "enabled": true, 11 | "enabledCookieJar": true, 12 | "enabledExplore": true, 13 | "exploreUrl": "@js:\nresult=[\n {'title':'>> 论坛首页 <<','url':'','style':{layout_flexGrow:1,layout_flexBasisPercent:1}},\n {'title':'全部','url':'https://masiro.me/admin/loadMoreNovels?page={{page}}&status=1&order=2','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n {'title':'日轻','url':'https://masiro.me/admin/loadMoreNovels?page={{page}}&order=2&ori=0','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n {'title':'原创','url':'https://masiro.me/admin/loadMoreNovels?page={{page}}&order=2&ori=1','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n {'title':'最近更新','url':'https://masiro.me/admin/loadMoreNovels?page={{page}}&order=1','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}},\n {'title':'收藏','url':'https://masiro.me/admin/loadMoreNovels?page={{page}}&collection=1','style':{layout_flexGrow:1,layout_flexBasisPercent:0.25}}\n]\nhtml=org.jsoup.Jsoup.parse(java.ajax('https://masiro.me/admin/novels'))\ntagLines=html.select('.nv-tags-box>.tag-line, #tagcks>.tag-line')\ntagLines.forEach(tagLine => {\n result.push({\n 'title': '>> ' + tagLine.select('.line-tit').text() + ' <<',\n 'url':'',\n 'style':{\n layout_flexGrow:1,\n layout_flexBasisPercent:1\n }\n })\n tagLine.select('.ck.tgs').forEach(tag => {\n result.push({\n 'title':tag.text(),\n 'url':`/admin/loadMoreNovels?page={{page}}&tags=${tag.select('.tag-ck').attr('value')}&order=2`,\n 'style':{\n layout_flexGrow:2,\n layout_flexBasisPercent:0.25\n \t}\n })\n })\n})\nJSON.stringify(result)", 14 | "header": "{\n\"Referer\":\"https://masiro.me/\",\n\"User-Agent\":\"\"\n}", 15 | "jsLib": "", 16 | "lastUpdateTime": 1718621919484, 17 | "loginUrl": "/admin/auth/login", 18 | "respondTime": 180000, 19 | "ruleBookInfo": { 20 | "author": "class.author@tag.a@text", 21 | "canReName": "true", 22 | "coverUrl": "", 23 | "init": "@js:\nif (java.getString('class.content@text') == '小孩子不能看') {\n java.toast(\"等级不足\")\n time = new Date().getTime()\n while(new Date().getTime() - time<2000){}\n throw('等级不足')\n} else\n src", 24 | "intro": "-\n更新时间:{{@@.n-update@class.s-font@text}}\n标签:{{@@.tags@tag.a@text##\\s## - }}\n{{@@.brief@html##简介:}}", 25 | "kind": "{{@@.n-chapters@text##字数 : .+字}}\n{{@@.n-status@text##状态 : }}\n{{@@.n-translator@text}}\n{{@@.tags@tag.a@text}}", 26 | "lastChapter": "class.n-update@text##更新 : ", 27 | "name": "class.novel-title@text", 28 | "wordCount": "class.n-chapters@text##字数 : |共.+话|字" 29 | }, 30 | "ruleContent": { 31 | "content": "@js:\nif (`{{@@.pay@text}}` == '立即打钱')\n `\"打钱.png\"\n 立即打钱\n Cost:{{@@.cost@value}} 金币`\nelse\n `{{@@.nvl-content@html}}`", 32 | "imageStyle": "FULL", 33 | "payAction": "java.setContent(java.ajax(source.bookSourceUrl + baseUrl))\nlet body = `type=${java.getString('class.type@value')}&object_id=${java.getString('class.object_id@value')}&cost=${java.getString('class.cost@value')}`\nlet url = source.bookSourceUrl + '/admin/pay'\nlet res = java.post(url, body, {\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"Referer\": baseUrl,\n \"X-Csrf-Token\": java.getString(\"class.csrf@value\"),\n \"X-Requested-With\": \"XMLHttpRequest\"\n})\njava.toast(JSON.parse(res.body()).msg)", 34 | "replaceRegex": "" 35 | }, 36 | "ruleExplore": { 37 | "author": "", 38 | "bookList": "", 39 | "bookUrl": "", 40 | "intro": "", 41 | "kind": "", 42 | "lastChapter": "", 43 | "name": "", 44 | "wordCount": "" 45 | }, 46 | "ruleSearch": { 47 | "author": "$.author", 48 | "bookList": "$.novels", 49 | "bookUrl": "https://masiro.me/admin/novelView?novel_id={{$.id}}", 50 | "coverUrl": "$.cover_img", 51 | "intro": "$.brief", 52 | "kind": "{{$.hs}}话\n{{$.translators..name}}\nLv{{$.lv_limit}}\n{{$.tags..name}}", 53 | "lastChapter": "$.new_up_content", 54 | "name": "$.title", 55 | "wordCount": "$.words" 56 | }, 57 | "ruleToc": { 58 | "chapterList": "@js:\nvolumns=JSON.parse(String(java.getString('id.f-chapters-json@html')).replace(/<.?script[^<>]*>/gi,''))\nvolumns.forEach(volumn=> {\n volumn.children=[]\n})\nchapters=JSON.parse(String(java.getString('id.chapters-json@html')).replace(/<.?script[^<>]*>/gi,''))\nchapters.forEach(chapter=>{\n volumns.forEach(volumn=> {\n \t if (chapter.parent_id===volumn.id)\n \t volumn.children.push(chapter)\n \t})\n})\nresult=[]\nvolumns.forEach(volumn => {\n result.push(JSON.stringify(volumn))\n volumn.children.forEach(chapter => {\n result.push(JSON.stringify(chapter))\n \t})\n})\n//java.log(JSON.stringify(result))\nresult", 59 | "chapterName": "@js:\n$=JSON.parse(result);\n$.title + ($.describe ? `- ${$.describe}` : '')", 60 | "chapterUrl": "@js:\n$=JSON.parse(result)\n!!$.children ? '' : `/admin/novelReading?cid=${$.id}`", 61 | "isVip": "@js:\nJSON.parse(result).cost > 0", 62 | "isVolume": "@js:\n!!JSON.parse(result).children", 63 | "updateTime": "@js:\n$=JSON.parse(result);\n($.cost > 0 ? `${$.cost}G - ` : '') + ($.episode_update_time ? $.episode_update_time : '')" 64 | }, 65 | "searchUrl": "/admin/loadMoreNovels?page={{page}}&keyword={{key}}", 66 | "weight": 0 67 | } 68 | ] -------------------------------------------------------------------------------- /fqweb.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bookSourceComment": "", 4 | "bookSourceGroup": "番茄小说", 5 | "bookSourceName": "番茄【FQWeb自建】- 模板", 6 | "bookSourceType": 0, 7 | "bookSourceUrl": "在此填写你的服务器地址", 8 | "customOrder": -41332, 9 | "enabled": true, 10 | "enabledCookieJar": false, 11 | "enabledExplore": true, 12 | "exploreUrl": "@js:\nsort0=[];//女频\nsort1=[];//男频\npush=(title, url, type1, type2)=>{\n\t\tjson = {\n\t\t\t\ttitle: title,\n\t\t\t\turl: url?url:\"\",\n\t\t\t\tstyle: {\n\t\t\t\t\t\tlayout_flexGrow: 1,\n\t\t\t\t\t\tlayout_flexBasisPercent: type1\n\t\t\t\t\t}\n\t\t\t};\n\t\treturn eval('sort'+type2+'.push(json)');\n\t};\n$$=(gender, tags, status, sort)=>{\n\t\treturn `https://tsearch.toutiaoapi.com/2/wap/search/extra/novel_operator?tab_name=%25E5%2585%25A8%25E9%2583%25A8%25E5%2588%2586%25E7%25B1%25BB&ala_src=novel_tag&gender=${gender}&is_finish=0&iid=2008145514494631&aid=13&app_name=news_article&version_code=692&version_name=6.9.2&abflag=3&partner=novel_tag&passback={{(page-1)*10}}&limit=10&tags=%5B%22${tags}%22%5D&creation_status=${status}&word_num=0&sort=${sort}`\n\t};\n\nstatus=\"ALL\",sort=0;\n[\n\t\t\t\t[\"女\",[[\"无敌\",384],[\"种田\",23],[\"萌宝\",28],[\"美食\",78],[\"游戏动漫\",57],[\"娱乐圈\",43],[\"直播\",69],[\"女扮男装\",388],[\"二次元\",39],[\"团宠\",94],[\"无cp\",392],[\"青梅竹马\",387],[\"病娇\",380],[\"科幻\",8],[\"武侠\",16],[\"年代\",79],[\"重生\",36],[\"灵异\",100],[\"公主\",83],[\"甜宠\",96],[\"盗墓\",81],[\"系统\",19],[\"女强\",86],[\"皇后\",84],[\"推理\",61],[\"文化历史\",62],[\"生活\",48],[\"反派\",369],[\"末世\",68],[\"悬疑\",10],[\"穿越\",37],[\"学霸\",82],[\"扮猪吃虎\",93],[\"清穿\",76],[\"穿书\",382],[\"快穿\",24],[\"皇叔\",87],[\"空间\",44],[\"宠妻\",30],[\"豪门总裁\",29],[\"影视小说\",45],[\"成功励志\",56],[\"职场\",127],[\"民国\",390],[\"都市生活\",2],[\"腹黑\",92],[\"星际\",77],[\"天才\",90],[\"古代言情\",5],[\"家庭\",125],[\"兽世\",72],[\"校园\",4],[\"诗歌散文\",46],[\"虐文\",95],[\"嫡女\",88],[\"王妃\",85],[\"精灵\",89],[\"幻想言情\",32],[\"现代言情\",3],[\"现言甜宠\",395],[\"现言脑洞\",267],[\"先婚后爱\",265],[\"都市日常\",261],[\"古言脑洞\",253],[\"古言萌宝\",249],[\"古言甜宠\",394],[\"现言日常\",269],[\"现言复仇\",268],[\"玄幻言情\",248],[\"医术\",247],[\"马甲\",266]]],\n\t\t[\"男\",[[\"玄幻\",7],[\"神豪\",20],[\"鉴宝\",17],[\"三国\",67],[\"二次元\",39],[\"历史\",12],[\"美食\",78],[\"奶爸\",42],[\"娱乐圈\",43],[\"洪荒\",66],[\"大唐\",73],[\"外卖\",75],[\"末世\",68],[\"都市\",1],[\"宠物\",74],[\"学霸\",82],[\"游戏动漫\",57],[\"科幻\",8],[\"体育\",15],[\"直播\",69],[\"年代\",79],[\"文化历史\",62],[\"诸天万界\",71],[\"海岛\",40],[\"神医\",26],[\"明朝\",126],[\"武侠\",16],[\"灵异\",100],[\"星际\",77],[\"穿越\",37],[\"剑道\",80],[\"都市修真\",124],[\"赘婿\",25],[\"盗墓\",81],[\"推理\",61],[\"无限流\",70],[\"种田\",23],[\"战争\",97],[\"天才\",90],[\"职场\",127],[\"悬疑\",10],[\"成功励志\",56],[\"重生\",36],[\"系统\",19],[\"空间\",44],[\"腹黑\",92],[\"诗歌散文\",46],[\"家庭\",125],[\"影视小说\",45],[\"生活\",48],[\"都市生活\",2],[\"扮猪吃虎\",93],[\"大秦\",377],[\"无敌\",384],[\"漫威\",374],[\"火影\",368],[\"西游\",373],[\"龙珠\",376],[\"聊天群\",381],[\"海贼\",370],[\"奥特同人\",367],[\"特种兵\",375],[\"反派\",369],[\"校花\",385],[\"女帝\",378],[\"单女主\",389],[\"神奇宝贝\",371],[\"九叔\",383],[\"求生\",379],[\"无女主\",391],[\"武魂\",386],[\"网游\",372],[\"战神\",27],[\"都市脑洞\",262],[\"都市种田\",263],[\"都市日常\",261],[\"历史脑洞\",272],[\"玄幻脑洞\",257],[\"奇幻仙侠\",259],[\"都市青春\",396],[\"传统玄幻\",258],[\"历史古代\",273]]]\n\t].map(([title,list], gender)=>{\n\t\tpush('༺ˇ»`ʚ'+title+'生频道ɞ´«ˇ༻',null,1,gender);\n\t\tlist.map([title,tags]=>{\n\t\t\t\tpush('༺ '+title+' ༻',(gender, tags, status, sort), 1,gender);\n\t\t\t\t[\"推荐\",\"评分\",\"热门\"].map((title,sort)=>{\n\t\t\t\t\t\t[ [\"[\"+title+\"]\",\"ALL\"],[\"完结\",\"Finished\"],[\"连载\",\"Loading\"] ].map([title,status]=>{\n\t\t\t\t\t\t\t\treturn push(title, $$(gender, tags, status, sort), 0.25,gender);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t});\n\t});\nJSON.stringify(\n\tsort1\n\t//.concat(sort0) //是否显示女频\n);", 13 | "header": "{\"User-Agent\":\"com.dragon.read/306 (Linux; U; Android 8.1.0; zh_CN; MI PAD 4; Build/OPM1.171019.019; Cronet/TTNetVersion:4df3ca9d 2019-11-25)\",\"accept\":\"application/json; charset=utf-8\",\"sdk-version\":\"1\"}", 14 | "lastUpdateTime": 1730412128646, 15 | "loginUrl": "", 16 | "respondTime": 180000, 17 | "ruleBookInfo": { 18 | "author": "$.author##|", 19 | "canReName": "", 20 | "coverUrl": "$.thumb_url", 21 | "init": "$.data[0]", 22 | "intro": "🏷️ 标签:{{$.tags}}{{'\\n‎\\n'}}\n \n  \n \n\n 📉开书时间:{{$.create_time##T.*}}{{'\\n‎\\n'}}\n 📈更新时间:{{java.timeFormat(java.getString('$..last_chapter_update_time')*1000)}}{{'\\n‎\\n'}}\n 👥 主角:{{$.roles##\\[|\\\"|\\]}}\n{{'\\n‎\\n'}}\n💠 原名:{{$.original_book_name}}{{'\\n‎\\n'}}\n🔋 别名:{{$.book_flight_alias_name}} \n\n{{'\\n‎\\n'}}📮 简介:{{$..abstract}}{{'\\n'+'​'}}\n📍 {{$.copyright_info##,.*##。}}\n@js:result.replace(/.+:(人在读)?\\s/g,'')", 23 | "kind": "{{$..category}},连载{{$..creation_status}}完结,{{$..score}}分,{{$..create_time##T.*}}@js:result.replace(/连载0完结/g,'完结').replace(/连载1完结/g,'连载').replace(/连载4完结/g,'已断更').replace(/连载-1完结/g,'完结')", 24 | "lastChapter": "{{$.last_chapter_title}} • {{java.timeFormat(java.getString('$.last_chapter_update_time')*1000)}}", 25 | "name": "$.book_name", 26 | "tocUrl": "https://fanqienovel.com/api/reader/directory/detail?bookId={{$..book_id}}", 27 | "wordCount": "$.word_number" 28 | }, 29 | "ruleContent": { 30 | "content": "$..content", 31 | "replaceRegex": "##.*本节目由.*|.*出品.*", 32 | "sourceRegex": "" 33 | }, 34 | "ruleExplore": { 35 | "author": "$.author", 36 | "bookList": "$[0].content[*]", 37 | "bookUrl": "https://api5-normal-lf.fqnovel.com/reading/bookapi/multi-detail/v/?book_type=0&from=2&book_id={{$.book_id}}&get_related_audio_infos=0&iid=3626627309538941&device_id=62070595540&ac=wifi&mac_address=7C%3A03%3AAB%3A73%3A27%3A7E&channel=novel_xiaomi2020_306_yz1&aid=1967&app_name=novelapp&version_code=306&version_name=3.0.6.17&device_platform=android&ssmix=a&device_type=MI+PAD+4&device_brand=Xiaomi&language=zh&os_api=27&os_version=8.1.0", 38 | "coverUrl": "$.thumb_url", 39 | "intro": "$.abstract", 40 | "kind": "{{$.source}}\n{{$.category}}\n{{$.complete_category}}\n{{$.tags}}", 41 | "lastChapter": "", 42 | "name": "$.book_name", 43 | "wordCount": "$..word_number" 44 | }, 45 | "ruleSearch": { 46 | "author": "$.author##|", 47 | "bookList": "$.data.ret_data.*||$..book_data[*]||$..book_info[*]", 48 | "bookUrl": "https://api5-normal-sinfonlineb.fqnovel.com/reading/bookapi/multi-detail/v/?aid=1967&iid=1&version_code=999&book_id={{java.get(\"book_id\")}}", 49 | "checkKeyWord": "转生三无猫娘,成神的我只想摸鱼", 50 | "coverUrl": "$.thumb_url", 51 | "intro": "$.abstract", 52 | "kind": "$.category&&$.tags", 53 | "lastChapter": "", 54 | "name": "$.book_name||$.title\n\njava.put(\"book_id\", java.getString(\"$.book_id\"))\nresult\n\n##||《|》", 55 | "wordCount": "连载{{$.creation_status}}完本##连载0|1完本" 56 | }, 57 | "ruleToc": { 58 | "chapterList": "$.data.chapterListWithVolume.*.*", 59 | "chapterName": "$.title", 60 | "chapterUrl": "@js:\nsource.bookSourceUrl + `/content?item_id={{$.itemId}}`", 61 | "isVip": "", 62 | "isVolume": "", 63 | "updateTime": "$.info" 64 | }, 65 | "searchUrl": "/search?query={{key}}", 66 | "weight": 0 67 | } 68 | ] -------------------------------------------------------------------------------- /lk-lightnovel-us.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "bookSourceComment": "酷安 @吉王义昊\nGitHub:https://github.com/jiwangyihao/source-j-legado\n\n# 关于许可的额外声明(在线版本参见 GitHub,以在线版本为准)\n\n- 当许可证与本声明冲突时,以本声明为准;\n- 对于本仓库中的任意代码片段:按照 `MPL 2.0` 中有关约定执行;\n- 对于本仓库中的某一完整书源的转载或二次开发,需满足以下全部条件:\n - 在[本仓库](https://github.com/jiwangyihao/source-j-legado)的 `issue` 中提出请求并具体说明转载地址、二次开发后的书源开源地址以及其他必要信息;\n - 等待原作者(即本仓库的初始所有者和初始代码贡献者 [@jiwangyihao](https://github.com/jiwangyihao))查看并通过 `issue` 或依据原作者要求更改转载方式或补充更详细的信息。\n - 考虑到本项目弃坑的可能,新 `issue` 开启后超过 20 个工作日原作者没有回复或者原作者回复要求更改的 `issue` 在更改后超过 20 个工作日原作者没有回复即视为原作者通过该 `issue`:\n - 此处的 `issue` 仅包括在[本仓库](https://github.com/jiwangyihao/source-j-legado)开启的,处于「开启状态」的 issue。(也就是说,请不要在已经关闭的 issue 中回复)。\n - 对于此种方式通过的 issue,转载/二次开发者仍应当遵守本声明中已经写明的相关约定。\n - 不得上传至源仓库或整理至`非轻小说专用`的书源合集中并应当避免其他人将转载/二次开发版本上传至源仓库或整理至`非轻小说专用`的书源合集中:\n - 关于轻小说的定义的额外说明:不包括国内的原创网络文学作品(如 `SF 轻小说` 中的原创轻小说以及`起点中文网`中标签包含轻小说的作品)。\n - 轻小说专用的定义:有且仅有想看轻小说的人可能会添加。\n - 必须在转载/二次开发地址的明显位置完整包含本声明的全部内容。\n - 必须保留源注释中原有的更改记录。\n\n搜索时只会搜索合集,加载目录失败很可能是这个合集是空的,无法处理[流汗滑稽]\n\n小说简介和正文都添加了评论,不想看的话可以把书源规则里相关代码删了\n\n默认图片样式是TEXT,这是为了方便看评论里的表情包(\n\n想看漫画的话可以自行更改为FULL\n\n漫画长时间处于加载中或者加载失败很可能是因为原帖中用的图床挂了或者被墙了,无法处理[流汗滑稽]\n\n发现没做一是因为里面各种类型的帖子混在一起,太复杂,二是因为我用不着[受虐滑稽]\n\n!!非常重要:\n使用前需要先登录,登录界面是电脑版网页,可能需要找一下登录按钮在哪[流汗滑稽]\n(不确定现在是不是还有)账号需要通过勇者测试\n点登录没反应可能是ip被ban了或者访问频率过高,着急的话可以换下ip\n\n2024.4.8\n酷安@吉王义昊\n使用JSON格式重写了部分规则\n处理了3.24.040501中无法使用的问题", 4 | "bookSourceGroup": "轻小说,需要登录", 5 | "bookSourceName": "lk轻之国度", 6 | "bookSourceType": 0, 7 | "bookSourceUrl": "https://www.lightnovel.fun/", 8 | "customOrder": 0, 9 | "enabled": true, 10 | "enabledCookieJar": true, 11 | "enabledExplore": true, 12 | "exploreUrl": "@js:\nvar result = [];\nvar BaseUrl = \"https://www.lightnovel.fun\";\nvar baseBody = {\n \"is_encrypted\": 0,\n \"platform\": \"pc\",\n \"client\": \"web\",\n \"sign\": \"\",\n \"gz\": 0,\n \"d\": {\n \"parent_gid\": 3,\n \"security_key\": JSON.parse(decodeURIComponent(cookie.getKey(BaseUrl, \"token\"))).security_key\n }\n};\nvar headers = {\n\t \"User-Agent\": \"Mozilla/5.0 (Android 11; Mobile; rv:142.0) Gecko/142.0 Firefox/142.0\",\n \"Content-Type\": \"application/json\",\n \"Cookie\": cookie.getCookie(BaseUrl)\n};\n[\n [\"轻小说\", 3],\n [\"漫画\", 33]\n].forEach(([tag, id]) => {\n result.push({\n title: tag,\n url: null,\n style: {\n layout_flexGrow: 1,\n layout_flexBasisPercent: 1\n }\n });\n baseBody.d.parent_gid = id;\n let sorts = java.post(BaseUrl + \"/proxy/api/category/get-categories\", JSON.stringify(baseBody), headers).body();\n JSON.parse(sorts).data.forEach(sort => {\n let url = BaseUrl + \"/proxy/api/category/get-article-by-cate,\";\n baseBody.d.gid = sort.gid;\n baseBody.d.page = \"{{page === 1 ? 1 : source.getVariable()}}\";\n url += JSON.stringify({\n \"body\": JSON.stringify(baseBody),\n \"headers\": headers,\n \"method\": \"POST\"\n });\n result.push({\n title: sort.name,\n url: url,\n style: {\n layout_flexGrow: 1,\n layout_flexBasisPercent: tag === \"漫画\" ? 0.2 : 0.25\n }\n });\n })\n});\nJSON.stringify(result);", 13 | "header": "{\n\t \"User-Agent\": \"Mozilla/5.0 (Android 11; Mobile; rv:142.0) Gecko/142.0 Firefox/142.0\",\n \"Referer\": \"https://www.lightnovel.fun/\"\n}", 14 | "lastUpdateTime": 1760187725405, 15 | "loginCheckJs": "if (/category/.test(result.url())) {\n const originUrl = java.ruleUrl;\n const filterID = [0, 5];\n let nextPage = page === 1 ? 2 : +source.getVariable() + 1;\n let Data = JSON.parse(result.body());\n let maxPage = Math.ceil(Data.data.page_info.count / 20);\n let bookList = Data?.data?.list?.filter(item => !filterID.includes(item.sid)) || [];\n\n /*\n \t*过滤后数据为空时,翻页请求获取新数据\n *限制单次翻页,避免陷入死循环\n */\n let retryCount = 0;\n let currentUrl = originUrl;\n while (bookList.length === 0 && retryCount < 5 && nextPage <= maxPage) {\n currentUrl = String(currentUrl).replace(/\\\\\"page\\\\\":\\\\\"(\\d+)\\\\\"/g, (match, pageNum) => {\n return `\\\\\"page\\\\\":\\\\\"${+pageNum + 1}\\\\\"`;\n });\n bookList = JSON.parse(java.ajax(currentUrl))?.data?.list?.filter(item => !filterID.includes(item.sid)) || [];\n retryCount++;\n nextPage++;\n if (bookList.length > 0) {\n break;\n }\n }\n //java.log(nextPage);\n // 利用源变量代替page变量作为页码\n source.setVariable(nextPage);\n result = Packages.io.legado.app.help.http.StrResponse(result.url(), JSON.stringify(bookList));\n}\n\nresult;", 16 | "loginUrl": "https://www.lightnovel.fun/", 17 | "respondTime": 180000, 18 | "ruleBookInfo": { 19 | "author": "$.series.author", 20 | "coverUrl": "$.series.cover", 21 | "init": "\njsContent=src.match(/