-
Notifications
You must be signed in to change notification settings - Fork 19
/
Storyteller_VM.js
918 lines (897 loc) · 54.3 KB
/
Storyteller_VM.js
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
// ==UserScript==
// @icon https://www.douyu.com/favicon.ico
// @name 独轮车-说书人自动弹幕发射器
// @namespace https://github.com/zhenshiluosuo/Storyteller-AutoBarrageForDouyuTV
// @author 飞天小协警
// @description 适配斗鱼/虎牙/Mildom/b站/ytb直播平台的自动弹幕发射器 抽象独轮车 说书人 Github:https://github.com/zhenshiluosuo/Storyteller-AutoBarrageForDouyuTV
// @match *://www.douyu.com/*
// @match *://www.huya.com/*
// @match *://live.bilibili.com/*
// @match *://www.youtube.com/*
// @match *://www.mildom.com/*
// @require https://greasyfork.org/scripts/414419-st-ex/code/ST_EX.js?version=861721
// @require https://greasyfork.org/scripts/420380-chtext-convert/code/chtext-convert.js?version=892303
// @version 2.5.6
// @license GPLv2
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_getResourceText
// @grant GM_notification
// @grant GM_download
// @connect sohu.com
// @namespace https://greasyfork.org/scripts/396285
// ==/UserScript==
(function () {
'use strict';
let tip = false;
let div1 = document.createElement('div');//默认悬浮窗
let div2 = document.createElement('div');//控制台
let div3 = document.createElement('div');//计数器
let div5 = document.createElement('div');//快速发射
let div6 = document.createElement('div');//资源库
let div7 = document.createElement('div');//定时设置
let div8 = document.createElement('div');//转换器
let div9 = document.createElement('div');//设置
let css1 = 'background: #D4F2E7;color:#000000;overflow: hidden;z-index: 996;position: fixed;text-align:center;width: 100px;height: 30px;box-sizing: border-box;border: 1px solid #ff921a;border-radius: 5px;padding: 0;right: 5px;top: 25%;display: flex; justify-content: center; align-items: center;line-height: 100%;'
let css2 = 'background: #FFFFFF;color:#ffffff;overflow: hidden;z-index: 997;position: fixed;padding:5px;text-align:center;width: 165px;height: 410px;box-sizing: border-box;border: 1px solid #ff921a;border-radius: 5px;right: 5px;top: 25%;display: none;';
let css3 = 'background: #FFFFFF;color:#000000;overflow: hidden;z-index: 999;position:absolute;text-align:center;width: 100%;height: 100%;box-sizing: border-box;border: 1px solid #ff921a;padding:5px;border-radius: 5px;top: 7%;right: 0px;display: none;';
let css6_1 = 'font-size: 12px; cursor: pointer; border: 1px solid #ff921a; height: 25px; margin: 1px; display: flex; justify-content: center; align-items: center; position: relative; float: left; padding: 3px;';
let div2_innerHTML1 = '<div><div style="position: absolute; cursor: move;" id="dlc-move"><svg viewBox="0 0 1024 1024" width="16" height="16"><path d="M192 448h192v128H192v128L0 512l192-192v128z m256 384v-192h128v192h128l-192 192-192-192h128z m384-256h-192V448h192V320l192 192-192 192V576zM576 192v192H448V192H320l192-192 192 192H576z" fill="#2c2c2c" p-id="4932"></path></svg></div><div id="dlc-website" style="cursor: pointer; position: absolute; top: 5px; right: 5px;"><svg viewBox="0 0 1024 1024" width="16" height="16"><path d="M512 1024A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z m3.008-92.992a416 416 0 1 0 0-832 416 416 0 0 0 0 832zM448 448h128v384H448V448z m0-256h128v128H448V192z" fill="#262626" p-id="3853"></path></svg></div><select style="display:inline-block;position:relative;" id="DuLunCheSelect"><option value="0">单句模式</option><option value="1">说书模式</option><option value="2">多句转轮</option><option value="3">编程模式</option><option value="4">计数器</option><option value="5">快速发射</option><option value="6">弹幕资源库</option><option value="7">插件设置</option></select></div><textarea id="DuLunCheText" rows="10" cols="20" placeholder="输入需要发射的内容到这里哦☆发射前请斟酌内容是否符合当前网站的弹幕规范☆最重要的是!大伙不爱看烂活!⚠使用出现问题可在Github或Greasyfork提出反馈哦" style="margin: 2px;overflow-y: scroll;overflow-wrap: normal;width: 90%;"></textarea><div style="margin: 0 auto;"><input type="text" placeholder="间隔时间(ms) 建议6000" style="display: block;position: relative;font-size: 10px;width: 90%;margin: 1px auto;" id="DuLunCheTime"/><div><button id="DuLunCheBtn" style="display: inline-block; background: #f70; color: #FFFFFF; width: 70px; height: 35px; margin: 2px;cursor: pointer; ">出动</button><button id="DuLunCheYincang" style="display: inline-block; background: #f70; color: #FFFFFF; width:70px; height: 35px; margin: 2px;cursor: pointer; ">隐藏</button></div><div style="display: flex; flex-direction: row;"><button id="DuLunCheDS" style="display: block; background: #f70; color: #FFFFFF; width: 45%; height: 25px; margin: 2px auto;cursor: pointer; padding: 0 3px;">定时启动</button><button id="DuLunCheConvert" style="display: block; background: #f70; color: #FFFFFF; width: 45%; height: 25px; margin: 2px auto;cursor: pointer; padding: 0 3px;">简繁火</button></div></div><div style="font-size: 75%;float: left;color: #777;user-select:none;">屏蔽白字黑奴(斗鱼):<input type="checkbox" id="dlc_btn1" value="0" /><br>屏蔽绿字色友(斗鱼):<input type="checkbox" id="dlc_btn2" value="1" /><br>屏蔽粉字男同(斗鱼):<input type="checkbox" id="dlc_btn3" value="2" /><br>临时应急弹幕(斗鱼):<input type="checkbox" id="dlc_btn4" value="2" /></div>';
let div3_innerHTML1 = '<textarea id="DuLunCheCountText" rows="6" cols="19" placeholder="输入计数内容,如:“本局豹女Q命中次数:”" style="margin: 0 auto;overflow: scroll;overflow-wrap: normal;"></textarea><div><h5 style="margin: 5px;">计数方式1</h5><div><input type="text" value="0" id="dlcCount1" style="width:40%;"/> / <input value="0" type="text" id="dlcCount2" style="width:40%;"/></div><div style="margin-top:5px;"><button id="dlcCountBtn1" style="cursor: pointer; height: 20px;width:40%;font-size:50%;background: #f70; color: #FFFFFF;">增加双值</button>   <button id="dlcCountBtn2" style="cursor: pointer; height: 20px;width:40%;font-size:50%;background: #f70; color: #FFFFFF;">增加分母</button><div style="margin: 2px;"><button id="dlcCountBtn3" style="cursor: pointer; width:50%;font-size:50%;background: #f70; color: #FFFFFF;height: 20px;">发送</button></div></div></div><div><h5 style="margin: 5px;">计数方式2</h5><div><input type="text" value="0" id="dlcCount3" style="width:35%;"/> 单位:<input value="次" type="text" id="dlcCountUnit" style="width:30%;"/></div><div style="margin-top:5px;"><button id="dlcCountBtn5" style="cursor: pointer; height: 20px;width:45%;font-size:50%;background: #f70; color: #FFFFFF;">增加值</button>   <button id="dlcCountBtn6" style="cursor: pointer; height: 20px;width:45%;font-size:50%;background: #f70; color: #FFFFFF;">发送</button></div><div style="margin: 5px;"><button id="dlcCountBtn0" style="cursor: pointer; width:50%;font-size:50%;background: #f70; color: #FFFFFF;height: 20px;">重置数据</button></div>';
let max_danmu_long = 43;//弹幕字数限制
let min_danmu_long = 18;//最小弹幕长度
let error_danmu_long = 25;//防止无法断句弹幕长度
let cycle_time;//弹幕周期,单位毫秒 建议设定至6000毫秒以上 过低有系统屏蔽风险
let min_cycle_time = 3000;
let story;//textarea内容
let story_arr = [];//story分段
let time_arr = [];//时间记录
let index;//小说分段
let interval;//小说定时器
let danmu_interval;//等待弹幕div加载定时器
let color_box = [];//禁止的弹幕颜色
let div_manmu;//网页弹幕div
let select_flag = false;//功能标记
let radio_flag = false;
let radio_change_flag = false;
let resource_flag = false;
let setting_flag = false;
let danmu_helperX = false;//应急弹幕标记
let danmu_count = 0;
let danmu_parent = null;
let website;//当前站点 0:斗鱼 1:虎牙 2:p站 3:ytb 5:mildom...
let btn = null; //发送按钮
let txt = null; //输入框
let dlc_radio_words; //热词
let ytb_iframe;//ytb直播右侧iframe
let mouse_flag = false;//鼠标拖动标记
let mouse_throttle = null;//鼠标拖动节流
let mouse_throttle_flag = false;//鼠标拖动节流标记
let mouseDownX;
let mouseDownY;
let initX;
let initY;
let dlc_time_state = 0;//定时启动 状态
let dlc_time_flag = false;//定时启动页面标记
let dlc_time_interval = null;//定时启动 定时器
let dlc_time_show_interval = null;
let st_h;
let st_m;
let en_h;
let en_m;
let chtext_convert_flag = false; //转换器标志
let chtext_convert_backup = '';
ch_info();
init();//初始化
//核心功能函数
function init() {
let url = window.location.host;
if(url === 'www.douyu.com') {
website = 0;
} else if(url === 'www.huya.com') {
max_danmu_long = 29;
min_danmu_long = 15;
error_danmu_long = 20;
website = 1;
} else if(url === 'live.bilibili.com') {
if (window.top !== window.self && !document.documentElement.getElementsByClassName('lite-room supportWebp').length) {
throw new Error('Frame error!');
}
max_danmu_long = 19;
min_danmu_long = 10;
error_danmu_long = 15;
website = 2;
} else if(url === 'www.youtube.com') {
if (window.top !== window.self) {
throw new Error('Frame error!');
}
max_danmu_long = 200;
min_danmu_long = 30;
error_danmu_long = 100;
website = 3;
} else if(url === 'www.mildom.com') {
max_danmu_long = 120;
min_danmu_long = 30;
error_danmu_long = 80;
website = 5;
}
div1.id = 'DuLunChe1';
div2.id = 'DuLunChe2';
div3.id = 'dlc-select-window';
div5.id = 'dlc-radio-window';
div9.id = 'dlc-setting-window';
div1.style.cssText = css1;
div2.style.cssText = css2;
div3.style.cssText = css3;
div5.style.cssText = css3;
div6.style.cssText = css3;
div9.style.cssText = css3;
div1.innerHTML = '<svg viewBox="0 0 1024 1024" width="16" height="16"><path d="M284.804377 360.254363l177.952351-104.775683a7.675874 7.675874 0 0 0 0-13.240883l-179.167697-104.903614a7.483977 7.483977 0 0 0-7.547943 0L98.152703 242.237797a7.675874 7.675874 0 0 0 0 13.240883l179.103731 104.839649a7.483977 7.483977 0 0 0 7.547943 0z m464.390391 0l177.95235-104.775683a7.675874 7.675874 0 0 0 0-13.240883l-179.103732-104.903614a7.483977 7.483977 0 0 0-7.611908 0L562.543093 242.237797a7.675874 7.675874 0 0 0 0 13.240883l179.103732 104.839649a7.483977 7.483977 0 0 0 7.611908 0z m-22.963657 39.402821l-0.639657 208.527917a7.675874 7.675874 0 0 1-3.710005 6.588458 7.483977 7.483977 0 0 1-7.547943 0L535.165808 509.933911a7.675874 7.675874 0 0 1-3.837937-6.588459l0.639656-208.527916c0-5.948803 6.332596-9.594843 11.321915-6.652425l179.167697 104.903615a7.675874 7.675874 0 0 1 3.837937 6.588458z m-429.465163 0l0.639656 208.527917c0 5.884837 6.268631 9.530877 11.257949 6.588458L487.831251 509.933911a7.675874 7.675874 0 0 0 3.837937-6.588459l-0.639657-208.527916a7.675874 7.675874 0 0 0-3.837937-6.652425 7.483977 7.483977 0 0 0-7.483977 0l-179.167697 104.903615a7.675874 7.675874 0 0 0-3.837937 6.588458z m422.684807 295.265295l2.494659 0.895519a7.675874 7.675874 0 0 1 3.773972 6.588459l0.639656 208.527916a7.675874 7.675874 0 0 1-3.837937 6.652424l-179.103732 104.839649a7.547943 7.547943 0 0 1-11.38588-6.588459l-0.639656-208.527916a7.675874 7.675874 0 0 1 3.837937-6.652424l179.103732-104.839649a7.483977 7.483977 0 0 1 7.611908 0z m-410.851167 0.895519l179.167697 104.903614a7.675874 7.675874 0 0 1 3.837937 6.588459l-0.639656 208.527916a7.675874 7.675874 0 0 1-3.837937 6.588459 7.483977 7.483977 0 0 1-7.483978 0L300.411988 917.586797a7.675874 7.675874 0 0 1-3.837937-6.588459l0.639656-208.527916c0-5.948803 6.332596-9.594843 11.321915-6.652424z m643.81395-137.206252l2.494659 0.895519a7.675874 7.675874 0 0 1 3.773971 6.652424L959.257859 774.62364a7.675874 7.675874 0 0 1-3.773972 6.588458l-179.103732 104.903615a7.547943 7.547943 0 0 1-11.38588-6.652425l-0.639656-208.527916c0-2.750522 1.471209-5.245181 3.837937-6.652424l179.103732-104.839649a7.483977 7.483977 0 0 1 7.611909 0zM75.636805 559.507265l179.167697 104.903614c2.366728 1.279312 3.837937 3.837937 3.837938 6.588459l-0.639657 208.527916a7.675874 7.675874 0 0 1-3.837937 6.588459 7.483977 7.483977 0 0 1-7.483977 0L67.513171 781.276064A7.675874 7.675874 0 0 1 63.7392 774.687605l0.639656-208.527916c0-5.884837 6.268631-9.594843 11.257949-6.652424z m436.885174-18.358133l2.558625 0.895519 179.103732 104.903614a7.675874 7.675874 0 0 1 0 13.176918l-177.888385 104.775683a7.675874 7.675874 0 0 1-7.547943 0L329.58031 660.125183a7.675874 7.675874 0 0 1 0-13.240883l177.888385-104.775683a7.483977 7.483977 0 0 1 7.547943 0z m439.187937-253.943505l2.430693 0.959484a7.675874 7.675874 0 0 1 3.837937 6.652425l0.575691 208.527916a7.675874 7.675874 0 0 1-3.837937 6.588459l-179.103732 104.839648a7.547943 7.547943 0 0 1-11.321914-6.588458l-0.639657-208.527917c0-2.750522 1.407244-5.309146 3.837938-6.652424l179.103731-104.839649a7.483977 7.483977 0 0 1 7.547943 0zM76.404392 288.229077l179.103732 104.903614c2.430694 1.279312 3.837937 3.837937 3.837937 6.588459l-0.639656 208.527916a7.675874 7.675874 0 0 1-3.773971 6.588459 7.483977 7.483977 0 0 1-7.547943 0l-179.103732-104.839649a7.675874 7.675874 0 0 1-3.837937-6.588459l0.639656-208.527916c0-5.948803 6.268631-9.594843 11.321914-6.652424zM512.585945 0.127931l2.430693 0.895519 179.167698 104.839649a7.675874 7.675874 0 0 1 0 13.240883L516.295951 223.879665a7.356046 7.356046 0 0 1-7.547943 0L329.58031 119.040016a7.675874 7.675874 0 0 1 0-13.240883L507.468695 1.02345a7.483977 7.483977 0 0 1 7.547943 0z" fill="#333333" p-id="3848"></path></svg><span style="font-size: 12px;font-weight: bold;">独轮车控制台</span>';
div2.innerHTML = div2_innerHTML1;
div3.innerHTML = div3_innerHTML1;
div1.onclick = () => {
div2.style.setProperty('display','block');
div1.style.setProperty('display','none');
if(!tip){
tip = true;
alert('欢迎使用持续更新的独轮车-说书人自动弹幕发射装置,当前版本V2.5.3(Crimson),对本插件的意见和问题可以到Github反馈哦,项目地址:https://github.com/zhenshiluosuo/Storyteller-AutoBarrageForDouyuTV/ 。多句转轮模式每句之间请用回车分隔,为了自己的账号和他人观看体验,建议发言间隔调至8000ms以上,喜欢的好兄弟打个星星吧~求求了!编程独轮车教程:奇数行为下一句发送的间隔毫秒时间,偶数行为发送内容(一行中内容过多挤到下一行也算到上一行中),比如第一行8000,第二行啦啦啦,第三行10000,第四行噜噜噜,则先发送啦啦啦,8秒后发送噜噜噜,10秒后再发送啦啦啦,8秒后发送噜噜噜 部分功能可能在非斗鱼平台上无法使用 定制功能:shinymoon@aliyun.com');
}
};
document.body.appendChild(div1);
document.body.appendChild(div2);
div2.appendChild(div3);
div2.appendChild(div5);
div2.appendChild(div6);
div2.appendChild(div7);
div2.appendChild(div8);
div2.appendChild(div9);
document.getElementById('DuLunCheYincang').onclick = () => {
div1.style.setProperty('display','flex');
div2.style.setProperty('display','none');
};
document.getElementById('DuLunCheBtn').onclick = () => {
if(document.getElementById('DuLunCheBtn').innerText === '出动') run();
else finish();
};
document.getElementById('DuLunCheSelect').onchange = () => {
let s_value = document.getElementById('DuLunCheSelect').value;
if(s_value === '4'){
select_flag = true;
div3.style.setProperty('display','block');
} else if(s_value !== '4' && select_flag){
select_flag = false;
div3.style.setProperty('display','none');
}
if(s_value === '5'){
radio_flag = true;
div5.style.setProperty('display','block');
} else if(s_value !== '5' && radio_flag){
radio_flag = false;
div5.style.setProperty('display','none');
}
if(s_value === '6'){
resource_flag = true;
div6.style.setProperty('display','block');
} else if(s_value !== '6' && resource_flag){
resource_flag = false;
div6.style.setProperty('display','none');
}
if(s_value === '7'){
setting_flag = true;
div9.style.setProperty('display','block');
document.getElementById('dlcsettingmincycletime').value = min_cycle_time;
document.getElementById('dlcsettingmindanmulong').value = min_danmu_long;
document.getElementById('dlcsettingerrordanmulong').value = error_danmu_long;
} else if(s_value !== '7' && setting_flag){
setting_flag = false;
div9.style.setProperty('display','none');
}
};
document.getElementById('dlcCountBtn1').onclick = () => {
document.getElementById('dlcCount1').value = "" + (parseInt(document.getElementById('dlcCount1').value) + 1);
document.getElementById('dlcCount2').value = "" + (parseInt(document.getElementById('dlcCount2').value) + 1);
};
document.getElementById('dlcCountBtn2').onclick = () => {
document.getElementById('dlcCount2').value = "" + (parseInt(document.getElementById('dlcCount2').value) + 1);
};
document.getElementById('dlcCountBtn5').onclick = () => {
document.getElementById('dlcCount3').value = "" + (parseInt(document.getElementById('dlcCount3').value) + 1);
};
document.getElementById('dlcCountBtn3').onclick = () => {
openFire(document.getElementById('DuLunCheCountText').value + " " + document.getElementById('dlcCount1').value + "/" + document.getElementById('dlcCount2').value);
};
document.getElementById('dlcCountBtn6').onclick = () => {
openFire(document.getElementById('DuLunCheCountText').value + " " + document.getElementById('dlcCount3').value + document.getElementById('dlcCountUnit').value);
};
document.getElementById('dlcCountBtn0').onclick = () => {
document.getElementById('DuLunCheCountText').value = "";
document.getElementById('dlcCount1').value = "0";
document.getElementById('dlcCount2').value = "0";
document.getElementById('dlcCount3').value = "0";
document.getElementById('dlcCountUnit').value = "次";
};
if(!website) {
//斗鱼弹幕屏蔽相关
document.getElementById('dlc_btn1').onclick = () => {
if(document.getElementById('dlc_btn1').checked){
color_box.push('');
}else{
for (let i = 0; i < color_box.length; i++){
if(color_box[i] === '') {color_box.splice(i, 1); break;}
}
}
};
document.getElementById('dlc_btn2').onclick = () => {
if(document.getElementById('dlc_btn2').checked){
color_box.push('rgb(102, 255, 0)');
}else{
for (let i = 0; i < color_box.length; i++){
if(color_box[i] === 'rgb(102, 255, 0)') {color_box.splice(i, 1); break;}
}
}
};
document.getElementById('dlc_btn3').onclick = () => {
if(document.getElementById('dlc_btn3').checked){
color_box.push('rgb(246, 68, 127)');
}else{
for (let i = 0; i < color_box.length; i++){
if(color_box[i] === 'rgb(246, 68, 127)') {color_box.splice(i, 1); break;}
}
}
};
document.getElementById('dlc_btn4').onclick = () => {
if(document.getElementById('dlc_btn4').checked){
danmu_helperX = true;
danmu_parent.style.setProperty('display','block');
}else{
danmu_helperX = false;
danmu_parent.style.setProperty('display','none');
}
};
//右上设置按钮
// document.getElementById('dlcSetting1').onmouseover = () => {
// document.getElementById('dlcSetting1').style.backgroundPositionY="-28px";
// };
// document.getElementById('dlcSetting1').onmouseout = () => {
// document.getElementById('dlcSetting1').style.backgroundPositionY="0px";
// };
//检测弹幕容器
danmu_interval = setInterval(() => {
if(document.getElementsByClassName('danmu-6e95c1')[0].childNodes.length){
div_manmu = document.getElementsByClassName('danmu-6e95c1')[0];
div_manmu.addEventListener('DOMNodeInserted', function () {
let len = div_manmu.childNodes.length;
for (let i = 0; i < len; i++){
if(div_manmu.childNodes[i].style.display === 'none')
continue;
for (let j = 0; j < color_box.length; j++){
if(div_manmu.childNodes[i].style.color === color_box[j]){
div_manmu.childNodes[i].style.display = 'none';
break;
}
}
}
},false);
clearInterval(danmu_interval);
}
}, 1000);
//关闭广告
//let ad_i1 = setInterval(() => {
// if(document.getElementsByClassName('liveosTag_1Z4iZj')[0].childNodes.length){
// document.getElementsByClassName('liveosTag_1Z4iZj')[0].style.display = 'none';//关手游广告
// clearInterval(ad_i1);
// }
//},1000);
//应急弹幕
let danmu_helper_i = setInterval(() => {
if(document.getElementsByClassName('Barrage-list')[0].childElementCount){
let danmu_css = `
<style>
.danmu1 {
margin: 5px;
height: 30px;
font-size: 25px;
font-weight: bold;
color: white;
position: absolute;
visibility: hidden;
animation: move1 9s linear;
-webkit-animation-name: move1 9s linear;
}
@keyframes move1 {
0% {
visibility: visible;
transform: translateX(1600px);
-webkit-transform: translateX(1600px);
}
100% {
visibility: visible;
transform: translateX(-600px);
-webkit-transform: translateX(-600px);
}
}
</style>`;
let ele = document.createElement('div');
ele.innerHTML = danmu_css;
document.getElementsByTagName('head')[0].appendChild(ele.firstElementChild);//注入css
danmu_parent = document.createElement('div');
danmu_parent.id = 'div_20200604';
danmu_parent.style.width = '100%';
danmu_parent.style.height='92%';
danmu_parent.style.position='absolute';
danmu_parent.style.display = 'none';
document.getElementsByClassName('layout-Player-videoMain')[0].appendChild(danmu_parent);
clearInterval(danmu_helper_i);
document.getElementsByClassName('Barrage-list')[0].addEventListener('DOMNodeInserted', () => {
if(danmu_helperX){
let danmu_text = document.getElementsByClassName('Barrage-list')[0].lastChild.getElementsByClassName('Barrage-content')[0].innerText;
let danmu_div = document.createElement('div');
danmu_div.style.width = '' + danmu_text.length * 25 + 'px';
danmu_div.innerHTML = danmu_text;
if(danmu_parent.childElementCount){
danmu_div.style.top = '' + (++danmu_count % 12 * 30) + 'px';
}else{
danmu_count = 0;
}
danmu_div.classList.add("danmu1");
danmu_parent.appendChild(danmu_div);
setTimeout(() => {
danmu_parent.removeChild(danmu_div);
},9000);
}
})
}
},1000);
} else if(website === 1) {
let ad_i1 = setInterval(() => {
if(document.getElementById('J_roomGgTop').childNodes.length){
document.getElementById('J_roomGgTop').style.display = 'none';//上方广告
clearInterval(ad_i1);
}
},1000);
let ad_i2= setInterval(() => {
if(document.getElementsByClassName('room-business-game')[0].childNodes.length){
document.getElementsByClassName('room-business-game')[0].style.display = 'none';//关底部广告栏
clearInterval(ad_i2);
}
},1000);
} else if(website === 3) {
let close_autoPlay = setInterval(() => {
if(document.getElementById('toggleButton')){
document.getElementById('toggleButton').click();//关自动播放
clearInterval(close_autoPlay);
}
},1000);
}
//找弹幕发射元素
let btn_Interval = setInterval(() => {
if(!btn){
if(website === 0) {
btn = document.getElementsByClassName('ChatSend-button')[0];
} else if(website === 1) {
btn = document.querySelector('#player-full-input-btn');
} else if(website === 2) {
btn = document.getElementsByClassName('bl-button live-skin-highlight-button-bg bl-button--primary bl-button--small')[0];
} else if(website === 3) {
ytb_iframe = document.getElementById('chatframe').contentWindow;
btn = ytb_iframe.document.querySelector('#send-button button');
} else if(website === 5) {
btn = document.getElementsByClassName('send-msg-btn')[0];
}
if(btn) {
clearInterval(btn_Interval);
}
}
},100);
let txt_Interval = setInterval(() => {
if(!txt){
if(website === 0) {
txt = document.getElementsByClassName('ChatSend-txt')[0];
} else if(website === 1) {
txt = document.querySelector('#player-full-input-txt');
} else if(website === 2) {
txt = document.getElementById('chat-control-panel-vm').getElementsByTagName('textarea')[0];
} else if(website === 3) {
ytb_iframe = document.getElementById('chatframe').contentWindow;
txt = ytb_iframe.document.querySelector('#input.yt-live-chat-text-input-field-renderer');
} else if(website === 5) {
txt = document.getElementsByClassName('chat-panel-input')[0];
}
if(txt) {
clearInterval(txt_Interval);
}
}
},100);
//读取本地数据
if(window.localStorage) {
if(window.localStorage.dlctime) {
document.getElementById('DuLunCheTime').value = '' + window.localStorage.dlctime;
}
if(window.localStorage.dlcstory) {
document.getElementById('DuLunCheText').value = window.localStorage.dlcstory;
}
}
//快速发射模块
div5.innerHTML = `<button style="cursor: pointer; background: #ff921a; width: 80%; height: 7%; margin: 3px auto; text-align: center; color: white;" id="dlc_radio_change">修改</button>
<div style="cursor: pointer; border: 1px solid #ff921a; width: 85%; height: 13%; margin: 2px auto; display: flex; justify-content: center; align-items: center;" id="dlc_radio_words0"></div>
<div style="cursor: pointer; border: 1px solid #ff921a; width: 85%; height: 13%; margin: 2px auto; display: flex; justify-content: center; align-items: center;" id="dlc_radio_words1"></div>
<div style="cursor: pointer; border: 1px solid #ff921a; width: 85%; height: 13%; margin: 2px auto; display: flex; justify-content: center; align-items: center;" id="dlc_radio_words2"></div>
<div style="cursor: pointer; border: 1px solid #ff921a; width: 85%; height: 13%; margin: 2px auto; display: flex; justify-content: center; align-items: center;" id="dlc_radio_words3"></div>
<div style="cursor: pointer; border: 1px solid #ff921a; width: 85%; height: 13%; margin: 2px auto; display: flex; justify-content: center; align-items: center;" id="dlc_radio_words4"></div>
<div style="cursor: pointer; border: 1px solid #ff921a; width: 85%; height: 13%; margin: 2px auto; display: flex; justify-content: center; align-items: center;" id="dlc_radio_words5"></div>
<div id="dlc-radio-revise-window" style="display: none; border: 1px solid #ff921a;border-radius: 5px;background: white; position: fixed; width: 420px; height:300px; top: 50%; left: 50%; transform: translate(-50%, -50%);z-index: 1000;">
<input style="cursor:pointer; display: block; margin: 5px auto; width: 85%; height: 25px; padding: 3px;" type="text" id="dlc_radio_input0" placeholder="字符限制30以内,超出部分将在保存时剪除" />
<input style="display: block; margin: 5px auto; width: 85%; height: 25px; padding: 3px;" type="text" id="dlc_radio_input1" placeholder="字符限制30以内,超出部分将在保存时剪除" />
<input style="display: block; margin: 5px auto; width: 85%; height: 25px; padding: 3px;" type="text" id="dlc_radio_input2" placeholder="字符限制30以内,超出部分将在保存时剪除" />
<input style="display: block; margin: 5px auto; width: 85%; height: 25px; padding: 3px;" type="text" id="dlc_radio_input3" placeholder="字符限制30以内,超出部分将在保存时剪掉" />
<input style="display: block; margin: 5px auto; width: 85%; height: 25px; padding: 3px;" type="text" id="dlc_radio_input4" placeholder="字符限制30以内,超出部分将在保存时剪除" />
<input style="display: block; margin: 5px auto; width: 85%; height: 25px; padding: 3px;" type="text" id="dlc_radio_input5" placeholder="字符限制30以内,超出部分将在保存时剪除" />
<button style="background: #ff921a; width: 30%; height: 12%; margin: 6px auto; text-align: center; color: white;" id="dlc_radio_change1">确认</button>
<button style="background: #ff921a; width: 30%; height: 12%; margin: 6px auto; text-align: center; color: white;" id="dlc_radio_change0">取消</button>
</div>`;
if(window.localStorage) {
if(window.localStorage.dlcwords) {
dlc_radio_words = window.localStorage.dlcwords.split('@%*');
} else {
dlc_radio_words = ['火速展示吧', '刚来,谁的锅', '我看了一下,主播好像是我爹', '主播一年C一把,想看carry局的明年再来', '滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚', '尬尬尬尬尬尬尬尬尬尬尬尬尬尬尬尬'];
window.localStorage.setItem('dlcwords', dlc_radio_words.join('@%*'));
}
} else {
dlc_radio_words = ['火速展示吧', '刚来,谁的锅', '我看了一下,主播好像是我爹', '主播一年C一把,想看carry局的明年再来', '滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚', '尬尬尬尬尬尬尬尬尬尬尬尬尬尬尬尬'];
}
document.getElementById('dlc_radio_change').onclick = () => {
if(radio_change_flag) {
radio_change_flag = false;
document.getElementById('dlc-radio-revise-window').style.setProperty('display','none');
} else {
for(let i = 0; i < dlc_radio_words.length; i++) {
document.getElementById('dlc_radio_input' + i).value = dlc_radio_words[i];
}
radio_change_flag = true;
document.getElementById('dlc-radio-revise-window').style.setProperty('display','block');
}
}
for(let i = 0; i < dlc_radio_words.length; i++) {
document.getElementById('dlc_radio_words' + i).innerHTML = '<span">' + dlc_radio_words[i] + '</span>';
document.getElementById('dlc_radio_words' + i).onclick = () => {
let txt_store = '';
if(txt.innerText !== '') {
txt_store = txt.innerText;
txt.innerText = '';
}
openFire(dlc_radio_words[i]);
if(txt_store.length) {
txt.innerText = txt_store;
}
}
}
document.getElementById('dlc_radio_change1').onclick = () => {
for(let i = 0; i < dlc_radio_words.length; i++) {
dlc_radio_words[i] = document.getElementById('dlc_radio_input' + i).value;
if(dlc_radio_words[i].length > 30){
dlc_radio_words[i] = dlc_radio_words[i].slice(0,30);
}
document.getElementById('dlc_radio_words' + i).innerHTML = '<span">' + dlc_radio_words[i] + '</span>';
}
if(window.localStorage) {
window.localStorage.setItem('dlcwords', dlc_radio_words.join('@%*'));
}
radio_change_flag = false;
document.getElementById('dlc-radio-revise-window').style.setProperty('display','none');
}
document.getElementById('dlc_radio_change0').onclick = () => {
radio_change_flag = false;
document.getElementById('dlc-radio-revise-window').style.setProperty('display','none');
}
//拖动
let divm = document.getElementById('dlc-move');
divm.onmousedown = (e) => {
mouse_flag = true;
mouseDownX = e.pageX;
mouseDownY = e.pageY;
initX = div2.offsetLeft;
initY = div2.offsetTop;
}
divm.onmousemove = (e) => {
if(mouse_flag) {
if(!mouse_throttle_flag) {
mouse_throttle_flag = true;
mouse_throttle = setTimeout(() => {
mouse_throttle_flag = false;
let mouseMoveX = e.pageX, mouseMoveY = e.pageY;
div2.style.left = parseInt(mouseMoveX) - parseInt(mouseDownX) + parseInt(initX) + "px";
div2.style.top = parseInt(mouseMoveY) - parseInt(mouseDownY) + parseInt(initY) + "px";
},5);
}
}
}
divm.onmouseup = (e) => {
mouse_flag = false;
}
//资源库模块
div6.innerHTML = `
<div id = 'dlc-resource-mod1' style="overflow: hidden; width: 100%; box-sizing: border-box; position: relative; margin 0; border: 2px solid #ff921a;border-radius: 5px; padding: 1px;">
<p style="margin-top: 1px; margin-bottom: 1px;">快射模块</p>
</div>
<div id = 'dlc-resource-mod2' style="overflow: hidden; width: 100%; box-sizing: border-box; position: relative; margin 0; border: 2px solid #ff921a;border-radius: 5px; padding: 1px;">
<p style="margin-top: 1px; margin-bottom: 1px;">说书模块</p>
</div>`;
let rm1 = document.getElementById('dlc-resource-mod1');
let rm2 = document.getElementById('dlc-resource-mod2');
for(let i = 0; i < titles_1.length; i++) {
let temp = document.createElement('div');
temp.innerHTML = '<span>' + titles_1[i] + '</span>';
temp.style.cssText = css6_1;
rm1.appendChild(temp);
temp.onclick = () => {
for(let j = 0; j < dlc_radio_words.length; j++) {
dlc_radio_words[j] = data_1[i][j];
document.getElementById('dlc_radio_words' + j).innerHTML = '<span">' + dlc_radio_words[j] + '</span>';
}
document.getElementById('DuLunCheSelect').value = 5;
let event = document.createEvent("HTMLEvents");
event.initEvent("change", true, true);
document.getElementById('DuLunCheSelect').dispatchEvent(event);
}
}
for(let i = 0; i < titles_2.length; i++) {
let temp = document.createElement('div');
temp.innerHTML = '<span>' + titles_2[i] + '</span>';
temp.style.cssText = css6_1;
rm2.appendChild(temp);
temp.onclick = () => {
document.getElementById('DuLunCheText').value = data_2[i];
document.getElementById('DuLunCheSelect').value = 1;
let event = document.createEvent("HTMLEvents");
event.initEvent("change", true, true);
document.getElementById('DuLunCheSelect').dispatchEvent(event);
}
}
//安装信息
document.getElementById('dlc-website').onclick = () => {
window.open("https://greasyfork.org/zh-CN/scripts/396285", "_blank");
}
//定时设置
document.getElementById('DuLunCheDS').onclick = () => {
if(!dlc_time_flag) {
dlc_time_flag = true;
document.getElementById('dlc-time-now').innerText = (Date()).split('(')[0];
dlc_time_show_interval = setInterval(() => {
document.getElementById('dlc-time-now').innerText = (Date()).split('(')[0];
}, 1000);
div7.style.setProperty('display', 'block');
} else {
dlc_time_flag = false;
clearInterval(dlc_time_show_interval);
dlc_time_show_interval = null;
div7.style.setProperty('display', 'none');
}
}
let css7 = 'color: #000000; display: none; border: 1px solid #ff921a;border-radius: 5px;background: white; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 1000; padding: 2px;'
div7.style.cssText = css7;
div7.innerHTML = `
<div style="margin: 1px;">
<span id="dlc-time-now"></span>
</div>
<div style="margin: 1px;">
<span>开始时间(时:分):</span><input id="dlc-st-h" type="text" style="width: 3em;"> : <input id="dlc-st-m" type="text" style="width: 3em;">
</div>
<div style="margin: 1px;">
<span>结束时间(时:分):</span><input id="dlc-en-h" type="text" style="width: 3em;"> : <input id="dlc-en-m" type="text" style="width: 3em;">
</div>
<div style="margin: 1px;">
<button style="background: #ff921a; width: 35%; height: 20%; margin: 3px auto; text-align: center; color: #FFFFFF;" id="dlc_time_change1">确认</button>
<button style="background: #ff921a; width: 35%; height: 20%; margin: 3px auto; text-align: center; color: #FFFFFF;" id="dlc_time_change0">取消</button>
</div>
`;
document.getElementById('dlc_time_change1').onclick = () => {
if(!dlc_time_state) {
st_h = parseInt(document.getElementById('dlc-st-h').value);
st_m = parseInt(document.getElementById('dlc-st-m').value);
en_h = parseInt(document.getElementById('dlc-en-h').value);
en_m = parseInt(document.getElementById('dlc-en-m').value);
console.log(st_h, st_m);
if((st_h >= 0 && st_h <= 23) && (st_m >= 0 && st_m <= 60) && (en_h >= 0 && en_h <= 23) && (en_m >= 0 && en_m <= 60)) {
dlc_time_state = 1;
alert('定时启动设置成功,启动时间:' + st_h + '时' + st_m + '分,' + '结束时间:' + en_h + '时' + en_m + '分。' + '注:如果当天该时刻已过去则明天启动');
dlc_time_interval = setInterval(() => {
let now_time = (Date()).split(' ')[4].split(':');
let [hh, mm] = [parseInt(now_time[0]), parseInt(now_time[1])];
if(dlc_time_state === 1 && hh === st_h && mm === st_m) {
dlc_time_state = 2;
run();
} else if(dlc_time_state === 2 && hh === en_h && mm === en_m) {
finish();
dlc_time_state = 0;
}
}, 2000);
div7.style.setProperty('display', 'none');
} else {
alert('请检查时间格式是否正确');
}
}
}
document.getElementById('dlc_time_change0').onclick = () => {
dlc_time_flag = false;
clearInterval(dlc_time_show_interval);
dlc_time_show_interval = null;
div7.style.setProperty('display', 'none');
}
//简繁火 DuLunCheConvert
let css8 = 'width: 450px; height: 50px; color: #FFFFFF; display: none; border: 1px solid #ff921a;border-radius: 5px;background: white; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 1001; padding: 2px;'
div8.style.cssText = css8;
div8.innerHTML = `
<button id="dlcconvertbtn1" style="flex: 1; background-color:rgb(255,0,0);">简转繁</button>
<button id="dlcconvertbtn2" style="flex: 1; background-color:rgb(255,165,0);">繁转简</button>
<button id="dlcconvertbtn3" style="flex: 1; background-color:rgb(255,255,0);">简转火</button>
<button id="dlcconvertbtn4" style="flex: 1; background-color:rgb(0,255,0);">火转简</button>
<button id="dlcconvertbtn5" style="flex: 1; background-color:rgb(0,127,255);">繁转火</button>
<button id="dlcconvertbtn6" style="flex: 1; background-color:rgb(0,0,255);">火转繁</button>
<button id="dlcconvertbtn7" style="flex: 1; background-color:rgb(139,0,255);">还原</button>
<button id="dlcconvertbtn8" style="flex: 1;">隐藏</button>
`;
document.getElementById('DuLunCheConvert').onclick = () => {
if(!chtext_convert_flag) {
chtext_convert_flag = true;
div8.style.setProperty('display', 'flex');
chtext_convert_backup = document.getElementById('DuLunCheText').value;
} else {
chtext_convert_flag = false;
div8.style.setProperty('display', 'none');
}
}
for(let i = 1; i < 7; i++) {
let btnname = 'dlcconvertbtn' + i;
document.getElementById(btnname).onclick = (e) => {
let _type = parseInt(e.path[0].id.slice(-1));
document.getElementById('DuLunCheText').value = convert(document.getElementById('DuLunCheText').value, _type);
}
}
document.getElementById('dlcconvertbtn7').onclick = () => {
document.getElementById('DuLunCheText').value = chtext_convert_backup;
}
document.getElementById('dlcconvertbtn8').onclick = () => {
chtext_convert_flag = false;
div8.style.setProperty('display', 'none');
}
//设置
div9.innerHTML = `
<div><div>设置最小时间周期限制</div><input id="dlcsettingmincycletime" type="text" style="margin: 0 auto; width: 80%;" /></div>
<div><div>说书模式最小弹幕长度</div><input id="dlcsettingmindanmulong" type="text" style="margin: 0 auto; width: 80%;" /></div>
<div><div>说书模式防断句弹幕长度</div><input id="dlcsettingerrordanmulong" type="text" style="margin: 0 auto; width: 80%;" /></div>
<div>注:只对当前页面插件生效,刷新后重置</div>
<button id="dlcsettingsave" style="display: block; background: #f70; color: #FFFFFF; width: 45%; height: 25px; margin: 2px auto;cursor: pointer; padding: 0 3px;">保存</button>
<div style="text-align: left; margin-top: 20px;"> 声明:本插件作者为成都第二网红李赣和瑞典主播电棍粉丝,对于其他圈子群体一概不了解不支持不协助。禁止使用本插件从事有损中华人民共和国公民合法权益的行为,不服就来斗鱼12306直播间来碰上那么一碰,看我棍爹干不干你就完了❤。</div>
`;
document.getElementById('dlcsettingsave').onclick = () => {
min_cycle_time = parseInt(document.getElementById('dlcsettingmincycletime').value);
min_danmu_long = parseInt(document.getElementById('dlcsettingmindanmulong').value);
error_danmu_long = parseInt(document.getElementById('dlcsettingerrordanmulong').value);
alert('修改成功');
}
}
//发射弹幕
function run() {
let _value = document.getElementById('DuLunCheSelect').value;
document.getElementById('DuLunCheBtn').innerText = '中止';
story = document.getElementById('DuLunCheText').value;
cycle_time = parseInt(document.getElementById('DuLunCheTime').value);
if(_value === '3' || website === 3){
} else if(!story.length || !cycle_time){
alert('请勿空置运行!');
finish();
return;
} else if(cycle_time < min_cycle_time) {
alert('请珍惜账号 加大发言间隔!');
finish();
document.getElementById('DuLunCheTime').value = '9999';
return;
}
//存储运行信息
if(window.localStorage) {
window.localStorage.dlctime = cycle_time;
window.localStorage.dlcstory = story;
}
if(_value === '0') {
if (story.length > max_danmu_long){
story = story.slice(0, max_danmu_long);
}
interval = setInterval(() => {
openFire(story);
}, cycle_time);
} else if(_value === '3'){
let temp_arr = story.split('\n');
story_arr = [];
time_arr = [];
if(temp_arr.length % 2){
alert('程序存在错误!请检查是否有多余的回车或内容与时间是否对应');
finish();
}else{
for(let i = 0; i < temp_arr.length; i++){
if(i % 2){
if(temp_arr[i].length > max_danmu_long){
temp_arr[i] = temp_arr[i].substr(0, max_danmu_long);
}
story_arr.push(temp_arr[i]);
}else{
let time_temp = parseInt(temp_arr[i]);
if(!time_temp || time_temp < 3000){
alert('程序存在错误!请检查时间格式或等待时间是否小于3000毫秒或者是否过大');
finish();
break;
}
time_arr.push(time_temp);
}
}
index = 0;
function _f(){
if(index === story_arr.length){
index = 0;
}
let res = openFire(story_arr[index]);
clearInterval(interval);
cycle_time = time_arr[index];
if(res) {
index++;
}
interval = setInterval(_f, cycle_time);
}
interval = setInterval(_f, 1);
}
} else {
if(_value === '1')
get_better_sentence();
else
multiple();
let len = story_arr.length;
index = 0;
interval = setInterval(() => {
if(index === len){//小说循环
index = 0;
}
let res = openFire(story_arr[index]);
if(res) {
index++;
}
}, cycle_time);
}
}
//ch
function ch_info() {
k().then((result) => {
let res = result.indexOf('台湾省');
if(res !== -1) {
setTimeout(() => {
div1.innerHTML = '';
div1.style.display = 'none';
div2.innerHTML = '';
div2.style.display = 'none';
},1000)
}
});
}
//结束发射
function finish() {
document.getElementById('DuLunCheBtn').innerText = '出动';
clearInterval(interval);
story_arr = [];
time_arr = [];
}
//小说分段
function get_better_sentence() {
let len = story.length;
let flag = 0;//引号标记
let str = '';
for (let i = 0; i < len; i++) {
if((story.charAt(i) === '。' || story.charAt(i) === '!' || story.charAt(i) === '?' || story.charAt(i) === '…' || story.charAt(i) === ' ') && str.length >= min_danmu_long && !flag) {
str += story.charAt(i);
story_arr.push(str);
str = '';
}else if(story.charAt(i) === '“' || story.charAt(i) === '『' || story.charAt(i) === '「') {
str += story.charAt(i);
flag = 1;
}else if(story.charAt(i) === '”' || story.charAt(i) === '』' || story.charAt(i) === '」') {
str += story.charAt(i);
flag = 0;
}else if((story.charAt(i) === ',' || story.charAt(i) === ';' || story.charAt(i) === ':' || story.charAt(i) === '。' || story.charAt(i) === '!' || story.charAt(i) === '?' || story.charAt(i) === '…') && str.length >= error_danmu_long) {
str += story.charAt(i);
story_arr.push(str);
str = '';
}else if(i === len - 1 || str.length >= max_danmu_long) {
str += story.charAt(i);
story_arr.push(str);
str = '';
}else if(story.charAt(i) === ' ' && i < len - 1 && story.charAt(i + 1) === ' ') {
continue;
}else {
str += story.charAt(i);
}
}
}
//转轮填充
function multiple() {
let len = story.length;
let str = '';
let flag = true;
for (let i = 0; i < len; i++){
if((story.charAt(i) === '\n') && str.length){
story_arr.push(str);
str = '';
}else if(str.length > max_danmu_long){
continue;
}else{
str += story.charAt(i);
if(i === len - 1){
story_arr.push(str);
}
}
}
}
//pilipili发射api
// async function send_Danmu(danmuContent, roomId) {
// console.log('进入bapi');
// return BAPI.room.get_info(roomId).then((res) => {
// console.log('res:', res);
// return BAPI.sendLiveDanmu(danmuContent, res.data.room_id).then((response) => {
// console.log('response:', response);
// if (response.code === 0 && !response.msg) {
// console.log('发送成功');
// } else {
// console.log('发送出错');
// }
// }, () => {
// console.log('发送失败');
// })
// }), () => {
// console.log('信息获取失败');
// };
// }
//通用发射函数
function openFire(value) {
if (txt.innerText === '') {
if(!website) {
document.getElementsByClassName('ChatSend-txt')[0].value = value;
} else if (website === 3) {
txt.textContent = value;
} else if (website === 5) {
const t = [...Object.keys(txt)].filter(v => v.includes("__reactInternalInstance$"));
txt[t].pendingProps.onChange({target: {value: value}});
} else{
txt.value = value;
}
} else {
return false;
}
if(website === 2) {
txt.dispatchEvent(new InputEvent('input'));
setTimeout(() => {btn.click();}, 50);
} else if(website === 3) {
txt.dispatchEvent(new InputEvent('input'));
btn.click();
} else if(website === 5) {
btn.click();
} if (btn.innerHTML === '发送') {
if(website === 1) {
btn.click();
} else if(website === 0) {
document.getElementsByClassName('ChatSend-button')[0].click();
}
}
return true;
}
//k函数
function k() {
return new Promise((resolve, reject)=> {
GM_xmlhttpRequest({
method: "GET",
url: "http://pv.sohu.com/cityjson",
onload: function(response){
resolve(response.responseText);
},
onerror: function(response){
reject("请求失败");
}
});
});
}
})();