Skip to content

Commit 70796d3

Browse files
committed
书源|自动更新
1 parent ea54e57 commit 70796d3

20 files changed

+10787
-890480
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ https://github.com/shidahuilang/shuyuan/blob/shuyuan/香色闺阁app-大灰狼
3535
https://raw.githubusercontent.com/shidahuilang/shuyuan/refs/heads/shuyuan/你的益达app-大灰狼融合4.0.yds
3636
```
3737

38-
**自动更新时间** 2025-09-22 18:06:42 CST+0800
38+
**自动更新时间** 2025-09-22 18:31:14 CST+0800
3939
#### 🚩 最新阅读书源修复-每隔3天自动更新一次(安卓阅读3.0+读不舍手+千阅+源阅读+花火阅读通用)
4040
#### 🚩 获取后的书源会自动效验
4141

4242
<!-- 更新位置开始 -->
4343
| 阅读源总数 | 有效书源数 | 无效书源数 | 重复书源数 |
4444
|------------|------------|------------|--------------|
45-
| <span style="color:green;">7100</span> | <span style="color:blue;">3830</span> | <span style="color:red;">3270</span> | <span style="color:orange;">2064</span> |
45+
| <span style="color:green;">2334</span> | <span style="color:blue;">1185</span> | <span style="color:red;">1149</span> | <span style="color:orange;">0</span> |
4646
<!-- 更新位置结束 -->
4747
![shuyuan.png](icons/shuyuan.png)
4848
#### 🚩 效验书源链接
@@ -63,7 +63,7 @@ https://raw.githubusercontent.com/shidahuilang/shuyuan/shuyuan/tts.json
6363

6464
#### 🚩 香色闺阁-每隔3天自动更新一次
6565

66-
**自动更新时间** 2025-09-22 18:06:42 CST+0800
66+
**自动更新时间** 2025-09-22 18:31:14 CST+0800
6767
``` bash
6868
https://raw.githubusercontent.com/shidahuilang/shuyuan/shuyuan/sourceModelList.xbs
6969
```

book.json

Lines changed: 201 additions & 243171 deletions
Large diffs are not rendered by default.

error.json

Lines changed: 1525 additions & 108954 deletions
Large diffs are not rendered by default.

good.json

Lines changed: 8578 additions & 51926 deletions
Large diffs are not rendered by default.

shuyuan_data.json

Lines changed: 201 additions & 210 deletions
Large diffs are not rendered by default.

shuyuan_data/6444.json

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
[
2+
{
3+
"bookSourceComment": "//2025.5.20 ◎夜泽川◎\n//2025.8.3 修复 ◎夜泽川◎\n//2025.8.21 添加账号登录,内置一个公共账号(输入框置空直接点击登陆即可) ◎夜泽川◎",
4+
"bookSourceGroup": "自制,漫画",
5+
"bookSourceName": "🥝猕猴桃漫画",
6+
"bookSourceType": 2,
7+
"bookSourceUrl": "https://www.mwwz.cc",
8+
"customOrder": 1,
9+
"enabled": true,
10+
"enabledCookieJar": true,
11+
"enabledExplore": true,
12+
"exploreUrl": "@js:\nvar result = [];\nvar push = (title, tag, p, size) => result.push({\n title: title,\n url: `{{Url()}}/api${p}` + \",\" + JSON.stringify({\n \"body\": `{\\\"page\\\":{\\\"page\\\":{{page}},\\\"pageSize\\\":10},\\\"category\\\":\\\"comic\\\",\\\"sort\\\":0,\\\"comic\\\":{\\\"status\\\":-1,\\\"day\\\":0,\\\"tag\\\":\\\"${tag}\\\"},\\\"video\\\":{\\\"year\\\":0,\\\"typeId\\\":0,\\\"typeId1\\\":0,\\\"area\\\":\\\"\\\",\\\"lang\\\":\\\"\\\",\\\"status\\\":-1,\\\"day\\\":0},\\\"novel\\\":{\\\"status\\\":-1,\\\"day\\\":0,\\\"sortId\\\":0}}`,\n \"method\": \"POST\"\n}),\n style: {\n layout_flexGrow: 1,\n layout_flexBasisPercent: size\n }\n});\nvar tags = org.jsoup.Jsoup.parse(java.ajax(Url() + '/cate')).select('.tag-container').toArray().at(-1).select('a');\nfor (let i in tags) {\n\tlet size = i == 0 ? 1 : 0.25;\n\tpush(tags[i].text(), tags[i].attr('data-value'), tags[i].attr('href'), size);\n}\nJSON.stringify(result);",
13+
"header": "{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 9) Mobile Safari/537.36\",\"Referer\":\"https://www.mhtmh.com\"}",
14+
"jsLib": "function Url() {\n const { source, java } = this;\n var original = {\n \"sourceurl\": \"https://www.mhtmh.com\",\n \"Urls\": []\n };\n if (source.getVariable() == '') {\n source.setVariable(JSON.stringify(original, null, \"\\t\"));\n java.toast('已初始化');\n }\n return JSON.parse(source.getVariable()).sourceurl;\n}",
15+
"lastUpdateTime": "1758445498807",
16+
"loginUi": "[\n {\n \"name\": \"获取站源\",\n \"type\": \"button\",\n \"action\": \"getUrl()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 1\n }\n },\n {\n \"name\": \"①\",\n \"type\": \"button\",\n \"action\": \"setUrl(0)\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n },\n {\n \"name\": \"②\",\n \"type\": \"button\",\n \"action\": \"setUrl(1)\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n },\n {\n \"name\": \"③\",\n \"type\": \"button\",\n \"action\": \"setUrl(2)\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n },\n {\n \"name\": \"④\",\n \"type\": \"button\",\n \"action\": \"setUrl(3)\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n },\n {\n \"name\": \"用户名(3-50个字符)\",\n \"type\": \"text\"\n },\n {\n \"name\": \"邮箱(注册填入)\",\n \"type\": \"text\"\n },\n {\n \"name\": \"密码(6-20个字符)\",\n \"type\": \"password\"\n },\n {\n \"name\": \"注册\",\n \"type\": \"button\",\n \"action\": \"register()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n },\n {\n \"name\": \"登录\",\n \"type\": \"button\",\n \"action\": \"Login()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n },\n {\n \"name\": \"登出\",\n \"type\": \"button\",\n \"action\": \"LoginOut()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": 0.2\n }\n }\n]",
17+
"loginUrl": "Url();\n\nfunction getUrl() {\n try {\n let urls = Array.from(org.jsoup.Jsoup.parse(java.get(\"https://www.manwaku.cc/\", {}).body()).select('.cards a'), x => x.attr('href'));\n if (urls.length === 0) throw new Error('未获取到站源');\n let data = JSON.parse(source.getVariable());\n data.Urls = urls;\n source.setVariable(JSON.stringify(data, null, \"\\t\"));\n java.toast(`获取到${urls.length}个站源\\n${urls.join('\\n')}`);\n } catch (e) {\n java.log(e.message)\n java.toast('获取失败,请检查网络');\n }\n}\n\nfunction setUrl(n) {\n let data = JSON.parse(source.getVariable());\n if (n + 1 > data.Urls.length) return java.toast(`暂时没有站源${n + 1}`);\n data.sourceurl = data.Urls[n];\n source.setVariable(JSON.stringify(data, null, \"\\t\"));\n java.toast(`当前站源已切换到:\\n${data.Urls[n]}`);\n}\n\nfunction login() {}\n\nfunction Login() {\n let username = String(result?.[\"用户名(3-50个字符)\"] ?? '') || \"axb\";\n let password = String(result?.[\"密码(6-20个字符)\"] ?? '') || \"123456789@\";\n let url = `${Url()}/api/user/login`;\n try {\n let response = JSON.parse(java.post(url, JSON.stringify({\n username,\n password\n }), {\n \"x-requested-with\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\"\n }).body());\n if (!/successful/.test(response.msg)) return java.toast(response.msg);\n let token = response.data.token;\n source.putLoginHeader(JSON.stringify({\n \"Authorization\": \"Bearer \" + token,\n \"Cookie\": \"authToken=\" + token\n }));\n java.toast(`\\n用户:${username}\\n登录成功!`);\n } catch (e) {\n java.log(e.message);\n java.toast('请求失败,请检查网络状况!');\n }\n}\n\nfunction LoginOut() {\n source.removeLoginHeader();\n cookie.removeCookie(Url());\n java.toast('登出成功!');\n}\n\nfunction register() {\n let username = result?.[\"用户名(3-50个字符)\"] ?? '';\n let password = result?.[\"密码(6-20个字符)\"] ?? '';\n let email = result?.[\"邮箱(注册填入)\"] ?? '';\n if (!String(username) || !String(password) || !String(email)) return java.toast('请填入必要数据');\n if (String(username).length < 3 || String(username).length > 50) return java.toast('用户名不符合要求');\n if (String(password).length < 6 || String(password).length > 20) return java.toast('密码不符合要求');\n try {\n let url = `${Url()}/api/user/register`;\n let body = JSON.stringify({\n username,\n password,\n email,\n \"nickname\": username\n });\n let response = JSON.parse(java.post(url, body, {\n \"x-requested-with\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\"\n }).body());\n if (!/successful/.test(response.msg)) return java.toast(response.msg);\n java.log(`\\n用户名:${username}\\n注册邮箱:${email}\\n密码:${password}`);\n let token = response.data.token;\n source.putLoginInfo(JSON.stringify(result));\n source.putLoginHeader(JSON.stringify({\n \"Authorization\": \"Bearer \" + token,\n \"Cookie\": \"authToken=\" + token\n }));\n java.toast(`\\n用户:${username}\\n注册并登录成功!\\n用户数据已打印至源日志`);\n } catch (e) {\n java.log(e.message);\n java.toast('请求失败,请检查网络状况!');\n }\n}",
18+
"respondTime": 180000,
19+
"ruleBookInfo": {
20+
"author": "$.author",
21+
"coverUrl": "$.cover",
22+
"init": "$.data",
23+
"intro": "@js:\nvar $ = result;\n`&nbsp;&nbsp;当前站源:${JSON.parse(source.getVariable()).sourceurl}\\n上架时间:${java.timeFormat($.createTime * 1000)}\\n更新时间:${java.timeFormat($.editTime * 1000)}\\n简介:${$.intro}`;",
24+
"kind": "@js:var $ = result;\n$.tags + ',' + java.timeFormat($.editTime * 1000);",
25+
"name": "$.title",
26+
"tocUrl": "{{Url()}}/comic/{{$.id}}"
27+
},
28+
"ruleContent": {
29+
"content": "@js:var imglist = JSON.parse(src).data.images\nresult = imglist.map(x => `<img src=\"${x.url}\">`).join('\\n');",
30+
"imageStyle": "FULL",
31+
"nextContentUrl": "@js:var pageList = [];\nlet Data = JSON.parse(src).data.pagination;\nvar page = Math.ceil(Data.total / Data.page_size);\nfor (let i = 2;i <= page;i++) {\npageList.push(baseUrl.replace(\"page=1\",`page=${i}`));\n}\npageList;"
32+
},
33+
"ruleExplore": {
34+
"author": "$.author",
35+
"bookList": "$.data.list[*]",
36+
"bookUrl": "{{Url()}}/api/comic/{{$.url##[^\\d]}}",
37+
"coverUrl": "$.pic",
38+
"intro": "$.intro",
39+
"kind": "$.tags",
40+
"name": "$.title"
41+
},
42+
"ruleSearch": {
43+
"author": "$.author",
44+
"bookList": "$.data.list[*]",
45+
"bookUrl": "{{Url()}}/api/comic/{{$.id}}",
46+
"coverUrl": "$.cover",
47+
"intro": "$.description",
48+
"kind": "@js:var $ = result;\n$.tags + ',' + java.timeFormat($.editTime * 1000);",
49+
"name": "$.title"
50+
},
51+
"ruleToc": {
52+
"chapterList": "#chapter-grid-container a",
53+
"chapterName": "[class$=\"name\"]@text",
54+
"chapterUrl": "href##(\\d+)$##/api/comic/image/$1?page=1###",
55+
"preUpdateJs": "var sourceUL = Url();\nif (!String(book.bookUrl).includes(sourceUL)) {\n book.bookUrl = String(book.bookUrl).replace(/https?:\\/\\/[^\\/]+/,sourceUL);\n book.tocUrl = String(book.tocUrl).replace(/https?:\\/\\/[^\\/]+/,sourceUL);\n java.toast(\"\\n检测到切换源站,已更新目录链接。\");\n java.refreshTocUrl();\n}",
56+
"updateTime": "span@text##\\n##|"
57+
},
58+
"searchUrl": "{{Url()}}/api/search?keyword={{key}}&type=mh&page={{page}}&pageSize=20",
59+
"weight": 0
60+
}
61+
]

0 commit comments

Comments
 (0)