-
Notifications
You must be signed in to change notification settings - Fork 0
/
0.json
504 lines (504 loc) · 45.8 KB
/
0.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
[
{
"bookSourceComment": "本书源修改自关耳010225\n在【源变量】里输入token即可登陆\n现在能看的VIP章节url的versionCode最大是381",
"bookSourceGroup": "正版",
"bookSourceName": "晋江文学",
"bookSourceType": 0,
"bookSourceUrl": "https://www.jjwxc.net/",
"bookUrlPattern": "\\S*jjwxc\\S*novelId=\\d+",
"customOrder": -100,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"exploreUrl": "@js:\n// 生成 URL 的通用函数\nfunction generateUrl(channelId, isNumericChannel) {\n var baseUrl = \"https://app.jjwxc.org/bookstore/getFullPageV1\";\n var limit = isNumericChannel ? 25 : 20;\n var channelBody = `%7B%22${channelId}%22%3A%7B%22offset%22%3A%22{{(page-1)*${limit}}}%22%2C%22limit%22%3A%22${limit}%22%7D%7D`;\n return `${baseUrl}?versionCode=413&channelBody=${channelBody}&channelMore=1`;\n}\n\n// 判断 channelId 是否为纯数字的函数\nfunction isNumeric(value) {\n return /^\\d+$/.test(value);\n}\n\n// 定义类别和它们对应的 channelId\nvar categories = [\n { title: \"言情\", channelId: \"\" },\r\n { title: \"月度排行榜\", channelId: \"natural_592\" },\r\n { title: \"季度排行榜\", channelId: \"natural_593\" },\r\n { title: \"半年排行榜\", channelId: \"natural_594\" },\r\n { title: \"新晋作者榜\", channelId: \"natural_591\" },\r\n { title: \"长生殿排行榜\", channelId: \"natural_595\" },\r\n { title: \"勤奋指数榜\", channelId: \"natural_1477\" },\r\n { title: \"完结金榜\", channelId: \"natural_781\" },\r\n { title: \"字数榜\", channelId: \"natural_729\" },\r\n { title: \"霸王票总榜\", channelId: \"natural_725\" },\r\n { title: \"读者栽培榜\", channelId: \"natural_653\" },\r\n { title: \"驻站作者榜\", channelId: \"natural_590\" },\r\n { title: \"总分榜\", channelId: \"natural_828\" },\r\n { title: \"VIP金榜\", channelId: \"natural_822\" },\r\n { title: \"古代言情\", channelId: \"10000012\" },\r\n { title: \"现代言情\", channelId: \"10000013\" },\r\n { title: \"幻想现言\", channelId: \"10000014\" },\r\n { title: \"古代穿越\", channelId: \"10000015\" },\r\n { title: \"奇幻言情\", channelId: \"10000016\" },\r\n { title: \"未来游戏悬疑\", channelId: \"10000017\" },\r\n { title: \"衍生言情\", channelId: \"10000019\" },\r\n { title: \"二次元言情\", channelId: \"10000018\" },\r\n { title: \"古言完结\", channelId: \"10000020\" },\r\n { title: \"现言完结\", channelId: \"10000021\" },\r\n { title: \"衍生言情完结\", channelId: \"10000022\" },\r\n { title: \"完结半价包月\", channelId: \"10000023\" },\r\n { title: \"期中千字榜\", channelId: \"90000001\" },\n { title: \"纯爱\", channelId: \"\" },\n { title: \"月度排行榜\", channelId: \"natural_604\" },\n { title: \"季度排行榜\", channelId: \"natural_605\" },\n { title: \"半年排行榜\", channelId: \"natural_606\" },\n { title: \"新晋作者榜\", channelId: \"natural_603\" },\n { title: \"长生殿排行榜\", channelId: \"natural_607\" },\n { title: \"勤奋指数榜\", channelId: \"natural_1479\" },\n { title: \"完结金榜\", channelId: \"natural_783\" },\n { title: \"字数榜\", channelId: \"natural_731\" },\n { title: \"霸王票总榜\", channelId: \"natural_727\" },\n { title: \"读者栽培榜\", channelId: \"natural_655\" },\n { title: \"驻站作者榜\", channelId: \"natural_602\" },\n { title: \"总分榜\", channelId: \"natural_830\" },\n { title: \"衍生\", channelId: \"\" },\n { title: \"月度排行榜\", channelId: \"natural_610\" },\n { title: \"季度排行榜\", channelId: \"natural_611\" },\n { title: \"半年排行榜\", channelId: \"natural_612\" },\n { title: \"新晋作者榜\", channelId: \"natural_609\" },\n { title: \"长生殿排行榜\", channelId: \"natural_613\" },\n { title: \"勤奋指数榜\", channelId: \"natural_1480\" },\n { title: \"完结金榜\", channelId: \"natural_784\" },\n { title: \"字数榜\", channelId: \"natural_732\" },\n { title: \"霸王票总榜\", channelId: \"natural_728\" },\n { title: \"读者栽培榜\", channelId: \"natural_656\" },\n { title: \"驻站作者榜\", channelId: \"natural_608\" },\n { title: \"总分榜\", channelId: \"natural_831\" },\n { title: \"无CP+\", channelId: \"\" },\n { title: \"月度排行榜\", channelId: \"natural_888\" },\n { title: \"季度排行榜\", channelId: \"natural_887\" },\n { title: \"半年排行榜\", channelId: \"natural_889\" },\n { title: \"新晋作者榜\", channelId: \"natural_890\" },\n { title: \"长生殿排行榜\", channelId: \"natural_891\" },\n { title: \"勤奋指数榜\", channelId: \"natural_1481\" },\n { title: \"完结金榜\", channelId: \"natural_896\" },\n { title: \"字数榜\", channelId: \"natural_895\" },\n { title: \"霸王票总榜\", channelId: \"natural_894\" },\n { title: \"读者栽培榜\", channelId: \"natural_893\" },\n { title: \"驻站作者榜\", channelId: \"natural_892\" },\n { title: \"总分榜\", channelId: \"natural_903\" },\n { title: \"百合\", channelId: \"\" },\n { title: \"月度排行榜\", channelId: \"natural_1043\" },\n { title: \"季度排行榜\", channelId: \"natural_1042\" },\n { title: \"半年排行榜\", channelId: \"natural_1044\" },\n { title: \"新晋作者榜\", channelId: \"natural_1045\" },\n { title: \"长生殿排行榜\", channelId: \"natural_1046\" },\n { title: \"勤奋指数榜\", channelId: \"natural_1490\" },\n { title: \"完结金榜\", channelId: \"natural_1050\" },\n { title: \"字数榜\", channelId: \"natural_1074\" },\n { title: \"霸王票总榜\", channelId: \"natural_1049\" },\n { title: \"读者栽培榜\", channelId: \"natural_1048\" },\n { title: \"驻站作者榜\", channelId: \"natural_1047\" },\n { title: \"总分榜\", channelId: \"natural_1052\" },\n { title: \"原创\", channelId: \"\" },\n { title: \"月度排行榜\", channelId: \"natural_598\" },\n { title: \"季度排行榜\", channelId: \"natural_599\" },\n { title: \"半年排行榜\", channelId: \"natural_600\" },\n { title: \"新晋作者榜\", channelId: \"natural_597\" },\n { title: \"长生殿排行榜\", channelId: \"natural_601\" },\n { title: \"勤奋指数榜\", channelId: \"natural_1478\" },\n { title: \"完结金榜\", channelId: \"natural_782\" },\n { title: \"字数榜\", channelId: \"natural_730\" },\n { title: \"霸王票总榜\", channelId: \"natural_726\" },\n { title: \"读者栽培榜\", channelId: \"natural_654\" },\n { title: \"驻站作者榜\", channelId: \"natural_596\" },\n { title: \"总分榜\", channelId: \"natural_829\" }\r\n];\n\n// 为每个类别生成 URL 和样式\nvar result = categories.map(function(category) {\n var url = category.channelId \n ? generateUrl(category.channelId, isNumeric(category.channelId) || category.title == \"VIP金榜\") \n : \"\";\n\n return {\n title: category.title,\n url: url,\n style: { layout_flexGrow: 1, layout_flexBasisPercent: category.channelId ? 0.2 : 1 }\n };\n});\n\n// 获取 token 和时间戳\nvar token = source.getVariable();\nvar timestamp = Math.round(new Date() / 1000);\n\n// 定义 sign 生成的逻辑\nfunction generateSign(token, timestamp) {\n var crypto = java.createSymmetricCrypto(\"DES/CBC/PKCS5Padding\", \"KW8Dvm2N\", \"1ae2c94b\");\n var payload = `${timestamp}:${token}`;\n return crypto.encryptBase64(payload);\n}\n\n// 拼接附加数据\nvar additionalData = [\n { \n title: \"我的收藏[尚未分类]\",\n url: `https://app.jjwxc.org/androidapi/incrementFavorite?versionCode=413&token=${token}&classId=0&backupTime=${timestamp}&order=0`,\n style: { layout_flexGrow: 1, layout_flexBasisPercent: 0.2 }\n },\n {\n \t title: \"点击签到\",\n \t url: `https://app.jjwxc.org/androidapi/signin,{\"method\": 'POST',\"body\": 'versionCode=413&sign=${generateSign(token, timestamp)}'}`,\n \t style: { layout_flexGrow: 1, layout_flexBasisPercent: 0.2 }\n \t},\n {\n title: \"今日限免\",\n url: \"https://app-cdn.jjwxc.com/bookstore/getFullPageV1?channel=member_free_index&version=16\",\n style: { layout_flexGrow: 1, layout_flexBasisPercent: 0.2 }\n },\n {\n title: \"新文千字榜\",\n url: \"https://app-cdn.jjwxc.com/bookstore/favObservationByDate?day=today&use_cdn=1&version=16\",\n style: { layout_flexGrow: 1, layout_flexBasisPercent: 0.2 }\n }\n];\n\n// 将附加数据放在开头\nvar finalResult = additionalData.concat(result);\n\n// 输出最终结果\nJSON.stringify(finalResult);",
"header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 2201123C Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Safari/537.36/JINJIANG-Android/413(2201123C;Scale/1.75;isHarmonyOS/false)\"}",
"lastUpdateTime": 1735199163981,
"respondTime": 2461,
"ruleBookInfo": {
"author": "$.authorName",
"canReName": "1",
"coverUrl": "{{$.novelCover||$.localImg}},{\"headers\" : {'User-Agent': 'Dalvik/2.1.0'}}",
"intro": "<js>\nnovelId = java.getString(\"$.novelId\");\n\nnovelTags = String(java.getString(\"$.novelTags\")).replace(/^(?=\\S)|,(?=\\S)/g,\"🏷️\");\nmainview = \"视角:\" + java.getString(\"$.mainview\");\nprotagonist = String(java.getString(\"$.protagonist\"));\ncostar = String(java.getString(\"$.costar\"));\nother = String(java.getString(\"$.other\"));\nnovelIntroShort = \"一句话简介:\" + java.getString(\"$.novelIntroShort\");\nlittleintro = String(java.getString(\"$.novelIntro\"));\nlittleintro = littleintro.replace(/立意\\:/,\"立意:\");\nlittleintro = /立意:/.test(littleintro) ? littleintro.replace(/.*(立意:.*)/,\"$1\") : \"\";\ncomment_count = \"评论:\" + String(java.getString(\"$.comment_count\")).replace(/\\D/,\"\");\nnovelbefavoritedcount = \"收藏:\" + java.getString(\"$.novelbefavoritedcount\");\nnutrition_novel = \"灌溉:\" + java.getString(\"$.nutrition_novel\");\nnovelIntro = String(java.getString(\"$.novelIntro\")).replace(/立意\\:.*$/,\"\");\n\n// 置顶、作者公告\ncommentListurl = \"https://app.jjwxc.org/comment/getCommentList?versionCode=413&novelId=\" + novelId + \"&limit=5\";\nA = JSON.parse(java.ajax(commentListurl));\n\ntop = \"\";\nbulletin = \"\";\n\nif (A.code == \"200\" && A.data.commentTotal != \"0\") {\n is_top = A.data.commentList[0].is_top;\n commentAuthor = A.data.commentList[0].commentAuthor;\n commentBody = A.data.commentList[0].commentBody;\n ip_pos = A.data.commentList[0].ip_pos;\n commentDate = A.data.commentList[0].commentDate;\n\n if (is_top == \"1\") {\n top = commentAuthor + \" \" + commentDate + \" 来自\" + ip_pos + \" [置顶]🔝\\n\" + commentBody + \"<br>‎\";\n }\n\n if (A.data.commentList[0].bulletinComment == \"1\") {\n bulletin = \"作者公告 \" + commentDate + \" 来自\" + ip_pos + \"\\n\" + commentBody + \"<br>‎\";\n }\n}\n\nOtherInfoUrl = \"http://app.jjwxc.org/androidapi/getnovelOtherInfo?novelId=\"+novelId+\"&type=novelbasicinfo&versionCode=413\";\nB = JSON.parse(java.ajax(OtherInfoUrl));\n\n// 完结评分\nnovelreview = B.novelreview;\nnovelreview = novelreview.match(/\\d分/)?\"评分:\"+novelreview:\"\";\n\ncontentinfo = novelTags+\"\\n\"+novelIntroShort+\"\\n\"+mainview+\"\\n\"+protagonist+\"\\n\"+costar+\"\\n\"+other+\"\\n\"+littleintro+\"\\n\"+comment_count+\"\\n\"+novelbefavoritedcount+\"\\n\"+nutrition_novel+\"\\n\"+novelreview;\n\n// 抽奖\nnovelidPrizeTitle = B.novelidPrize.data.novelidPrizeTitle;\nnovelidPrizeCondition = B.novelidPrize.data.novelidPrizeCondition\nheadcount = B.novelidPrize.data.headcount;\nprize = B.novelidPrize.data.prize;\nreasonfordraw = B.novelidPrize.data.reasonfordraw;\nnovelidPrize = novelidPrizeTitle+\"\\n\"+reasonfordraw+\"\\n\"+novelidPrizeCondition+\" \"+headcount+\" \"+prize;\nnovelidPrize = /[\\u4e00-\\u9fa5]/.test(novelidPrizeTitle)?novelidPrize+\"<br>‎\":\"\";\n\n// 请假条\nleaveDateBack = B.novelLeave.leaveDateBack;\nleaveContent = B.novelLeave.leaveContent;\nleaveDate = B.novelLeave.leaveDate;\nnovelLeave = leaveDateBack+\"\\n\"+leaveContent+\"\\n\"+leaveDate;\nnovelLeave = /[\\u4e00-\\u9fa5]/.test(leaveDateBack)?novelLeave+\"<br>‎\":\"\";\n\n\nINTRO = String(top).length > 160 ?\n `\\t${novelLeave}\\n${novelidPrize}\\n${bulletin}\\n${contentinfo}\\n‎\\n${novelIntro}<br>‎\\n${top}` :\n `\\t${novelLeave}\\n${novelidPrize}\\n${bulletin}\\n${top}\\n${contentinfo}\\n‎\\n${novelIntro}`;\n</js>\n##主角:\\n|配角:\\n|其它:\\n|立意:\\s",
"kind": "<js>\nnovelStep = java.getString(\"$.novelStep\");\nnovelStatus = novelStep == \"0\" ? \"暂停\" : novelStep == \"1\" ? \"连载\" : \"完结\";\nresult = `${java.getString(\"$.novelClass\")},${novelStatus},${java.getString(\"$.chapterdateNewest\")}`;\n</js>",
"lastChapter": "{{java.getString(\"$.isVip\") == \"1\" ? \"💸\" : \"\"}}第{{$.maxChapterId}}章 {{$.chapterdateNewest}}",
"name": "$.novelName",
"tocUrl": "https://app-cdn.jjwxc.com/androidapi/chapterList?novelId={{$.novelId}}&more=0&whole=1",
"wordCount": "$.novelSize##\\D"
},
"ruleContent": {
"content": "<js>\nfunction decode() {\n\tlet date = \"Mobile \" + Date.now();\n\tlet response = java.get(baseUrl, {\"User-Agent\": String(date)});\n\tlet accesskey = String(response.header(\"accesskey\"));\n\tlet keyString = String(response.header(\"keystring\"));\n\tlet content = String(response.body());\n\tlet accesskeyLen = accesskey.length;\n\n\tlet v9 = Array.from(accesskey).reduce((sum, char) => sum + String(char).charCodeAt(), 0);\n\tlet v15 = v9 % keyString.length;\n\tlet v17 = Math.floor(v9 / 65);\n\tlet v43 = keyString.substring(v15, (v17 + v15 > keyString.length) ? (keyString.length - v15 + v15) : (v17 + v15));\n\n\tlet v6 = String(accesskey[accesskeyLen - 1]).charCodeAt();\n\tlet v32 = content.length;\n\tlet [v38, dest] = (v6 & 1) != 0 \n\t\t? [content.substring(v32 - 12), content.substring(0, v32 - 12)] \n\t\t: [content.substring(0, 12), content.substring(12)];\n\n\tlet key = java.md5Encode(v43 + v38).substring(0, 8);\n\tlet iv = java.md5Encode(v38).substring(0, 8);\n\treturn java.createSymmetricCrypto(\"DES/CBC/PKCS5Padding\", String(key), String(iv)).decryptStr(dest);\n}\n\nkey = source.getVariable();\nextend = book.getVariable(\"custom\");\nnovelid = java.get(\"novelId\");\nchapterid = java.get(\"chapterId\");\nisvip = java.get(\"isVip\");\n\nif (isvip == \"0\") {\n content = java.getString(\"$.content\");\n upDown = java.getString(\"$.upDown\");\n saybody = java.getString(\"$.sayBody\");\n message = java.getString(\"$.message\");\n} else {\n if (/content/.test(result)) {\n java.setContent(result);\n } else {\n java.setContent(decode());\n }\n\n content = java.getString(\"$..content\");\n if (String(content).length > 30) {\n content = java.createSymmetricCrypto(\"DES/CBC/PKCS5Padding\", \"KW8Dvm2N\", \"1ae2c94b\").decryptStr(content);\n } else {\n content = \"\";\n }\n\n upDown = java.getString(\"$..upDown\");\n saybody = java.getString(\"$..sayBody\");\n message = java.getString(\"$..message\");\n buy_ratio = java.getString(\"$..buy_ratio\");\n reader_buy_ratio = java.getString(\"$..reader_buy_ratio\");\n};\n\nchapterintro = java.get(\"chapterintro\");\npointMeassge = java.get(\"pointmeassge\");\n\ncontent1 = `\\t${chapterintro}\\n${message}`;\nif (pointMeassge != \"0晋江币\") {\n content1 += \"\\n价格:\" + pointMeassge + \"(APP专享价)\";\n}\nif (/免费赠送的福利番外/.test(message)) {\n content1 += \"\\n本福利番外赠送给正文订阅率达到\" + buy_ratio + \"的读者\\n您截止至上一章的正文订阅率:\" + reader_buy_ratio;\n}\nsaybody = saybody != \"\" && !/关闭作话/.test(extend) ? `\\t▍作者有话说:${saybody}` : \"\";\nContent = content == \"\" ? content1 : (upDown == \"0\" ? `${saybody}\\n‎\\n${content}` : `${content}\\n${saybody}`);\n\ncommentnum = String(extend).replace(/\\D+/g, \"\");\nlimit = commentnum == \"\" ? \"5\" : commentnum;\n\nif (isvip == \"0\") {\n\tcommentUrl = `https://app.jjwxc.org/comment/getCommentList?versionCode=413&novelId=${novelid}&limit=${limit}&offset=0&commentSort=0&chapterId=${chapterid}`;\n\t} else {\n\tcommentUrl = `https://app.jjwxc.org/comment/getCommentList?versionCode=413&novelId=${novelid}&limit=${limit}&offset=0&commentSort=0&token=${key}&chapterId=${chapterid}`;\n\t}\n\nComment = /评论/.test(extend) ? JSON.parse(java.ajax(commentUrl)) : \"\";\nCommentcontent = \"\";\n\nif (Comment.code == \"200\") {\n commentList = Comment.data.commentList || [];\n \n if (commentList.length > 0) {\n Commentcontent = commentList.map(C => {\n let { commentBody, commentDate, commentAuthor, ip_pos, agreenum, commentMark, subscriptionrate } = C;\n return `•——————•——————•\\n👤${commentAuthor} ${commentDate} 来自${ip_pos} ${commentMark}分\\n${commentBody}\\n👍[${agreenum}] 💰${subscriptionrate}\\n`;\n }).join(\"\");\n }\n}\n\nCommentcontent = Commentcontent != \"\" ? `\\n‎\\n▍评论:\\n${Commentcontent}` : \"\";\n\nContent + Commentcontent;\n</js>",
"replaceRegex": "## undefined分|👍\\[(0|undefined)] |💰undefined|💰(?!\\d)\n@js:result.replace(/<br>/g,\"\\n\")"
},
"ruleExplore": {
"author": "$.authorName",
"bookList": "<js>\nif(baseUrl.match(/signin/)) {\n\tresult = \"{signIn:[\" + src + \"]}\";\n\t} else {\n\tresult = result;\n\t}\n</js>\n$.addData||$.data[0].data||$.data.data||$.data.novellist||$.data.list||$.signIn[*]",
"bookUrl": "https://app-cdn.jjwxc.com/androidapi/novelbasicinfo?novelId={{$.novelId}}",
"coverUrl": "{{$.cover||$.novelCover}},{\"headers\" : {'User-Agent': 'Dalvik/2.1.0'}}",
"intro": "<js>\nintro2 = java.getString(\"$.novelIntroShort||$.novelintroshort\");\ntags = String(java.getString(\"$.tags\")).replace(/^(?=\\S)|[,]/g,\"🏷️\");\nremarks = java.getString(\"$.remarks\");\nremarks = remarks == \"\" ? \"\" : \" 📝备注:\" + remarks;\nintro = intro2 + remarks + \"\\n‎\\n\" + tags;\n</js>",
"kind": "<js>\nnovelClass = String(java.getString(\"$.novelClass\"));\nnovelStep = java.getString(\"$.novelStep\");\nnovelStatus = novelStep == \"0\" ? \",暂停\" : (novelStep == \"1\" ? \",连载\" : \",完结\");\nnovelStatus = novelStep == \"\" ? \"\" : novelStatus;\nchapterDateNewest = java.getString(\"$.chapterdateNewest\");\nkind = `${novelClass}${novelStatus}${chapterDateNewest ? `,${chapterDateNewest}` : \"\"}`;\n</js>",
"lastChapter": "$.lastChapterId\n<js>\nlastChapterName = java.getString(\"$.lastChapterName\");\nlastChapterName = lastChapterName.replaceAll(\"[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*|(?=^)\\d+(?=$)\", \"\");\nlastChapterName = lastChapterName.isEmpty() ? \"\" : \" \" + lastChapterName;\nresult = result == \"\" ? \"\" : \"第\" + result + \"章\" + lastChapterName\n</js>",
"name": "$.novelName||$.message",
"wordCount": "$.novelSize||$.novelSizeformat\n@js:result.match(/^0万$/) ? \"0\" : result;"
},
"ruleSearch": {
"author": "td.0@a@text",
"bookList": "tr!0",
"bookUrl": "https://app-cdn.jjwxc.com/androidapi/novelbasicinfo?novelId={{@@td@a[title]@href##\\D+}}",
"intro": "td.1@a.0@title##简介:|标签:.*",
"kind": "{{@@td.2@text##(.*)-(.*)-.*-.*##$1,$2,}}{{@@td[align='center']!0@text}}",
"name": "td@a[title]@text",
"wordCount": "td.4@text##\\D"
},
"ruleToc": {
"chapterList": "$.chapterlist",
"chapterName": "<js>\nname = java.getString(\"$.chaptername\");\nchaptertype = java.getString(\"$.chaptertype\");\npointMeassge = java.getString(\"$.pointMeassge\");\nchapterMessage = java.getString(\"$.chapterMessage\") == \"福利番外\" ? \"🧧[福利番外]\" : \"\"; \njava.put(\"pointmeassge\",pointMeassge);\nchapterid = java.getString(\"$.chapterid\");\nislock = java.getString(\"$.islock\") == \"0\" ? \"\" : \"🔒[锁]\";\nisvip = java.getString(\"$.isvip\") == \"0\" ? \"\" : \"💸\";\nif (chaptertype == \"0\") {\n\tchaptername = String(name).replace(/[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*|(?=^)\\d+(?=$)|福利番外/g,\"\");\n\tchaptername = `${isvip}第${chapterid}章 ${chaptername}${chaptername == \"\" ? chapterMessage : \" \" + chapterMessage}${chaptername == \"\" ? islock : \" \" + islock}`;\n\t} else {\n\tvolumename = `📜${name}`;\n\t}\n</js>",
"chapterUrl": "<js>\nkey = source.getVariable();\nnovelid = java.getString(\"$.novelid\");\njava.put(\"novelId\",novelid);\nchapterid = java.getString(\"$.chapterid\");\njava.put(\"chapterId\",chapterid);\nisvip = java.getString(\"$.isvip\");\njava.put(\"isVip\",isvip);\nchaptertype = java.getString(\"$.chaptertype\");\nif(isvip == \"0\"){\n\turl = \"https://app-cdn.jjwxc.com/androidapi/chapterContent?novelId=\" + novelid + \"&chapterId=\" + chapterid;\n\t} else {\n\turl = \"https://app-cdn.jjwxc.com/androidapi/chapterContent?novelId=\" + novelid + \"&versionCode=381&token=\" + key + \"&chapterId=\" + chapterid;\n\t};\nchapterUrl = chaptertype == \"0\" ? url : \"\";\n</js>",
"isVolume": "$.chaptertype",
"updateTime": "$.chapterintro##^\\s*|(?![A-Za-z0-9]+)\\s*(?![A-Za-z0-9]+)\n<js>\njava.put(\"chapterintro\",result);\nchapterintro = result;\nchapterdate = java.getString(\"$.chapterdate\");\nchaptersize = java.getString(\"$.chaptersize\");\nchaptertype = java.getString(\"$.chaptertype\");\nChapterInfo = chaptertype == \"0\" ? chapterdate + ' ' + chaptersize + '字' + ' ' + chapterintro : \"\";\n</js>"
},
"searchUrl": "bookbase.php?searchkeywords={{key}}<,&page={{page}}>,{\"charset\": \"gb18030\"}",
"variableComment": "在设置【书籍变量】中\n输入“关闭作话”:可以不显示正文中的作者有话说(默认开启作者有话说);\n输入“评论”:可以开启评论显示(默认关闭评论)\n输入“评论20”:可以开启显示20条评论(不加上数字默认显示5条)\n\n\n",
"weight": 0
},
{
"bookSourceComment": "在【源变量】输入token即可登陆;\n在【书籍变量】里输入1,开启书籍评论(默认关闭)\n目录 更新时间(不用的代码):[-](?=[\\u4e00-\\u9fa5])\n正文:A = '<img src=\"'+novelCover+'\" width=\"200\">'+\"\\n\"+novelTags+\"\\n\"+mainview+\"\\n\"+protagonist+\"\\n\"+costar+\"\\n\"+other+\"\\n\"+novelIntroShort+\"\\n\"+novelIntro1+\"\\n\"+commentcount+\"\\n\"+novelbefavoritedcount+\"\\n‎\\n\"+novelIntro+\"\\n‎\\n\"+\"【\"+novelId+\"】\"+\"\\n\"+\"【\"+codeUrl+\"】\"",
"bookSourceGroup": "正版",
"bookSourceName": "晋江作者专栏",
"bookSourceType": 0,
"bookSourceUrl": "https://www.jjwxc.net/##作者专栏",
"bookUrlPattern": "\\S+www.jjwxc.net.oneauthor.php.authorid=\\d+",
"customOrder": -99,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"exploreUrl": "[{\"title\":\"作者积分榜\",\"url\":\"https://app.jjwxc.org/bookstore/scorelistV1?offset={{(page-1)*25}}&limit=25\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.4}},\n{\"title\":\"作者收藏\",\"url\":\"https://app.jjwxc.org/androidapi/favAuthorList?versionCode=413&token={{source.getVariable()}}&isAll=1&sortType=1\",\"style\":{\"layout_flexGrow\":1,\"layout_flexBasisPercent\":0.4}}]",
"header": "{\"User-Agent\": \"Mozilla/5.0 (Linux; Android 12; 2201123C Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/95.0.4638.74 Safari/537.36/JINJIANG-Android/413(2201123C;Scale/1.75;isHarmonyOS/false)\"}",
"lastUpdateTime": 1736150737506,
"respondTime": 2256,
"ruleBookInfo": {
"author": "span[itemprop='name']@text",
"canReName": "1",
"coverUrl": "{{@@img.authordefaultimage@src}},{\"headers\" : {'User-Agent': 'Dalvik/2.1.0'}}",
"intro": "@js:\nlet a1 = String(java.getString(\"td[height='38']@font[color='#FF0000']@a@text\")).replace(/《|》/g, \"\");\r\nlet a2 = java.getString(\"td[height='38']@font[color='#FF0000']@font[color='black'].0@text\");\r\nlet a3 = java.getString(\"td[height='38']@font[color='#FF0000']@font[color='black'].1@text\");\r\na3 = parseInt(a3) > 9999 ? (parseFloat(a3) / 10000).toFixed(2) + \"万字\" : a3 + \"字\";\r\nlet a4 = java.getString(\"td[height='38']@ownText\");\r\nlet a5 = java.getString(\"span[itemprop='description']@html\");\r\nlet a6 = String(java.getString(\"td[valign='top'].1@marquee@html\")).replace(/没啥说的了,都来我家喝酒吧\\^{2}b/, \"\");\r\n\r\n`\\t最近更新作品:${a1}\\n作品状态:${a2}\\n作品字数:${a3}\\n最后更新时间:${a4}\\n‎\\n${a5}\\n${a6}`;",
"kind": "td[colspan='5']@td[width='120']@ownText",
"name": "td[height='40']@span.volumnfont@b@text"
},
"ruleContent": {
"content": "<js>\r\nislock = java.getString(\"$.islock\");\r\nif(islock == \"0\") {\r\n\t// 简介\r\n\tnovelCover = java.getString(\"$.novelCover\");\r\n\tnovelStep = java.getString(\"$.novelStep\");\r\n\tnovelStatus = novelStep == \"0\" ? \"暂停\" : (novelStep == \"1\" ? \"连载\" : \"完结\");\r\n\tnovelClass = java.getString(\"$.novelClass\");\r\n\tnovelTags = String(java.getString(\"$.novelTags\")).replace(/^(?=\\S)|,(?=\\S)/g,\"🏷️\");\r\n\tmainview = \"视角:\"+java.getString(\"$.mainview\");\r\n\tprotagonist = String(java.getString(\"$.protagonist\"));\r\n\tcostar = String(java.getString(\"$.costar\"));\r\n\tother= String(java.getString(\"$.other\"));\r\n\tnovelIntroShort = \"一句话简介:\"+java.getString(\"$.novelIntroShort\");\r\n\tlittleintro = String(java.getString(\"$.novelIntro\"));\r\n\tlittleintro = littleintro.replace(/立意\\:/,\"立意:\");\r\n\tlittleintro = /立意:/.test(littleintro) ? littleintro.replace(/.*(立意:.*)/,\"$1\") : \"\";\r\n\tcomment_count = \"评论:\"+String(java.getString(\"$.comment_count\")).replace(/\\D/,\"\");\r\n\tnovelbefavoritedcount = \"收藏:\"+java.getString(\"$.novelbefavoritedcount\");\r\n\tnutrition_novel = \"灌溉:\"+java.getString(\"$.nutrition_novel\");\r\n\tnovelIntro = String(java.getString(\"$.novelIntro\")).replace(/立意\\:.*$/,\"\");\r\n\tnovelId = String(java.getString(\"$.novelId\")).replace(/^(?=\\S)/,\"https://app-cdn.jjwxc.com/androidapi/novelbasicinfo?novelId=\");\r\n\tcodeUrl = java.getString(\"$.codeUrl\");\r\n\tA = novelClass+\" \"+novelStatus+\"\\n\"+novelTags+\"\\n\"+mainview+\"\\n\"+protagonist+\"\\n\"+costar+\"\\n\"+other+\"\\n\"+novelIntroShort+\"\\n\"+littleintro+\"\\n\"+comment_count+\"\\n\"+novelbefavoritedcount+\"\\n\"+nutrition_novel+\"\\n‎\\n\"+novelIntro+\"\\n‎\\n\"+\"【\"+novelId+\"】\"+\"\\n\"+\"【\"+codeUrl+\"】\";\r\n\r\n\t// 评论\r\n\textend = book.getVariable(\"custom\");\r\n\tcommenturl = \"https://s8-static.jjwxc.net/comment_json.php?novelid=\"+String(novelId).replace(/\\D+/g,\"\");\r\n\tcommentall = /1/.test(extend) ? JSON.parse(java.ajax(commenturl)) : \"\";\r\n\tcstate = commentall.state;\r\n\t\r\n\tif (cstate == \"200\") {\r\n\t\tcbody = commentall.body;\r\n\t\tcommentL = cbody.map(P => {\r\n\t\t\tlet { foldlingauthor, commentbody, chapterid: pchapterid, commentmark, vip_chapter_icon, subscriptionicon, agreenum, ip_pos, commentdate } = P;\r\n\t\t\treturn `•——————•——————•\\n👤${foldlingauthor} ${subscriptionicon} 打分:${commentmark} 所评章节:${pchapterid}${vip_chapter_icon}\\n${commentbody}\\n👍[${agreenum}] 来自${ip_pos} 发表时间:${commentdate}\\n`;\r\n\t\t\t}).join(\"\");\r\n } else {\r\n commentL = \"\";\r\n }\r\n A = commentL != \"\" ? `${A}\\n‎\\n${commentL}` : A;\r\n\t} else {\r\n\tmessage = java.getString(\"$.message\");\r\n\t}\r\n</js>",
"imageStyle": "TEXT",
"replaceRegex": "##主角:\\n|配角:\\n|其它:\\n|立意:\\n|👍\\[0] \n@js:\nresult.replace(/\\<img\\sstyle=\\'\\S+\\'\\ssrc=\\/\\//g,'<img src=\"https://').replace(/\\s\\/\\>/g,'\">').replace(/ /g,\" \")"
},
"ruleExplore": {
"bookList": "$.data||$.data.list",
"bookUrl": "https://www.jjwxc.net/oneauthor.php?authorid={{$.authorId}}",
"coverUrl": "{{$.authorPhoto}},{\"headers\" : {'User-Agent': 'Dalvik/2.1.0'}}",
"intro": "<js>\nrenew = java.getString(\"$.renew.novelName\");\r\nrenewdate = java.getString(\"$.renew.renewdate\");\r\nfavorite = java.getString(\"$.favorite.novelName\");\r\nfavoriteEnd = java.getString(\"$.favoriteEnd.novelName\");\r\n\r\n`最新更新:《${renew}》 ${renewdate}\\n最热小说:《${favorite}》\\n完结佳作:《${favoriteEnd}》`;\n</js>",
"kind": "<js>\nauthorSign = java.getString(\"$.authorSign\");\r\nsignStatus = authorSign == 0 ? \"未签约作者\" : \"签约作者\";\r\n\r\nfavoriteNum = java.getString(\"$.favoriteNum\");\r\nmultiplescore = java.getString(\"$.multiplescore\");\r\n\r\nlet a1 = `被收藏数:${favoriteNum}`;\r\nlet a2 = multiplescore != \"\" ? `, 总积分:${multiplescore}` : \"\";\r\n\r\n`${a1}${a2}, ${signStatus}`;\n</js>",
"name": "$.authorName"
},
"ruleSearch": {
"bookList": "#search_result > div!0",
"bookUrl": ".info@a@href",
"intro": "{{'🦄作者专栏🦄'}}",
"name": ".info@a > span@text"
},
"ruleToc": {
"chapterList": "tr[bgcolor]!0",
"chapterName": "{{@@td[height='25']@text}} {{@@img@title##(^|[\\n])##🔖}}",
"chapterUrl": "td@a@href\n<js>\nnovelid = result.match(/onebook.php.novelid=(\\d+)/)[1];\nisVolume = java.getString(\"td[colspan='7']@b@text\");\nurl1 = \"https://app.jjwxc.org/androidapi/novelbasicinfo?novelId=\" + novelid;\nurl = isVolume == \"\" ? url1 : \"\"\n</js>",
"isVolume": "td[colspan='7']@b@text",
"updateTime": "td[height='20'][align='center']@text##^(?=\\S)|\\n(?=\\S)##🏷️\n<js>\nwordcount = java.getString(\"td[height][align='right']@text\");\r\ntime = java.getString(\"td[title]@text\");\r\n\r\nif (wordcount > 9999) {\r\n wordcount = (Math.round(wordcount / 100) / 100) + '万字';\r\n} else {\r\n wordcount += '字';\r\n}\r\n\r\n`${result} ${wordcount} ${time}`;\n</js>"
},
"searchUrl": "search.php?kw={{key}}&t=2&p={{page}},{\"charset\": \"gb18030\"}",
"variableComment": "在【书籍变量】里输入1,开启书籍评论(默认关闭)\n\n",
"weight": 0
},
{
"bookSourceComment": "网页版书源,正版",
"bookSourceGroup": "正版",
"bookSourceName": "QQ阅读",
"bookSourceType": 0,
"bookSourceUrl": "https://book.qq.com/",
"bookUrlPattern": "\\S+book.qq.com.book-detail.\\d+",
"customOrder": -98,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"lastUpdateTime": 1693470784544,
"loginUrl": "https://book.qq.com/book-shelf",
"respondTime": 894,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": "[property=\"og:description\"]@content\n@js:\"\\t\"+result",
"kind": "[property~=status|category|update_time]@content",
"lastChapter": "[property=\"og:novel:latest_chapter_name\"]@content&&[property$=update_time]@content",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": "#article.chapter-content.isTxt@html"
},
"ruleExplore": {},
"ruleSearch": {
"author": "object a.0@text",
"bookList": ".book-large",
"bookUrl": "a.wrap@href",
"intro": "p.intro@text",
"kind": "object a.1@text##·",
"name": "h4.title.ypc-link@text",
"wordCount": "span[data-v-e2aae5ea].-1@text##·"
},
"ruleToc": {
"chapterList": "ul.book-dir.1@li.list",
"chapterName": "{{@@i.lock@all##.+##💸}}{{@@span.name@text}}",
"chapterUrl": "a@href"
},
"searchUrl": "book-search/{{key}}",
"weight": 0
},
{
"bookSourceComment": "额外手段,网址时常变化",
"bookSourceGroup": "",
"bookSourceName": "69书吧",
"bookSourceType": 0,
"bookSourceUrl": "https://69shuba.cx/",
"bookUrlPattern": "\\S+69shuba.cx\\/book\\/\\d+.htm",
"customOrder": -97,
"enabled": false,
"enabledCookieJar": false,
"enabledExplore": false,
"lastUpdateTime": 1733798568486,
"respondTime": 80527,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"canReName": "1",
"coverUrl": ".bookimg2@img@src",
"intro": ".content@p@html",
"kind": "[property~=status|category|update_time]@content",
"lastChapter": ".qustime@li.0@a@span@text&&[property$=update_time]@content",
"name": "[property=\"og:novel:book_name\"]@content",
"tocUrl": "a.more-btn@href"
},
"ruleContent": {
"content": "@js:\nvar jsoup = org.jsoup.Jsoup.parse(result)\njsoup.select(\"h1,.txtinfo,#txtright,.bottom-ad,script\").remove()\njsoup.select(\".txtnav\").html()",
"replaceRegex": "##{{book.durChapterTitle}}|\\s*\\(本章完\\)"
},
"ruleExplore": {},
"ruleSearch": {
"author": ".labelbox@label.0@text",
"bookList": ".newbox li",
"bookUrl": "h3@a.1@href",
"coverUrl": ".imgbox img@data-src",
"intro": "ol@text",
"kind": ".labelbox@label.1:2@text",
"name": "h3@a.1@text"
},
"ruleToc": {
"chapterList": "-#catalog@li@a",
"chapterName": "text",
"chapterUrl": "href"
},
"searchUrl": "modules/article/search.php,{ \n\t\"charset\": \"gbk\",\n\t\"method\": \"POST\",\n\t\"body\": \"searchkey={{key}}&submit=Search\"\n\t}",
"weight": 0
},
{
"bookSourceComment": "",
"bookSourceGroup": "",
"bookSourceName": "万相书城",
"bookSourceType": 0,
"bookSourceUrl": "https://www.wxscs.com/",
"customOrder": -96,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"header": "{'User-Agent': 'Mozilla/5.0 (Linux; Android 9; PDBM00 Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36'}",
"lastUpdateTime": 1731151540243,
"respondTime": 95073,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"canReName": "1",
"coverUrl": "[property=\"og:image\"]@content",
"intro": ".book-detail@html",
"kind": "[property~=category|status|update_time]@content",
"lastChapter": "[property=\"og:novel:latest_chapter_name\"]@content&&[property=\"og:novel:update_time\"]@content",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": ".cont-body@html",
"nextContentUrl": ".col-md-6.text-center.0@a.2@href"
},
"ruleExplore": {},
"ruleSearch": {
"author": "td.1@text",
"bookList": "tbody tr",
"bookUrl": "a.orange@href",
"name": "a.orange@text##《|》"
},
"ruleToc": {
"chapterList": "#all-chapter@.col-md-6",
"chapterName": "a@text",
"chapterUrl": "a@href",
"formatJs": "\"第\"+index+\"章 \"+String(title).replace(/^\\d+\\.?\\s*|[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*/g,\"\")"
},
"searchUrl": "plus/search.php?q={{key}}",
"weight": 0
},
{
"bookSourceName": "企鹅小说",
"bookSourceType": 0,
"bookSourceUrl": "http://www.qiexs.cc/",
"customOrder": -95,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"lastUpdateTime": 1735198740212,
"respondTime": 180000,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": "[property=\"og:description\"]@content##(^|[。!?\\s]+[”」)】]?)##$1<br>",
"kind": "[property~=category|status|update_time]@content",
"lastChapter": "[property=\"og:novel:latest_chapter_name\"]@content&&[property=\"og:novel:update_time\"]@content",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": ".contents p@html\n@js:\nresult = result.replace(/([\\u4e00-\\u9fa5]) (\\S)/g, \"$1,$2\");\nresult += \"🍦下一页🍦\";",
"nextContentUrl": "##\\d+\\,\\d+\\,\\'(\\S+)\\|\\_\\_nextPage\\|\\/xiaoshuo\\/\\|html##$1###\n@js:\nif (!/^\\d+_\\d+$/.test(result)) {\n\tresult = \"\";\n} else {\n\tresult += \".html\"\n}",
"replaceRegex": "##\\s🍦下一页🍦\\s?|\\S?本书作者.*提醒您《.*》最新章节在\\S*|\\S*提醒:《.*》最新章节.*免费无弹窗阅读将第一时\\S*|\\S?喜欢看.*写的.*吗?那就记住\\S*"
},
"ruleExplore": {},
"ruleSearch": {
"author": "a.red@text",
"bookList": "div.col-md-10",
"bookUrl": "h4.bookTitle@a@href",
"intro": "p.text-muted@text",
"name": "h4.bookTitle@text"
},
"ruleToc": {
"chapterList": "dd.col-md-3",
"chapterName": "text",
"chapterUrl": "a@href",
"formatJs": "\"第\"+index+\"章 \"+String(title).replace(/^\\d+\\.?\\s*|[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*/g,\"\")"
},
"searchUrl": "search,{\n\t\"method\": \"POST\",\n\t\"body\": \"_token=p5VcbpPZRAV6bvZgF4EE8q552EeZZlnzE1ifXGnV&keyword={{key}}&action=login\"\n\t}",
"weight": 0
},
{
"bookSourceName": "笔趣阁",
"bookSourceType": 0,
"bookSourceUrl": "https://www.biquge345.com/",
"customOrder": -94,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"lastUpdateTime": 1716975381277,
"respondTime": 180000,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": "[property=\"og:description\"]@content",
"kind": "[property~=status|category]@content&&.xinxi@span.6@text##更新时间:",
"lastChapter": "[property=\"og:novel:latest_chapter_name\"]@content&&.xinxi@span.6@text##更新时间:",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": "@js:\nvar jsoup = org.jsoup.Jsoup.parse(result)\njsoup.select(\"p\").remove()\njsoup.select(\".txt\").html()"
},
"ruleExplore": {},
"ruleSearch": {
"author": "span.zuo a@text",
"bookList": ".search@li!0",
"bookUrl": "span.name a@href",
"kind": "span.lei a@text&&span.time@text##\\[|]",
"name": "span.name a@text"
},
"ruleToc": {
"chapterList": "ul.info li a",
"chapterName": "text",
"chapterUrl": "href",
"formatJs": "\"第\"+index+\"章 \"+String(title).replace(/^\\d+\\.?\\s*|[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*/g,\"\")"
},
"searchUrl": "s.php,{\n\t\"method\": \"POST\",\n\t\"body\": \"type=articlename&s={{key}}&submit=\"\n\t}",
"weight": 0
},
{
"bookSourceComment": "",
"bookSourceGroup": "",
"bookSourceName": "笑佳人",
"bookSourceType": 0,
"bookSourceUrl": "https://m.xiaojiaren.com/",
"customOrder": -93,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"header": "{'User-Agent': 'Mozilla/5.0 (Linux; Android 9; PDBM00 Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36'}",
"lastUpdateTime": 1731151682256,
"respondTime": 83013,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": ".intro@html",
"kind": "[property~=category|status|update_time]@content",
"lastChapter": "[property=\"og:novel:latest_chapter_name\"]@content&&[property=\"og:novel:update_time\"]@content",
"name": "[property=\"og:novel:book_name\"]@content",
"tocUrl": "a.load_more@href"
},
"ruleContent": {
"content": ".content p@html",
"replaceRegex": "##广告是本站能长期运行的根本,关闭广告之前,请点一次广告。|完整阅读.*及退出阅读模式"
},
"ruleExplore": {},
"ruleSearch": {
"author": "dd.info@p.0@span@text",
"bookList": ".partlist-info@dl",
"bookUrl": "dd.info@p.-1@a@href##(https://m.xiaojiaren.com/read/\\d+)\\/\\d+(.html)##$1$2",
"coverUrl": "dd.pic@img@src",
"name": "dt@em@text"
},
"ruleToc": {
"chapterList": "ul.list@li",
"chapterName": "text",
"chapterUrl": "a@href",
"formatJs": "\"第\"+index+\"章 \"+String(title).replace(/^\\d+\\.?\\s*|[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*/g,\"\")",
"nextTocUrl": "select@option@value"
},
"searchUrl": "search/?searchkey={{key}}",
"weight": 0
},
{
"bookSourceComment": "",
"bookSourceGroup": "",
"bookSourceName": "霹雳书坊",
"bookSourceType": 0,
"bookSourceUrl": "https://www.pilibook.net/",
"bookUrlPattern": "\\S+pilibook.net/\\d/\\d+/info.html",
"customOrder": -92,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": true,
"exploreUrl": "[{\"title\":\"男频网文\",\"url\":\"/1/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}},\n{\"title\":\"女频言情\",\"url\":\"/2/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}},\n{\"title\":\"电子图书\",\"url\":\"/3/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}},\n{\"title\":\"无CP小说\",\"url\":\"/4/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}},\n{\"title\":\"纯爱小说\",\"url\":\"/5/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}},\n{\"title\":\"百合小说\",\"url\":\"/6/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}},\n{\"title\":\"轻小说\",\"url\":\"/8/list/0_0_0_0_0_0_0_{{page}}.html\",\"style\":{\"layout_flexBasisPercent\":0.2}}]",
"lastUpdateTime": 1736150776290,
"respondTime": 3622,
"ruleBookInfo": {
"author": "a.works-author-name@text",
"canReName": "1",
"coverUrl": ".works-cover img@src",
"intro": "p.works-intro-short@html",
"kind": "a.works-intro-tags-item@text&&label.works-intro-status@text&&span.ui-pl10@text",
"lastChapter": "a.works-ft-new@text&&span.ui-pl10@text",
"name": ".works-intro-title strong@text",
"tocUrl": ".words-xone-menu a@href"
},
"ruleContent": {
"content": ".read-content p@html"
},
"ruleExplore": {
"author": "p.ret-works-author@text",
"bookList": "li.ret-search-item",
"bookUrl": "h3.ret-works-title@a@href",
"coverUrl": "a.mod-cover-list-thumb@img@src",
"intro": "p.ret-works-decs@text",
"lastChapter": "span.mod-cover-list-text@text",
"name": "h3.ret-works-title@a@text"
},
"ruleSearch": {
"author": "span.book-status@text",
"bookList": ".x-book",
"bookUrl": "a.0@href",
"checkKeyWord": "这个",
"coverUrl": "img.x-book__cover@src",
"intro": "p.x-book__intro@text",
"name": "p.x-book__info--name@text"
},
"ruleToc": {
"chapterList": "p@a",
"chapterName": "text",
"chapterUrl": "href",
"formatJs": "\"第\"+index+\"章 \"+String(title).replace(/^\\d+\\.?\\s*|[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*/g,\"\")"
},
"searchUrl": "search/0/{{key}}/{{page}}.html,{\n\t\"headers\" : {'User-Agent': 'Mozilla/5.0 (Linux; Android 9; PDBM00 Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36'}\n\t}",
"weight": 0
},
{
"bookSourceName": "69书吧",
"bookSourceType": 0,
"bookSourceUrl": "https://www.69hsw.com/",
"bookUrlPattern": "\\S+www.69hsw.com.\\d+.",
"customOrder": -91,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"lastUpdateTime": 1731151483026,
"respondTime": 180000,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": "#intro@html",
"kind": "[property~=category|status|update_time]@content",
"lastChapter": "[property=\"og:novel:latest_chapter_name\"]@content&&[property=\"og:novel:update_time\"]@content",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": "#booktxt@html",
"nextContentUrl": "text.下一页@href"
},
"ruleExplore": {},
"ruleSearch": {
"author": ".btm a@text",
"bookList": "dl",
"bookUrl": "dt a@href",
"checkKeyWord": "游戏",
"coverUrl": "img.lazy@data-original",
"intro": "dd@text",
"name": "dt a@text"
},
"ruleToc": {
"chapterList": "dl a",
"chapterName": "text",
"chapterUrl": "href"
},
"searchUrl": "ss/?searchkey={{key}}",
"weight": 0
},
{
"bookSourceName": "淡水书院",
"bookSourceType": 0,
"bookSourceUrl": "https://www.udikids.com/",
"customOrder": -90,
"enabled": true,
"enabledCookieJar": false,
"enabledExplore": false,
"lastUpdateTime": 1731373358378,
"respondTime": 180000,
"ruleBookInfo": {
"author": "[property=\"og:novel:author\"]@content",
"coverUrl": "[property=\"og:image\"]@content",
"intro": "[property=\"og:description\"]@content##(^|[。!?\\s]+[”」)】]?)##$1<br>",
"kind": "[property~=category|status|update_time]@content",
"lastChapter": "[property=\"og:novel:lastest_chapter_name\"]@content&&[property=\"og:novel:update_time\"]@content",
"name": "[property=\"og:novel:book_name\"]@content"
},
"ruleContent": {
"content": "#booktxt p@html@js:result+\"🍦下一页🍦\"",
"nextContentUrl": "a.block:contains(下一页)@href",
"replaceRegex": "##\\s🍦下一页🍦\\s?"
},
"ruleExplore": {},
"ruleSearch": {
"author": ".btm a@text",
"bookList": "dl",
"bookUrl": "dt a@href",
"coverUrl": "img.lazy@data-original",
"intro": "dd@text",
"name": "dt a@text"
},
"ruleToc": {
"chapterList": "#list@dl@a",
"chapterName": "text",
"chapterUrl": "href",
"formatJs": "\"第\"+index+\"章 \"+String(title).replace(/^\\d+.?\\s*|[【]?第\\s?\\d+\\s?章[】]?\\s*|[第]?[〇零一二三四五六七八九十百千万两□]+章\\s*/g,\"\")"
},
"searchUrl": "search/?searchkey={{key}}",
"weight": 0
}
]