// ==UserScript==
// @author Gamyou
// @version 1.4.0
// @note 22-08-13 1.4.0 实现阿B各直播间数据分离保存和油猴脚本更新提示功能
// @note 22-08-05 1.3.0 增加播放器底部登录(不可用)提示和Haruna的隐藏功能
// @note 22-07-29 1.2.6 修复初始化后的常量被赋值和没能初始化成功组件时系统提示加载超时的问题
// @note 22-07-24 1.2.5 增加分组启用按钮,并优化设置面板样式
// @note 22-07-23 1.2.4 修复弹幕分组数据都为空时,旧数据重复合并的BUG
// @note 22-07-16 1.2.3 修复设置弹幕时旧(初始)数据没有清空的BUG
// @note 22-06-24 1.2.2 优化部分代码
// @note 22-06-20 1.2.1 修复定时停止不能再开始的BUG
// @note 22-06-19 1.2.0 添加弹幕设置功能
// ==/UserScript==
!function(){window.autoSendDanmuModuleLoaded=!1;let e,t,a,l,n,d,i,o,c,r,s,p,u,m,h,b={version:3,random:!0,data1:{available:!0,values:["弹幕①","弹幕②"]},data2:{available:!0,values:["弹幕③","弹幕④"]},data3:{available:!0,values:["弹幕⑤","弹幕⑥"]},data4:{available:!0,values:["弹幕⑦","弹幕⑧"]},data5:{available:!0,values:["弹幕⑨","弹幕Ⅹ"]}},g=[],v=[],x=null,y=0,k=10,f=0,C=0,E=e=>{alert(e)},w=(e,t)=>null,L=(e,t)=>{console.warn('No implementation "setGmValue" method.')},A=e=>{console.warn('No implementation "delGmValue" method.')};const _="https://www.bilibili.com/favicon.ico",D=window.__NEPTUNE_IS_MY_WAIFU__?window.__NEPTUNE_IS_MY_WAIFU__.roomInfoRes.data.room_info.room_id:window.location.pathname.replace("/",""),I=e=>window.autoSendDanmuModuleLoaded=e,S=()=>(new Date).getTime(),z=(e,t)=>{let a=document.getElementById("aside-area-vm").getElementsByClassName("chat-input border-box")[0];if(!a)return void alert("找不到输入弹幕文本框,请尝试刷新页面");let l=document.getElementsByClassName("bl-button live-skin-highlight-button-bg live-skin-button-text bl-button--primary bl-button--small")[0];l?(a.value=e,a.dispatchEvent(new Event("input",{bubbles:!0,cancelable:!0})),l.click(),f=S(),++y,console.log("=================> "+(new Date).toLocaleString()+" 弹幕发送成功 "+y+" 次,第【"+t+"】条数据 === "+e)):alert("找不到发送按钮,请尝试刷新页面")},M=e=>{if(!e||""==e)return!0;return new RegExp("^[ ]+$").test(e)},N=()=>{for(let e=0;e<g.length;e++)clearInterval(g[e]),g[e]=null;g=[]},T=()=>{let e=new Date(new Date((new Date).setDate((new Date).getDate()+1)).toDateString()).getTime()-S();console.log("=================> 设置第二天凌晨签到定时器【"+e+"】"),setTimeout(()=>{"停止"===i.textContent&&z("签到",0),console.log("=================> 进入下一轮递归签到"),T()},e)},B=()=>{e.checked=b.random,t.checked=b.data1.available,a.checked=b.data2.available,l.checked=b.data3.available,n.checked=b.data4.available,d.checked=b.data5.available},F=()=>c.style.display="block",G=()=>{B(),c.style.display="none"},R=()=>{if(b.data1.values.length<=0&&b.data2.values.length<=0&&b.data3.values.length<=0&&b.data4.values.length<=0&&b.data5.values.length<=0)return v||[];let e=[];e=b.data1.available?e.concat(b.data1.values):e,e=b.data2.available?e.concat(b.data2.values):e,e=b.data3.available?e.concat(b.data3.values):e,e=b.data4.available?e.concat(b.data4.values):e,e=b.data5.available?e.concat(b.data5.values):e,v=e,b.random?v=(e=>{for(let t=0;t<e.length;t++){const a=Math.floor(Math.random()*e.length),l=e[t];e[t]=e[a],e[a]=l}return e})(e):C=0},j=()=>{b.data1.values=M(r.value)?[]:r.value.split("|"),b.data2.values=M(s.value)?[]:s.value.split("|"),b.data3.values=M(p.value)?[]:p.value.split("|"),b.data4.values=M(u.value)?[]:u.value.split("|"),b.data5.values=M(m.value)?[]:m.value.split("|"),b.random=e.checked,b.data1.available=t.checked,b.data2.available=a.checked,b.data3.available=l.checked,b.data4.available=n.checked,b.data5.available=d.checked,R(),L(D,b),h.style.display="block",setTimeout(()=>{h.style.display="none",c.style.display="none"},1500)},H=()=>v.length<1?(E({text:"请任意在一个分组里输入一条弹幕",title:"没有弹幕数据,请先设置",image:_,highlight:!0,timeout:1e4}),!1):(b.random&&(C=Math.floor(Math.random()*v.length)),z(v[C],C),++C>=v.length&&(C=0),!0),V=()=>{let e=0;if(x)clearInterval(x),x=null,i.style.background="rgba(217,157,27,1)",i.textContent="开始",o.removeAttribute("disabled");else{if(e=M(o.value)?6e5:1e3*o.value,!H())return;x=setInterval(H,e),i.style.background="#ff0000",i.textContent="停止",o.setAttribute("disabled","disabled")}};window.setGmNotice=(e=>E=e),window.setGmGetValue=(e=>w=e),window.setGmSetValue=(e=>L=e),window.setGmDelValue=(e=>e),window.runStart=(()=>(()=>{let e=w(D,null);e&&(b.version===e.version?L(D,b=e):2===e.version?(b.data1=e.data1,b.data2=e.data2,b.data3=e.data3,b.data4=e.data4,b.data5=e.data5,L(D,b)):(b.data1.values=e.data1?e.data1:b.data1.values,b.data2.values=e.data2?e.data2:b.data2.values,b.data3.values=e.data3?e.data3:b.data3.values,b.data4.values=e.data4?e.data4:b.data4.values,b.data5.values=e.data5?e.data5:b.data5.values,L(D,b))),B(),r.value=b.data1.values.join("|"),s.value=b.data2.values.join("|"),p.value=b.data3.values.join("|"),u.value=b.data4.values.join("|"),m.value=b.data5.values.join("|"),R()})()),window.arrayInfo=(()=>console.info(v)),(()=>{let e=document.createElement("link");e.rel="stylesheet",e.href="https://unpkg.com/[email protected]/lib/theme-chalk/index.css",document.head.appendChild(e);let t=document.createElement("style");t.setAttribute("type","text/css"),t.innerHTML='.danmu-group-title{font-size:14px;padding-left:2px;color:rgb(18, 56, 141);display:inline;margin-right:60%;vertical-align:middle;}.danmu-group-textarea{width:98%;min-height:100px;height:16%;margin:1px 0px 4px;border:0px;resize:none;}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--mini.is-circle{padding:3px;}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-icon-close.is-circle{padding:5px;color:#ff0000;border:1px solid #ff0000;margin-left:20px;}.el-icon-check.is-circle{padding:5px;color:#0000ff;border:1px solid #0000ff;margin-left:20px;}.random-check{display:inline-block;margin:0 5px;vertical-align:middle;}.random-check label{display:inline-block;vertical-align:middle;border:1px solid #bdc3c7;border-radius:60px;width:40px;height:18px;position:relative;transition:all .3s;cursor:pointer;}.random-check input{display:none;}.random-check label:before{width:14px;height:14px;content:"";display:inline-block;background-color:#bdc3c7;border-radius:100%;position:absolute;top:2px;left:4px;transition:all .3s;}.random-check :checked ~ label{background-color:#26b22b;border-color:#26b22b;}.random-check :checked ~ label:before{left:22px;background-color:#fff;}.danmu-group-check{display:inline-block;margin:0 5px;vertical-align:middle;}.danmu-group-check label{display:inline-block;vertical-align:middle;border:1px solid #bdc3c7;border-radius:60px;width:40px;height:18px;position:relative;transition:all .3s;cursor:pointer;}.danmu-group-check input{display:none;}.danmu-group-check label:before{width:14px;height:14px;content:"";display:inline-block;background-color:#bdc3c7;border-radius:100%;position:absolute;top:2px;left:4px;transition:all .3s;}.danmu-group-check :checked ~ label{background-color:#26b22b;border-color:#26b22b;}.danmu-group-check :checked ~ label:before{left:22px;background-color:#fff;}',document.head.appendChild(t)})(),window.addEventListener("load",()=>{if(!document.getElementById("version-2.3.0"))return I(!0),void setTimeout(()=>{E({text:"当前脚本不是最新版,请更新再使用功能",title:"油猴脚本有更新,点击进行安装",image:_,highlight:!0,timeout:12e4,onclick:()=>window.open("https://gf.qytechs.cn/zh-CN/scripts/446725","_blank")})},1e3);g[g.length]=setInterval(()=>{let b=document.getElementsByClassName("bottom-actions p-relative")[0];b?(N(),(b=>{let g=document.createElement("div");g.textContent="弹幕设置",g.style.textAlign="center",g.style.fontSize="16px",g.style.fontWeight="700",g.style.color="#1c5adc",g.style.lineHeight="30px";let v=document.createElement("div");v.style.color="#0b81cc",v.style.textAlign="center",v.style.fontStyle="italic",v.innerHTML='任一分组内输入弹幕即可,多条用<span style="color:#dc6b07;margin:0 2px 0 4px;font-weight:700;font-style:normal;">竖线</span>分隔';let x=document.createElement("div");x.style.color="#0b81cc",x.style.textAlign="center",x.style.fontSize="13px",x.style.fontWeight="700",x.style.margin="10px 0",x.innerHTML='<span style="color:#f00">更新提示:</span>各直播间保存的数据不再相互影响';let y=document.createElement("div");y.textContent="分组 1 :",y.classList.add("danmu-group-title"),(t=document.createElement("input")).type="checkbox",t.id="group1Checkbox",t.checked=!0;let k=document.createElement("label");k.setAttribute("for","group1Checkbox");let f=document.createElement("div");f.classList.add("danmu-group-check"),f.appendChild(t),f.appendChild(k),(r=document.createElement("textarea")).classList.add("danmu-group-textarea"),r.setAttribute("placeholder","请输入弹幕,多条弹幕请用“|”分隔");let C=document.createElement("div");C.textContent="分组 2 :",C.classList.add("danmu-group-title"),(a=document.createElement("input")).type="checkbox",a.id="group2Checkbox",a.checked=!0;let E=document.createElement("label");E.setAttribute("for","group2Checkbox");let w=document.createElement("div");w.classList.add("danmu-group-check"),w.appendChild(a),w.appendChild(E),(s=document.createElement("textarea")).classList.add("danmu-group-textarea"),s.setAttribute("placeholder","请输入弹幕,多条弹幕请用“|”分隔");let L=document.createElement("div");L.textContent="分组 3 :",L.classList.add("danmu-group-title"),(l=document.createElement("input")).type="checkbox",l.id="group3Checkbox",l.checked=!0;let A=document.createElement("label");A.setAttribute("for","group3Checkbox");let _=document.createElement("div");_.classList.add("danmu-group-check"),_.appendChild(l),_.appendChild(A),(p=document.createElement("textarea")).classList.add("danmu-group-textarea"),p.setAttribute("placeholder","请输入弹幕,多条弹幕请用“|”分隔");let D=document.createElement("div");D.textContent="分组 4 :",D.classList.add("danmu-group-title"),(n=document.createElement("input")).type="checkbox",n.id="group4Checkbox",n.checked=!0;let I=document.createElement("label");I.setAttribute("for","group4Checkbox");let S=document.createElement("div");S.classList.add("danmu-group-check"),S.appendChild(n),S.appendChild(I),(u=document.createElement("textarea")).classList.add("danmu-group-textarea"),u.setAttribute("placeholder","请输入弹幕,多条弹幕请用“|”分隔");let z=document.createElement("div");z.textContent="分组 5 :",z.classList.add("danmu-group-title"),(d=document.createElement("input")).type="checkbox",d.id="group5Checkbox",d.checked=!0;let M=document.createElement("label");M.setAttribute("for","group5Checkbox");let N=document.createElement("div");N.classList.add("danmu-group-check"),N.appendChild(d),N.appendChild(M),(m=document.createElement("textarea")).classList.add("danmu-group-textarea"),m.setAttribute("placeholder","请输入弹幕,多条弹幕请用“|”分隔");let T=document.createElement("span");T.textContent="随机",T.title="将合并所有分组数据,从中随机选出一条发送",T.style.fontSize="16px",T.style.verticalAlign="middle",T.style.marginRight="4px",T.style.color="#095ca2",T.style.cursor="help",(e=document.createElement("input")).type="checkbox",e.id="rdmCheckbox",e.checked=!0;let B=document.createElement("label");B.setAttribute("for","rdmCheckbox");let R=document.createElement("div");R.classList.add("random-check"),R.style.marginLeft="10px",R.appendChild(T),R.appendChild(e),R.appendChild(B),(h=document.createElement("span")).textContent="设置成功",h.style.fontSize="16px",h.style.color="#128712",h.style.display="none";let H=document.createElement("div");H.style.textAlign="center",H.style.display="inline-block",H.style.verticalAlign="middle",H.style.width="34%",H.appendChild(h);let W=document.createElement("i");W.setAttribute("title","应用"),W.classList.add("el-button"),W.classList.add("el-icon-check"),W.classList.add("is-circle"),W.addEventListener("click",j);let P=document.createElement("i");P.setAttribute("title","关闭"),P.classList.add("el-button"),P.classList.add("el-icon-close"),P.classList.add("is-circle"),P.addEventListener("click",G);let U=document.createElement("div");U.style.display="inline-block",U.style.verticalAlign="middle",U.appendChild(W),U.appendChild(P);let Y=document.createElement("div");Y.style.width="100%",Y.style.lineHeight="35px",Y.appendChild(R),Y.appendChild(H),Y.appendChild(U);let O=document.createElement("div");O.style.height="calc(98% - 30px - 25px)",O.appendChild(y),O.appendChild(f),O.appendChild(r),O.appendChild(C),O.appendChild(w),O.appendChild(s),O.appendChild(L),O.appendChild(_),O.appendChild(p),O.appendChild(D),O.appendChild(S),O.appendChild(u),O.appendChild(z),O.appendChild(N),O.appendChild(m),O.appendChild(Y),(c=document.createElement("div")).style.backgroundColor="#d4f2e0",c.style.borderRadius="2px",c.style.width="100%",c.style.height="100%",c.style.overflowY="auto",c.style.position="absolute",c.style.left="0",c.style.top="0",c.style.zIndex="999",c.style.display="none",c.appendChild(g),c.appendChild(v),c.appendChild(x),c.appendChild(O),document.getElementById("aside-area-vm").appendChild(c),(i=document.createElement("button")).textContent="开始",i.style.minWidth="65px",i.style.height="24px",i.style.fontSize="12px",i.style.borderRadius="4px",i.style.color="#ffffff",i.style.background="rgba(217,157,27,1)",i.style.border="0",i.style.cursor="pointer",i.addEventListener("click",V);let $=document.createElement("span");$.textContent="每",$.style.color="#ffffff",$.style.fontSize="12px",$.style.marginLeft="4px",$.style.backgroundColor="#ec6c1b",(o=document.createElement("input")).value=600,o.style.width="25px",o.style.height="15px",o.style.margin="0 3px",o.style.border="0",o.style.borderRadius="3px",o.setAttribute("oninput","this.value = this.value.replace(/[^0-9]/g, '')");let q=document.createElement("span");q.textContent="秒发送",q.style.color="#ffffff",q.style.fontSize="12px",q.style.backgroundColor="#ec6c1b",q.style.marginRight="4px";let J=document.createElement("i");J.classList.add("el-icon-setting");let K=document.createElement("button");K.title="设置",K.classList.add("el-button"),K.classList.add("el-button--mini"),K.classList.add("is-circle"),K.addEventListener("click",F),K.appendChild(J);let Q=document.createElement("div");Q.style.position="absolute",Q.appendChild(i),Q.appendChild($),Q.appendChild(o),Q.appendChild(q),Q.appendChild(K),b.appendChild(Q)})(b),I(!0)):0>=--k&&(I(!0),N(),E({text:"没能找到发送按钮的所属元素,请刷新重试",title:"加载错误,点击刷新页面",image:_,highlight:!0,timeout:1e4,onclick:()=>location.reload()}))},1500),(()=>{let e=document.getElementById("switch-login-guide-vm");e?e.style.setProperty("display","none","important"):console.warn("=================> DOM id【switch-login-guide-vm】丢失");let t=document.getElementById("my-dear-haruna-vm");t?t.style.setProperty("display","none","important"):console.warn("=================> DOM id【my-dear-haruna-vm】丢失")})(),T()})}();