-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathdr.js
More file actions
3201 lines (3111 loc) · 141 KB
/
Copy pathdr.js
File metadata and controls
3201 lines (3111 loc) · 141 KB
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
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
var updateLog = `
2022/08/24 废除部分代码
2022/08/22 优化自动模板匹配的通用免嗅,修复搜索的自动匹配
2022/08/21 记录翻页位置(伪足迹,不能解决翻页但是没观看的足迹问题),智能最新章节优化
2022/08/20 增强小说模式免嗅探,内置净化内容,优化自动匹配抛错问题,一级处理判断 自动匹配属性为真的时候才抛错。二级增加双击线路名称快速切换选集按钮样式
2022/08/19 增强漫画模式免嗅探
2022/07/28 coding依赖链接全部转移至csdn
2022/07/15 修复蓝莓影视多多资源没法通免的问题
2022/07/08 增加config.ui插件,可被引用
2022/07/07 封装了另外一套常用动态分类写法,函数为动态分类(一级列表变量)
2022/07/06 优化动态翻页逻辑,增加bug
2022/07/05 dr模板升级到5.0,二级翻页组件升级为动态元素切换
2022/07/04 调整自动一级函数的参数顺序,html参数改到cates之后
2022/06/29 新增磁力兼容,新增嗅探结果处理
2022/06/21 增加牛逼功能二级处理=>附加数据,附加数据标题,内容附加折叠到简介后面
2022/06/20 兼容磁力链接动态解析
一级提速半秒以上,相比以前提升1.2倍。3.0支持套小说了!支持完美自动获取智能最新章节.支持验证码识别.小说模式优化。二级页面带cookie.取消程序自毁.支持小说下载。新增收藏二级显示单规则名
`.trim();
var version={
author:"道长",
ver:"5.2.1",
// appv:2316,
appv:583,
requireId:"http://hiker.nokia.press/hikerule/rulelist.json?id=2505",
update:'2022/08/24 14:25',
info:updateLog,
ua:';get;utf-8;{User-Agent@Mozilla/5.0&&Cookie@}',
ok:'https://okjx.cc/?url=',
jsRoot:'https://dr.playdreamer.cn/js/',
};
putVar('dr依赖',version.requireId);
/*
var lsg = (function() {
evalPrivateJS("XnUmRAbE641s4myhkr5brclFfsHk4YBZw7AEwR2RDZo=");
pathto=undefined;
evalPrivateJS("88URiYONBZk7lZl1XzdcYPYjki0FFljXcsScMvf57IVeG8kaqJA3v1ov4EIK0M0wLXT+eQCrYAGW4xepT8Zc7KMeZ4JdY/wNA4WGOYrW2d7R31kwJDb1LNtHAkEptR9S3Y8kq1iKCaauktnO0IZcowTBX+2urTqu4QcB4Nn39Uc3m9T+Ub0IZ+TV4rFaO7aafLGW2N/kLzi9K+T4R2hKRan1cgu+y5BUF99ZzUhIyttxY6uB6DZbJ9ZIMZA+N7n4nw7MC6Pin1vWiqnyT+L8bhjYhs1eN0wTfLeiyB15ONiZpfnnnSR731uwjSt9Pa701XVZZZJkzs9bDj3OnFYwyyRNqqa6BkRJuqHYLZ55poUlDsI9YFGrk2rW4KdSp5V8bhVZAw1vItpRYwgOoIkpbk+4SLYMwhd4asPDLqj4DJXVifw42Pw3C6mGufNCspwQ12kxNv3MA+N2xK3bVuAHtPFqKqlZSOKojtxfMM0Teuws5y95anljhZRFclFjpSrvKs1ZFw/1UvdN3wdpQ7p9KSwV0NhYPSvPL5EzBQOQwux8sDMgggeOw2g+E7AFWu35Yffd8LK/eVgwgurlbWIhm2BJLbhSqWdQ1NazjNdJFKHTpfxdwW33lyqbYqll5U76gwckeCEtl1vImnRj76QSqrWsAu8Qpx+5065LTZrU7oRx3z5IrLyB1KwZcZdSja4Ean0uxLeChAwYIceGlNvSwWXK07gcRh4k7H+ouz5lu2aP9tes3IptDnQDkQRESgYfMzX07woxiErgbmqO3vsdz/H8w8mXgX3qq9RW8denSZQs+Y3wkoTFyWyUuzEB9Ik7FlJvHnZuvchBhdVQIT3pFMoYQHQu49V7EgA2PxZy1ZCMCT/MakpPTF3iz7T6WayiemSvy0GwnKD6F/kCxQuiM/J0ZhwUhgmEkY4QC5krkuJsZjpjAzdBw+z86uDHLoN3AxEZZxpT5DEwo4glnH4q6NUT6jzALjDij9l3RPugQ5LErolXdoeuOE9woPBuKsG/Jj0u/jgZGssz0nnKKUFJc3xSAw8fu0DiHCCXAy45/1sEqK9qN5hVt9eVxxx0G5NyOpYJm2XQAJfl1pjbE+jnh41IrNvl6TvaU98Srwon67f5PwAmn0wwqbcRl8or+x90vGeww1phYzn6GQpfNOimENEfFSQ5/RYwS7ijIqgnYSrZpE+8ApKlyz+giUBWKRznDpBukkYs9ffCJEB5KdYSpCOm0OWVfhXMbTtobEcX1rJWhb15iCgEWBhx7/qOmlkcPhfhXGoilxML01pgqoDsYor5pOtlZTDA3bVA62vx6rGnbiIwjZnX5Dvo1c9m8SgG0fu5F2m9H6WPgAoH2oS6n0hecO61iwp2rYsyS/C01NDVc7xUyEJUB7mxtCHTc5Zwh/34cXanmvH5Pt6NC32QGxwkgTlBRe/Sz5igYgSrkYhyjJuSuDEwycewUaU1TeUK/jHDq24s6RTMm5m7XiTAJwjlI7+SzCv1Uh1dDPTtjTU873LlyBK4K9Q/z7oBZoTlh5PzEnRQ5QajA6RPMfeWI3tefDUTWsldNtC9a0J3F+e//eDLgh0y8x1pLqbZvCp0wdxW9m9eOny1SJ0X71v47fT5t8XHyHtgGDTQAyzpyIqEjbRSTutLGPYliLdsuViheuOS4cGlGY5kRDBp9oWbuB0+1ujS5l1fQpU+YClrLKH84oer2ceLSpRQRCgujX9jn28LyfzmjxxNL9bCeook07Aop8VmQcTt2K3Lfh1RDYb1cQjYIu0uMmDw7WZfZzwifG8IuJeSqYjcbLPX2mB1k3U7deTr7+FQPax85L1IUcLXJFbV72BQljwUK96GV3aQiZTcoGNb04MZ7d6Hg3YzvVtVduqIpRWMlxWfr+xBxPBvx6oc+1TEUaOwvSHJ0CZWlmvJ4hcgvl3kxzxFoRLtn6PstAo/ueW03xdyCLvM8FXLK8tI1lZz+wif+9ZIAdT2tawC7xCnH7nTrktNmtTuhM7VsDa8QJ8Ek2uX0RD7rc/5/Rr48IWz/MjKkFXVnzF+HyvYjTnq/12wCfXftMscFDqlm1PZ4UI3TFa+2v4vDv/VE+o8wC4w4o/Zd0T7oEOS+pNSuz8nY7vjb8A++8aS4U3a094dUWQGh87/uMhCWn2luTI8rjVGcXIE+FUJEyneS5r8Jic+LFIvbAVPZDSCP7F+ITOlx8sFnfN0QjCYfR3r9sHpiWKlELqPgG+cbGEbIlkdDuX5wJ8RxgpPttpqOhnP0tntCBglrx3m2ItlHzcUMJSe35rKj6KnWEolwB38ohMjk0/I+RKdi089DgoMb9ckVtXvYFCWPBQr3oZXdpD5gpGWRocXMJbT27oWUkeczbFwwXDKNQHYqvS1215v0HVBfs+cE+T/tYcC6Nq62UXmIkxLcDEAamcoH7wCUnZ5HQvJ0f/0wPF2kLmU3u0yEUmDK276V2vJ2HXuXHeC3WGEO/xUON6h4H/c9jVcT+u2MiRbkI9CfjjmRQzoET4EJWApcH7iGlIUoMHmmJm+VlyrCsUlkJbBYhccINqWHcpvXI1oJXDnb3umswGa3qeU/R3eqQy55RMaAqlB5VkEsqEcYzJsoSQSpi3tKLPPz6LVESF2vWlvCY/ht1Rjug03d1iEyLcaEA7LaaL86qvD4YrvL9RMxQExEFms6yJdXGngeaTjHSH1DSZ9blRYBRlzjcZkJxB2lxHlslitE6tqy9DRCeury0Z+5YFiBup8kQ4JgNdvFxNmm+a79VYLIoNZvjd4V2TAgZbWE0Z309RGcrdGNabMakJD/00XChOSUOIPXjNKmFOPL/8h1n1sCg2lZmiZ4RqdcF6uWuwTffjhnDnzTzTgJR7jTHxs1DspFUSe5Roo7sNwWj9St76IaOwOYHPIc6CyRIbDDVPgU3fDG9/XJFbV72BQljwUK96GV3aQO8YEMZAzndY0a+jXQGJNIOMl3k3Sy09GKB64FCq1elzDi2YEg1D4pTy93SbvQ2DXJGNrkd3BhnjRKsYB34nolmhuQ0VqsZjhVsQ1py6CagHT/drCgPUivvzR7Kn9dwjrNCZ1PQDL8H3cRs3HE9nUkx5bbJYWsPxb825gnEpWU9Z9Ktzvsli7/heOlDKpHxJbrB1R66TAggmfilJ4RpsKPl3hwRo2Xes2htT6Ai3QMUSsZBwvhm0ZyfBZdg4l/PIeRDaKSOX2YofBZUyfbjUBzLEMC8fc/JTFYPUQWwHv3m9jFfGWzpVS1Z/F6t54jYaLPeO3gzR4w6rM4WK3EwvmyyDjZEt4XZXJMwfhx9z8r4rZ7RCDXE7Uo6RJdzBZ6p1/oc+BC9peLxm7ifjsmAdzNuKvpV23EK+ezN02lZTmkAjJrRiAIIOefbxH6Cuy/cntoL6Fs34K40wTy4zSS/lZcCfX1BHEh1r5PH6cp8PgZGAo5m/w3s32NcPCQfgulKD19Pm3xcfIe2AYNNADLOnIilifJMF8+BtcgZM3GoK2L96AbPr7aVIr36/IfcJTCqjnuW+gJxpHI+kXgmcEvFXnEoq7PPnpFhEYbHLTtFi4xh67rW7oBcqBvPU4nxdWbPGo1mlA6pF5ahIuMffObWjFCZAVt1I2Qnc1alwbnoNqMMiXw3alLmltuTEV6KGtBntBqIQw1r7IKNxLiw13YjSy0bw22dU2nSWI+h5FI7CGblFWjlqww1DSqgEN/p1/wQVtlz9BbyAdcFseh4oaSBHe91ifJMF8+BtcgZM3GoK2L979AyGNq4wzb3QYNWuT4X9LlWXfNM/lQlWwQgFaPLg9fwl+XBYI2Imq4XsGDFeD3fPJ+JYHecLF1Cfuhdx5ibbDAH/xL1VmugaXOGaPB2qc7WOrafUDAIXLA0utgGpE9cmLk1riNHDTqZydcOx5j+YRgNdvFxNmm+a79VYLIoNZvo2roXJKkR1bkC9n8UGtjLf/RAtellVXaUlt92pER0bJPU2Buc1uwr7KUr7ENZAypH3m5yykR9ttGaTcLHgsWoNxCqpp5B53DBkJwIHPnnMHftd3wMBV5TC3FnBPPrscRX/73anGSbD5noTKaC4Bjc6DE7UXwAuegbVSNsv8BwlrWrP2nZ4uxFc8FBeoLbgGdQNwAIFAoG9icCd9L7xKqqthDctThHh+9YIXg1Vh67Dc68MwCmuoPVEmojB6opG9/srbV/RSgvl/x9CjNIN1z24AIXJjPLyBf1gIadbo6QfDqVoqIxjGOGIO2x6qjkxBv2lLLWPe51RlppMYgRtHdXh8TRTK4+a2073yGrPFBu14xqUy1Jx7ZYtyPJdUZ+mp0DCFmPvn8znewphfbNGA5JMB81IP/mVlhI1TEl8pMOCJ94p46Us/g+iuWHA2sdHuEG9H6BhIBz3bEnouOknZC4qq5P6GUmNUO1qgDd4glDCPzpQy+w7887DkJyvv2wnOJ5iDx2h0LyGyiAZLH/hpStPCAQbmwGlDEAfOiyqtqLQ9JWErwB8pH8d/4ilpKOVZBvOi6ULnXvV8YGst+6gsYjC7il6iEhCenlZoKxS/fA6sheR1J7W4/7th8FGRZIy1pVWFxvDgb0UMs1dRARTuPS2TLUrGhwLqJK4jvubBmNbkV/B2E7meWYN8xkGv58R7wS4XT0/atm8oTNVbQKz+AL7TmglD8A+3sTZo2W/TPNbr/6+oRnq3l9EG0tL+AboZAam8UvJnKhw1qNtJ82Ad9AgwhZj75/M53sKYX2zRgOSTAfNSD/5lZYSNUxJfKTDgiYJE5C3nuYWs6PI8fj2qn3uURJjQz/ipm5HL9EOEPKGJax0mPYfQG3t8wyeVcvphJmBnRAeL7p9QsXln+4b2Gu2qMPj85mkT9I5rE22lUku0L41nTHhslujkjO5jKkzwxT4X4VxqIpcTC9NaYKqA7GKK+aTrZWUwwN21QOtr8eqxANlgQGhD69C7lClET/moyNqeIcjFDUHBZcFDeuK+ujGMepSUsjl8P4bTV9fJFHjt1g9awFZjSS/NiXo1MuO6enMRjO4dxjjVTHABFupVEo6maCLkzSBCRTb8chCk5cU4zhNuAg/MAwErgPHOa5dFGrd4rwuLvUAU32/7wpjSYv0AH2m3DxvlLFprGDUSvoPITHLLgZoYePDaYUb3m1UKqup3CsXNZxR1jFuTOqH/s/EEQsGkljkrSDCA5NZToac90AZpS74eqojOGnrisTapoK4r27PIeHeuisSZ0pVqRWpJW8dVOOcasnlceM2OqFBreV+Q0gixYEdZF07qanvdXPmHjpaBLof4Rp1sqjB7TNxeC0eZTBLqIqxPJGv2xlfIO9SLr5T3I+vCROvLo4CTTK9oQJZNPHl/f4bM4D4KBvHtDa616AofQ2AIPmuFeufFvXwZGNc1xmU/8ueGIAixxhMvX6IdYNi9Ga88zC04eELiU0ZPAOUEwjHLyehUkaei7eBp9NX6cJJ/5sh9PtU1TirNWRcP9VL3Td8HaUO6fSmLYIDyut6k+oqcj6C9Ezgt19wDLqW74TH7qjmS5+DmddkpAaZzQ9FFpHVjjqdkd9TAd6UPWWgR6wLIPnTUftFj045Yi5FZ8MVTJIWsPq9L0bi9c7pS0o9CcR5CJoBuA5Le55+gw0EjHkRRTFkJbJ5G1fe+iWpdY2PKEctLuSfpH5RWymMwPs1hz4NaNQvZvayXw3alLmltuTEV6KGtBntBX+yz36RPDMyGIKe+3fzcxcsry0jWVnP7CJ/71kgB1PYeaV3YwrYEkjp6Ki+OYrGu6BkHn3DgE+giWbwhor6xaOB6MRNSvdqbuf7lrek12YDQTaMVS0N0OkUvLjP1UitjfNtlB/sNifcJMibGUJ8VqKwcaNES5Xc6dQY5nqeiq8uJTAI9uFIJcn0sr6DViJGr+cIOfbQyh1VWRU2jM+oxdtmpLnAo9AZdgGJPiXXWoVvLK8tI1lZz+wif+9ZIAdT29D1VQL8BOQl9OWgyW0N5XkCj3ORprLd0oBrn8/EAZEPLK8tI1lZz+wif+9ZIAdT2VAj6ItH4UIcNOOej0sm/gNVJ0M9hhYE0laYcCKQTA3Fl8glU4nYStdeQox8cmMFp94p46Us/g+iuWHA2sdHuEGGlgAdiERhSX1zvlj9H/SAXnp0+VZKC2akKwFBochJWQGhhFPcKyo0MX8U5MyWRHiFRQ6EwgNEi6x1ir0L6B0wtz3tcuE0z9CAID1pFcy0DFKEcZu49dICfbXSwAOrX/vNT382lopULNRXHSmII4zH5gpGWRocXMJbT27oWUkeczqK+tS3oX/2KWkkEzipaXcIwumUEf9ZCfhQaRLLDcTKK4q5cVUVLpfRtbDzbj5qCpuxnQy2rz8FatpW1OJJstU7fgneYpdeR19+4n6snyiWI2lgv9rvuutwxhpVAFzZKmcKb/VyUHBR+pqaNwKrYh4F6X/UGEWQRt72MuLE/boNZ25/8/a3H1UcfqsdwdPuQxcT/xJePh4b/YWxQ5iQv0FX2p2obP8tImcXEi9DyQHE=");
return $.exports;
})();
*/
var lsg = evalPrivateJS("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");
var 取随机列表 = function(arr, num) {
var sData = arr.slice(0), i = arr.length, min = i - num, item, index;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
item = sData[index];
sData[index] = sData[i];
sData[i] = item;
}
return sData.slice(min);
};
var 取随机颜色 = function() {
return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);
}
var 汉字转数字 = (function(){
var map = {
"零": 0, "一": 1, "壹": 1, "二": 2, "贰": 2, "两": 2, "三": 3, "叁": 3,
"四": 4, "肆": 4, "五": 5, "伍": 5, "六": 6, "陆": 6, "七": 7, "柒": 7,
"八": 8, "捌": 8, "九": 9, "玖": 9, "十": 10, "拾": 10, "百": 100, "佰": 100,
"千": 1000, "仟": 1000, "万": 10000, "十万": 100000, "百万": 1000000, "千万": 10000000, "亿": 100000000
};
// 解析失败返回-1,成功返回转换后的数字,不支持负数
function numberDigit(chinese_number) {
var len = chinese_number.length;
if (len == 0) return -1;
if (len == 1) return (map[chinese_number] <= 10) ? map[chinese_number] : -1;
var summary = 0;
if (map[chinese_number[0]] == 10) {
chinese_number = "一" + chinese_number;
len++;
}
if (len >= 3 && map[chinese_number[len - 1]] < 10) {
var last_second_num = map[chinese_number[len - 2]];
if (last_second_num == 100 || last_second_num == 1000 || last_second_num == 10000 || last_second_num == 100000000) {
for (var key in map) {
if (map[key] == last_second_num / 10) {
chinese_number += key;
len += key.length;
break;
}
}
}
}
if (chinese_number.match(/亿/g) && chinese_number.match(/亿/g).length > 1) return -1;
var splited = chinese_number.split("亿");
if (splited.length == 2) {
var rest = splited[1] == "" ? 0 : numberDigit(splited[1]);
return summary + numberDigit(splited[0]) * 100000000 + rest;
}
splited = chinese_number.split("万");
if (splited.length == 2) {
var rest = splited[1] == "" ? 0 : numberDigit(splited[1]);
return summary + numberDigit(splited[0]) * 10000 + rest;
}
var i = 0;
while (i < len) {
var first_char_num = map[chinese_number[i]];
var second_char_num = map[chinese_number[i + 1]];
if (second_char_num > 9)
summary += first_char_num * second_char_num;
i++;
if (i == len)
summary += first_char_num <= 9 ? first_char_num : 0;
}
return summary;
}
$.exports = numberDigit;
return $.exports;
})();
if(typeof(config)==='undefined'||!config){
// eval('config = {}');
var config = {};
}
function color(text, color) {
text += "";
if (text.indexOf("““””") === 0) {
text.replace("““””", "");
}
return "““””<font color='" + color + "'>" + text + "</font>";
}
function htmlTag(tag, text) {
text += "";
if (text.indexOf("““””") === 0) {
text.replace("““””", "");
}
return "““””" + "<" + tag + ">" + text + "</" + tag + ">";
}
function small(text) {
return htmlTag("small", text);
}
function right(text) {
return '<span style="float:right">'+text+'</span>';
}
function blank(){
return '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'
}
function isPic(str){
return /\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(str);
}
function gbk编码(code){
return encodeStr(code, 'GBK');
}
function getJdCk(ck){//获取京东cookie
// m.jd.com 登录后取gif上面的cookie. 服务器里 docker-compose up -d
// docker exec -it jd_scripts /bin/sh -c "node /scripts/jd_bean_sign.js |ts >> /scripts/logs/jd_bean_sign.log 2>&1"
// docker exec -it jd_scripts /bin/sh -c "node /scripts/jd_fruit.js |ts >> /scripts/logs/jd_fruit.log 2>&1"
// 青龙面板拉库 ql repo https://ghproxy.com/https://github.com/okyyds/yydspure.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "master
// 修复依赖 01 docker exec -it qinglong bash
// 修复依赖 02 curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/shufflewzc/QLDependency/main/Shell/QLOneKeyDependency.sh | sh
// 教程 https://thin-hill-428.notion.site/1c598629675145988b43a37998a1604a
// 教程 https://blog.csdn.net/qq_29183811/article/details/120247352
// 教程 https://thin-hill-428.notion.site/Ninja-7e693618f706453ab01d869fbd2adb69
// 配置环境变量: JD_COOKIE
// nginx -s reload ql.nokia.press
document = typeof(document)!=='undefined'?document:{};
ck = ck||document.cookie;
let obj = ck.split(';').map(it=>{return {key:it.split('=')[0].trim(),value:it.split('=')[1].trim()}});
obj = obj.filter(it=> ['pt_pin','pt_key'].includes(it.key));
obj=obj.map(it=>it.key+'='+it.value);
return obj.join(';')
}
function getTxCk(ck){//获取腾讯视频cookie
document = typeof(document)!=='undefined'?document:{};
ck = ck||document.cookie;
let obj = ck.split(';').map(it=>{return {key:it.split('=')[0].trim(),value:it.split('=')[1].trim()}});
obj = obj.filter(it=> ['vqq_appid','vqq_openid','vqq_access_token','vqq_vusession','vqq_vuserid'].includes(it.key));
obj=obj.map(it=>it.key+'='+it.value);
return obj.join(';')
}
function getAliToken() {//获取阿里云的refreshtoken,网页版登录后控制台执行即可
//这个cookie获取后无法使用文件直链,需要去手机app抓token
//获取移动端cookie;https://alist-doc.nn.ci/docs/driver/aliyundrive
return JSON.parse(localStorage.token).refresh_token;
}
function 预处理固定代码(){//使用: require(version.jsRoot+'预处理.js')
var dr_jsRoot = 'https://dr.playdreamer.cn/js/';
try {
const {getApi} = $.require("hiker://page/utiliy?rule=道长仓库Pro");
var 模板 = getApi('importUrl')+"2505";
require(模板);
预处理(模板)
}catch (e) {
log('预处理执行失败:'+e.message);
var 模板 = dr_jsRoot+'dr.js';
require(模板);
预处理(模板)
}
}
function 检测依赖固定代码(){
// codeberyRoot:'https://gitlab.com/hjdhnx/hiker/-/raw/main/js/',
// gitlabRoot:'https://codeberg.org/hjdhnx/hiker/raw/branch/main/js/',
require('https://codeberg.org/hjdhnx/hiker/raw/branch/main/js/依赖检测.js');
require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/依赖检测.js');
检测依赖();
//加密后
evalPrivateJS('4ZFai6WdmDyH6oz/nhtVRLmKvoUg5wsLHMYcQURS3FcFSnRsh1drySmlUaq9i+3wo+Jg4/0WltZSeEhk515pl8ugSp/sJ0bZBw6cihfXZOTm6bWDcENtECiauhBo5b3DVfanahs/y0iZxcSL0PJAcQ==');
//新的加密后
evalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');
}
function 依赖检测(){ // 一级进行依赖检测,固定写法,废弃原来的检测依赖固定代码
require(version.jsRoot+'依赖检测.js');
检测依赖();
}
function 预处理(模板参数,ckUrl){
模板参数 = 模板参数||false;
ckUrl=ckUrl||"";
// log('进入了预处理...');
模板 = (typeof(模板)!=='undefined'&&模板)?模板:模板参数;
验证码 = (typeof(验证码)!=='undefined'&&验证码)?验证码:ckUrl;
ua = (typeof(ua)!=='undefined'&&ua)?ua:false;//指定ua var ua = PC_UA;
let 全局ua=lsg.getItem('ua','电脑');//电脑 手机
let obj = {
模板:模板||config.模板,
样式:['滚动','默认'].includes(lsg.getItem('样式','滚动'))?lsg.getItem('样式','滚动'):'滚动',//或者不填就是默认
按钮样式:lsg.getItem('按钮样式',''),//空
ua:全局ua,
}
if(ua){//指定ua加入config
Object.assign(obj,{指定ua:ua});
}
initConfig(obj);
let def_ua = 全局ua==='手机'?MOBILE_UA:PC_UA;//根据全局UA获得的ua字符串
def_ua = ua||def_ua; // 取指定ua和全局ua中的
// log('本小程序预处理默认UA:'+def_ua);
//先预处理依赖,后获取cookie
if(/^http/.test(验证码)){
// log('验证码:'+验证码);
if(!getMyVar('cookie')){
let ret = fetchCookie(验证码, {
headers: {
"User-Agent": def_ua
}
});
// log('cookie:'+ret);
let cookie = JSON.parse(ret||'[]');
putMyVar('cookie', cookie.join(';'));
}
}
引入动态分类()
}
function 匹配设置(col_type){//用于一级设置
let d = [];
col_type = col_type||'scroll_button';
d.push({
title:'清除匹配记录',
col_type:col_type,
url:$('清空匹配记录下次会重新匹配,第一次匹配速度将变慢,确认清空?').confirm(()=>{
clearMyVar('ssmuban');
clearMyVar('muban');
clearMyVar('yjmuban');
return 'toast://二级模板与搜索模板匹配记录已清除'
})
});
function localMb(local){//本地模板
// local: 一级模板,二级模板,搜索模板
// writeFile(root+local+'.json',JSON.stringify(inner));
// return inner
var root = 'hiker://files/rules/dzHouse/json/'; //模板根目录
let code = fetch(root+local+'.json')||'[]';
try {
return JSON.parse(code);
}catch (e) {
log(`本地${local}:${root+local+'.json'}有误:`+e.message);
log(code);
return []
}
}
d.push({
title:"指定一级模板",
col_type:col_type,
url:$('#noLoading#').lazyRule((localMb)=>{
let now = JSON.parse(getMyVar('yjmuban','{}')).名称||false;
log('当前一级模板:'+now);
let sel = localMb('一级模板').map(it=>now&&it.名称===now?'👉'+it.名称:it.名称);
return $(sel,2,'请指定一个一级模板').select(()=>{
input = input.replace(/👉/g,'');
// log(input);
putMyVar('yjmuban',JSON.stringify({名称:input})); //匹配成功保存上次匹配的模板,下次匹配直接排第一个
refreshPage(false);
return 'hiker://empty'
})
},localMb)
});
d.push({
title:"指定二级模板",
col_type:col_type,
url:$('#noLoading#').lazyRule((localMb)=>{
let now = JSON.parse(getMyVar('muban','{}')).名称||false;
log('当前二级模板:'+now);
let sel = localMb('二级模板').map(it=>now&&it.名称===now?'👉'+it.名称:it.名称);
return $(sel,2,'请指定一个二级模板').select(()=>{
input = input.replace(/👉/g,'');
// log(input);
putMyVar('muban',JSON.stringify({名称:input})); //匹配成功保存上次匹配的模板,下次匹配直接排第一个
refreshPage(false);
return 'hiker://empty'
})
},localMb)
});
d.push({
title:"指定搜索模板",
col_type:col_type,
url:$('#noLoading#').lazyRule((localMb)=>{
let now = JSON.parse(getMyVar('ssmuban','{}')).名称||false;
log('当前搜索模板:'+now);
let sel = localMb('搜索模板').map(it=>now&&it.名称===now?'👉'+it.名称:it.名称);
return $(sel,2,'请指定一个搜索模板').select(()=>{
input = input.replace(/👉/g,'');
// log(input);
putMyVar('ssmuban',JSON.stringify({名称:input})); //匹配成功保存上次匹配的模板,下次匹配直接排第一个
refreshPage(false);
return 'hiker://empty'
})
},localMb)
});
let nextMode = lsg.getItem('dr_mode','WEB')==='WEB'?'APP':'WEB';
d.push({
title:'模式:'+color(lsg.getItem('dr_mode','WEB'),'#1aad19'),
col_type: col_type,
url:$('#noLoading#').lazyRule((nextMode)=>{
return $(`切换一级匹配模式为${nextMode}?`).confirm((nextMode)=>{
require(getVar('dr依赖'));
lsg.setItem('dr_mode',nextMode);
refreshPage(false);
return 'hiker://empty'
},nextMode)
},nextMode)
});
return d
}
function 设置(d,end){
end = end||false;
if(typeof(page)==='undefined'||!page){
page = MY_PAGE||1;
}
if(parseInt(page)===1) {
if(!getMyVar('是否进入规则','')){
try {
eval(fetch(version.jsRoot+'更新.js',{timeout:2000}));
let jsUpdate = new Date(updateT).getTime();
// 依赖更新时间默认为当前减去一天
let localDate = lsg.getItem('dr依赖更新时间',''+(new Date().getTime()-3600*24*1000));
// if(parseInt(jsUpdate)!==parseInt(localDate)){
if(parseInt(jsUpdate)>parseInt(localDate)){
log('云端依赖更新时间:'+jsUpdate+'\n,本地依赖更新时间:'+localDate);
confirm({
title:'更新完毕',
// content:'已自动更新依赖\n本地依赖时间:'+new Date(parseInt(localDate)).toLocaleString()+'\n云端最新时间:'+new Date(jsUpdate).toLocaleString(),
content:'已自动更新依赖\n本地依赖时间:'+$.dateFormat(new Date(parseInt(localDate)),"yyyy-MM-dd HH:mm:ss")+'\n云端最新时间:'+$.dateFormat(new Date(jsUpdate),"yyyy-MM-dd HH:mm:ss"),
});
try {
更新依赖();
lsg.setItem('dr依赖更新时间',''+jsUpdate);
refreshPage(true);
}catch (e) {}
}
}catch (e) {
//confirm({title:'提示',content:e.message})
log(new Date().toLocaleString()+'检测更新错误,可能是超时返回了空源码:'+e.message)
}
}
putMyVar('是否进入规则','是');
let settings = {
title: '⚙️设置',
col_type: 'scroll_button',
url: $().rule((color,htmlTag,blank) => {
try {
require(getVar('dr依赖'));
}catch (e) {
setResult([{
title:e.message,
col_type:'long_text',
url:'hiker://empty'
}]);
}
function small(text) {
return htmlTag("small", text);
}
let d = [];
addListener('onClose', $.toString(()=>{
// refreshPage(false); //返回自动刷新使设置生效
}));
d.push({
title: '小程序个性化设置 '+blank()+small(color('帮助','#0048ff')),
desc: 'dr模板(道长多功能模板+reborn动态分类)\n影视/漫画/听书/小说/图片/随机小姐姐',
col_type: 'text_1',
url: $().rule(()=>{
setPageTitle('影漫模板套娃帮助');
require(config['模板']);
require("http://hiker.nokia.press/hikerule/rulelist.json?id=3187");//md插件
let d = [];
// let help = fetch(version.jsRoot+'帮助.html');
let help = "#### 获取帮助失败,请检查网络";
try {
help = fetch(version.jsRoot+'dr_help.md');
}catch (e) {}
d.push({
title:'<h4>更新日志:</h4><div>'+version.info.replace('\n','<br>')+'</div>',
col_type:'rich_text'
});
d.push({
// title:help,
title:marked.parse(help),
col_type:'rich_text'
});
setResult(d);
})
});
let all_cols = [''].concat(getColTypes());
// ['','text_2','text_3','text_4','text_5','flex_button']
let 按钮样式 = all_cols.map((it) => {
return it === (lsg.getItem('按钮样式', '')||'') ? '👉' + it : it;
});
d.push({
title: '选集按钮样式:' + (lsg.getItem('按钮样式', '')||''),
col_type: 'text_1',
url: $(按钮样式, 2, '请选择选集按钮样式').select(() => {
require(getVar('dr依赖'));
input = input.replace(/👉/g, '');
lsg.setItem('按钮样式', input);
refreshPage(true);
return 'toast://已切换选集按钮样式为:' + input;
})
});
let zdcs = '““””<b><span style="color: #FF0000">∨</span></b>';
let zdcss = lsg.getItem('折叠样式',zdcs)||zdcs;
d.push({
title:'动态分类折叠按钮样式:'+zdcss,
col_type:'text_1',
url:$(zdcss).input(()=>{
require(getVar('dr依赖'));
lsg.setItem('折叠样式',input);
refreshPage(false);
return 'hiker://empty'
})
});
let zkcs='““””<b><span style="color: #1aad19">∧</span></b>';
let zkcssd = lsg.getItem('展开样式',zkcs)||zkcs;
d.push({
title:'动态分类展开按钮样式:'+zkcssd,
col_type:'text_1',
url:$(zkcssd).input(()=>{
require(getVar('dr依赖'));
lsg.setItem('展开样式',input);
refreshPage(false);
return 'hiker://empty'
}),
extra:{
lineVisible:false
}
});
d = d.concat(匹配设置());
let catecolor = '#1aad19';
catecolor = (lsg.getItem('分类颜色',catecolor)||catecolor);
d.push({
title:'分类颜色:'+color(catecolor,catecolor),
col_type:'text_2',
url:$(catecolor).input(()=>{
require(getVar('dr依赖'));
lsg.setItem('分类颜色',input);
refreshPage(false);
return 'toast://已设置分类按钮颜色为:'+input
})
});
let jjwords = '100';
d.push({
title:'简介字数:'+color(lsg.getItem('简介字数',jjwords),'#ff7000'),
col_type:'text_2',
url:$(jjwords).input(()=>{
if(!parseInt(input)||parseInt(input)<=0){
return 'toast://请设置字数必须大于0'
}
require(getVar('dr依赖'));
lsg.setItem('简介字数',input);
refreshPage(false);
return 'toast://已设置简介字数为:'+input
})
});
let 模板样式 = ['滚动', '默认'].map((it) => {
return it === lsg.getItem('样式', '滚动') ? '👉' + it : it;
});
d.push({
title: '样式:' + lsg.getItem('样式', '滚动'),
col_type: 'text_3',
url: $(模板样式, 2, '请选择模板样式').select(() => {
require(getVar('dr依赖'));
input = input.replace(/👉/g, '');
lsg.setItem('样式', input);
refreshPage(true);
return 'toast://已切换模板样式为:' + input;
})
});
d.push({
title:"通免:"+color(lsg.getItem("通免","WEB"),"#ff7000"),
col_type:"text_3",
url:$('#noLoading#').lazyRule(()=>{
require(getVar('dr依赖'));
if(lsg.getItem("通免","X5")==="X5"){
lsg.setItem("通免","WEB");
}else{
lsg.setItem("通免","X5");
}
refreshPage(false);
return "toast://已设置仓库通免模式为:"+lsg.getItem("通免");
})
});
d.push({
title:"超时:"+color(lsg.getItem("timeout","5000"),"#ff7000"),
col_type:"text_3",
url:$(lsg.getItem("timeout","5000"),'请输入通免超时毫秒数').input(()=>{
require(getVar('dr依赖'));
if(Number(input)){
lsg.setItem("timeout",input);
refreshPage(false);
return "toast://已设置仓库通免超时时间为:"+lsg.getItem("timeout");
}else{
return "toast://超时设置不合理,必须为整数。推荐5000~15000";
}
})
});
let ua = ['电脑', '手机'].map((it) => {
return it === (lsg.getItem('ua', '电脑')||'电脑') ? '👉' + it : it;
});
d.push({
title: '全局UA:' + (lsg.getItem('ua', '电脑')||'电脑'),
col_type: 'text_2',
url: $(ua, 2, '请选择全局UA').select(() => {
require(getVar('dr依赖'));
input = input.replace(/👉/g, '');
lsg.setItem('ua', input);
refreshPage(true);
return 'toast://已切换全局UA为:' + input;
})
});
let 分隔符 = ['双空格', '换行符'].map((it) => {
return it === (lsg.getItem('分隔符', '换行符')||'换行符') ? '👉' + it : it;
});
d.push({
title: '分隔符:' + (lsg.getItem('分隔符','换行符')||'换行符'),
col_type: 'text_2',
url: $(分隔符, 2, '请选择分隔符').select(() => {
require(getVar('dr依赖'));
input = input.replace(/👉/g, '');
lsg.setItem('分隔符', input);
refreshPage(true);
return 'toast://已切换分隔符为:' + input;
})
});
d.push({
title:'清除已选动态分类',
col_type:'text_2',
url:$('因开发者未过滤错误分类导致切换到该分类后源码全丢,可通过此按钮重置,是否继续?').confirm(()=>{
clearMyVar('header.url');
clearMyVar('header.category');
// clearMyVar('header.fold');
return 'toast://已清除'
})
});
d.push({
title:'清除cookie',
col_type:'text_2',
url:$('开发者用于测试是否成功过网站验证的好帮手,清除后需要重新验证,继续?').confirm(()=>{
clearMyVar('cookie');
clearMyVar('请求头');
return 'toast://已清除cookie及请求头'
})
});
d.push({
title:'翻页阀值:'+color(lsg.getItem('翻页阀值',40),'#d96715'),
col_type:'text_2',
url:$(lsg.getItem('翻页阀值',40),'最低指定线路选集总数超过此值才会显示翻页元素').input(()=>{
if(isNaN(parseInt(input))){
return 'toast://滚犊子吧,输入的都不是数字'
}
let num = parseInt(input);
if(num<40){
return 'toast://不可以小于40,谢谢'
}
require(getVar('dr依赖'));
lsg.setItem('翻页阀值',num+'');
refreshPage(false);
return 'toast://已保存'
})
});
d.push({
title:'每页数量:'+color(lsg.getItem('每页数量',40),'#d96715'),
col_type:'text_2',
url:$(lsg.getItem('每页数量',40),'满足选集翻页模式时每页显示选集数量').input(()=>{
if(isNaN(parseInt(input))){
return 'toast://滚犊子吧,输入的都不是数字'
}
let num = parseInt(input);
if(num<40){
return 'toast://不可以小于40,谢谢'
}
require(getVar('dr依赖'));
lsg.setItem('每页数量',num+'');
refreshPage(false);
return 'toast://已保存'
})
});
d.push({
title:'清空翻页足迹',
col_type:'text_3',
url:$('清除所有dr小程序的二级翻页足迹,是否继续?').confirm(()=>{
require(getVar('dr依赖'));
lsg.removeItem('footHistory'); //移除足迹
refreshPage(false);
return 'toast://已清除足迹'
})
});
d.push({
title:'恢复出厂设置',
col_type:'text_3',
url:$('恢复所有自定义配置项为默认,是否继续?').confirm((zkcs,zdcs)=>{
require(getVar('dr依赖'));
clearMyVar('header.url');
lsg.clear(); //清除所有
lsg.setItem('分类颜色','#1aad19');
lsg.setItem('展开样式',zkcs);
lsg.setItem('折叠样式',zdcs);
lsg.setItem('分隔符', '换行符');
lsg.setItem('ua', '电脑');
lsg.setItem('按钮样式', '');
lsg.setItem('样式', '滚动');
// clearItem('dr_mode');
lsg.setItem('dr_mode','WEB');
// lsg.removeItem('footHistory');
refreshPage(false);
return 'toast://已恢复'
},zkcs,zdcs)
});
d.push((new 匹配设置('text_3')).slice(-1)[0]);//将匹配的模式切换最后一个放进去
d.push({
title: '🔙返回并刷新生效',
desc:'为节省性能,直接点左上角返回不会刷新和生效',
col_type: 'text_1',
url: $('#noLoading#').lazyRule(() => {
clearMyVar('是否进入规则');
back(true)
return 'hiker://empty'
})
});
d.push({
title: '♻清除依赖并返回升级',
desc:'清除所有dr依赖,等同于长按小程序标题清除缓存',
col_type: 'text_1',
url: $('确认清除所有dr系列小程序的缓存依赖吗?').confirm(() => {
deleteCache();
clearMyVar('是否进入规则');
back(true)
return 'toast://模块依赖缓存已清除'
})
});
setResult(d);
},color,htmlTag,blank)
};
if(!end){
d.unshift(settings)
}else{
d.splice(-1, 0, settings);
}
}
}
function 引入动态分类(){
initConfig({
categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',
categoryLocalLib: 'hiker://files/rules/js/categories-header.js',
categoryGiteeLib: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js',
categoryCodeBergLib: version.jsRoot+'categories-header.js',
UrlProcessorLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2849',
UrlProcessorLocalLib: 'hiker://files/rules/js/UrlProcessor.js',
UrlProcessorGiteeLib: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js',
动态分类匹配:'hiker://files/rules/js/动态分类匹配.js',
// 自动匹配:'https://gitlab.com/hjdhnx/hiker/-/raw/main/js/自动模板匹配.js',
自动匹配:version.jsRoot+'自动模板匹配.js',
通免:version.jsRoot+'lazy.js',
ui:version.jsRoot+'hikerUi.js',//dr增加组件库,可写json类数据
});
}
function 动态分类(d){//另一套动态分类写法
const empty = "hiker://empty"
try {
var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))
} catch (e) {
var categories = pdfa(html, 大类定位)
}
let init_cate = []
for (let i = 0; i < 20; i++) {
init_cate.push("0")
}
const fold = getMyVar('header.fold', "0")
const cate_temp_json = getMyVar('header.category', JSON.stringify(init_cate))
const cate_temp = JSON.parse(cate_temp_json)
if (parseInt(MY_PAGE) === 1) {
d.push({
title: fold === '1' ? '““””<b><span style="color: #FF0000">∨</span></b>' : '““””<b><span style="color: #1aad19">∧</span></b>',
url: $('#noLoading#').lazyRule((fold) => {
putMyVar('header.fold', fold === '1' ? '0' : '1');
refreshPage(false);
return "hiker://empty"
}, fold),
col_type: 'scroll_button',
})
categories.forEach((category, index) => {
let sub_categories = pdfa(category, 小类定位);
if (index === 0) {
sub_categories.forEach((item, key) => {
let title = pdfh(item, 分类标题)
d.push({
title: key.toString() === cate_temp[index] ? '““””<b><span style="color: ' + 分类颜色 + '">' + title + '</span></b>' : title,
url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {
let new_cate = []
params.cate_temp.forEach((cate, index) => {
new_cate.push(index === 0 ? params.key.toString() : "0")
})
putMyVar('header.category', JSON.stringify(new_cate))
putMyVar('header.url', input)
refreshPage(true)
return "hiker://empty"
}, {
cate_temp: cate_temp,
key: key,
page: page,
}),
col_type: 'scroll_button',
})
})
d.push({
col_type: "blank_block"
});
} else if (fold === '1') {
sub_categories.forEach((item, key) => {
let title = pdfh(item, 分类标题)
d.push({
title: key.toString() === cate_temp[index] ? '““””<b><span style="color: ' + 分类颜色 + '">' + title + '</span></b>' : title,
url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {
params.cate_temp[params.index] = params.key.toString()
putMyVar('header.category', JSON.stringify(params.cate_temp))
putMyVar('header.url', input)
refreshPage(true)
return "hiker://empty"
}, {
cate_temp: cate_temp,
index: index,
key: key,
page: page,
}),
col_type: 'scroll_button',
})
})
d.push({
col_type: "blank_block"
});
}
})
}
return d
}
function 香免(){//香佬通免
require(config.通免||version.jsRoot+'lazy.js');
}
function 混合(fn,detailUrl,system,web_url){//混合一级
if(typeof(system)==='undefined'){
system = true; // 如果不传就不要拦截设置
}
web_url = web_url||false;
if(lsg.getItem('dr_mode','WEB')==='APP'){
refreshX5Desc('float&&0');
refreshX5WebView('http://127.0.0.1:4848');//强制退出x5
var page = MY_PAGE;
fn(); // 执行混合函数,混合函数一般是下面这种自动一级函数
/*
true_url = 获取正确链接();
let cates = 打造动态分类([]);
设置(cates);
自动一级(null,null,cates);
*/
}else{
依赖检测();
// 一级书签('$detailUrl','$system');
if(web_url){
MY_URL = web_url.startsWith('http')?web_url:getHome(MY_URL.replace('hiker://empty##',''))+web_url
}
一级书签(detailUrl||'detail',system);
}
}
function 加载动态分类(mode){
// 模式不填就是gitee,1本地,2仓库,只能在一级里用此方法,并且预处理必须先加载
var jsUrl;
switch (mode) {
case 0:
jsUrl = config.categoryGiteeLib
case 1:
jsUrl = config.categoryLocalLib
break;
case 2:
jsUrl = config.categoryLib
break;
default:
jsUrl = config.categoryCodeBergLib
}
let htmlCategories=require(jsUrl);
return htmlCategories; //返回动态分类对象
}
function 加载链接处理(mode){
var jsUrl;
switch (mode) {
case 0:
jsUrl = config.UrlProcessorGiteeLib
case 1:
jsUrl = config.UrlProcessorLocalLib
break;
case 2:
jsUrl = config.UrlProcessorLib
break;
default:
jsUrl = config.UrlProcessorLib
}
let 链接处理工具=require(jsUrl);
return 链接处理工具; //返回链接处理工具对象
}
function 加载魔断(){
// let tools = 加载魔断() tools.renrenmi
return require('http://hiker.nokia.press/hikerule/rulelist.json?id=2971');
}
function 打造动态分类(定位列表,extra){
let cates=[];
if((Array.isArray(定位列表)&&定位列表.length<1)||!Array.isArray(定位列表)){
return cates
} else if(Array.isArray(定位列表)&&定位列表.length>0&&!定位列表[0].一级分类){//一级分类为空也返回空
return cates
}
extra = extra||{};
// log('html类型:'+typeof(html));
单次请求 = extra.单次请求||false;
分类颜色 = extra.分类颜色||(lsg.getItem('分类颜色','#1aad19')||'#1aad19');
源码 = extra.源码||'';
折叠 = extra.关闭折叠||'';
模式 = extra.模式||'';
if(折叠!==''){
关闭折叠 = !!折叠;
}else {
关闭折叠 = typeof (关闭折叠) === 'undefined' ? false : 关闭折叠;
}
// let ua = config.ua==='手机'?MOBILE_UA:PC_UA;
if(源码) {
html = 源码;
}else{
// html = (typeof (html) === 'undefined' || !html) ? (单次请求 ? getResCode() : 获取源码(true_url, ua)) : html;//全局变量,外部传进来的
html = (typeof (html) === 'undefined' || !html) ? (单次请求 ? getResCode() : 获取源码(true_url)) : html;//全局变量,外部传进来的
}
const 当前折叠状态 = getMyVar('header.fold', '1');
let 动态分类=加载动态分类(模式); //1本地 2仓库 其它gitee
let drzd = '““””<b><span style="color: #FF0000">∨</span></b>';
let drzk = '““””<b><span style="color: #1aad19">∧</span></b>';
动态分类.界面(cates)
.分类链接(true_url)
.选中的分类颜色(分类颜色)
.源码(html)
.页码(page)
.添加分类定位(定位列表)
if(!关闭折叠){
动态分类.开启内置折叠功能() // 必须
.折叠按钮样式({ title: 当前折叠状态==="1"?(lsg.getItem('折叠样式',drzd)||drzd):(lsg.getItem('展开样式',drzk)||drzk) }) // 可选
.第几行开始折叠(1) // 可选
.折叠按钮样式({ 折叠按钮插入行: 1 })
.折叠(当前折叠状态) // 必须
}
动态分类.开始打造分类();
return cates
}
function 获取正确链接(rule,url,调试){
true_url = (typeof(true_url)!=='undefined'&&true_url)?true_url:getMyVar('header.url', MY_URL); //隐士全局变量,外面可以不传
page = (typeof(page)!=='undefined'&&page)?page:MY_PAGE;
// config.动态分类匹配
rule = rule||[];
url = url||'';
调试 = 调试||false;
if(url.startsWith('hiker://')){
try {
let code = fetch(url);
eval(code);
if (rule.constructor === Array) {
rule = rule.concat(matches);
} else {
matches.unshift(rule);
rule = matches;
}
}catch (e) {}
}
// log($.stringify(rule));
let 链接处理工具 = 加载链接处理();
if(调试===true){
链接处理工具.debug();
}
true_url = 链接处理工具
.链接(true_url)
.页码(page)
.插入新处理规则(rule)
.获取处理结果();
return true_url
}
function 获取搜索链接(){
if(MY_URL.startsWith('hiker://empty##')){
var api = MY_RULE.url.replace('hiker://empty##','').split('#')[0].split('?')[0];
var host = getHome(api); // 获取域名
var sapi = MY_URL.replace("hiker://empty##","");//搜索接口
MY_URL=sapi.startsWith('http')?sapi:host+sapi;//看搜索接口是不是完整链接
}
log('搜索链接:'+MY_URL);
return MY_URL
}
function 获取源码(url,ua,referer,cookie,extrHeaders){//传url,ua和refer
url = url.replace('hiker://empty##','');//获取源码自动去除占位的前缀
let def_ua = config.ua==='手机'?MOBILE_UA:PC_UA;
def_ua = config.指定ua?config.指定ua:def_ua;//如果传了指定ua给预处理,优先级更高,必须是ua字符串
ua = ua||def_ua;
extrHeaders = extrHeaders||{};
let headers = {
'User-Agent': ua
};
if(typeof(referer)!=='undefined'&&referer.length>4){
headers.Referer = referer
}
if(typeof(cookie)!=='undefined'&&cookie.length>4){
headers.Cookie = cookie
}else{
// 获取源码在接入下载管理跳到其他规则子页面可能会无法获取,需要在进去的时候处理
if(getMyVar('cookie','')){
headers.Cookie = getMyVar('cookie');
}
}
try{
Object.assign(headers, extrHeaders);//合并其他的请求头
// log(headers);
putMyVar('请求头',JSON.stringify(headers)); // 把这个放进去,为了后面方便打印的时候进行读取
let html = fetch(url, {
headers: headers
});
if (/\?btwaf=/.test(html)) {//宝塔验证
url=url.split('#')[0]+'?btwaf'+html.match(/btwaf(.*?)\"/)[1];
log("宝塔验证跳转到:"+url);
html = fetch(url, {
headers: headers
});
}
return html
}catch(e){
log('获取源码出错'+e.message);
return ''
}
}
function 初始分类页(parse,deal){
if(!parse){
setError('参数一必传,为初始分类页链接的都定位');
}
deal = deal||function (u){
return u
};
//超级动态分类第一步,获取初始页
if(!getMyVar('header.url','')){