// ==UserScript== // @name AcFun文章区漫画模式放大拖动、切换A站最高画质 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 漫画模式放大拖动(代码源于网络),切换A站最高画质(斗鱼切换画质脚本改) // @author 奋不顾身 // @match *.acfun.cn/* // @icon https://cdn.aixifan.com/ico/favicon.ico // @require https://code.jquery.com/jquery-3.4.0.min.js // @grant none // @downloadURL none // ==/UserScript== window.jq = $.noConflict(true); (function() { 'use strict'; //文章区漫画模式支持拖动 var isDown = false; var mangaNode = jq('#area-window')[0]; var mangaOptions = { attributes: false, childList: true,subtree:false,attributeOldValue:false}; function mangaCb(mutationsList, observer) { console.log(mutationsList); if(document.querySelector('#box-image-manga')){ drag(); } } var mangaObserver = new MutationObserver(mangaCb); mangaObserver.observe(mangaNode, mangaOptions); function drag(){ var dv = document.querySelector('#box-image-manga'); var x = 0; var y = 0; var l = 0; var t = 0; //鼠标按下事件 dv.onmousedown = function(e) { e.preventDefault(); //获取x坐标和y坐标 x = e.clientX; y = e.clientY; //获取左部和顶部的偏移量 l = dv.offsetLeft; t = dv.offsetTop; //开关打开 isDown = true; //设置样式 dv.style.cursor = 'move'; } //鼠标移动 window.onmousemove = function(e) { if (isDown == false) { return; } //获取x和y var nx = e.clientX; var ny = e.clientY; //计算移动后的左偏移量和顶部的偏移量 var nl = nx - (x - l); var nt = ny - (y - t); dv.style.left = nl + 'px'; dv.style.top = nt + 'px'; } //鼠标抬起事件 window.onmouseup = function() { //开关关闭 isDown = false; dv.style.cursor = 'default'; } } window.onload = function(){ //切换A站最高画质 var targetNode = jq('head title')[0]; var options = { attributes: true, childList: true,subtree:true,attributeOldValue:true}; function callback(mutationsList, observer) { autoClick(); } var mutationObserver = new MutationObserver(callback); mutationObserver.observe(targetNode, options); const startTime = new Date().getTime() let count = 1 function autoClick(){ let dom = Array.from(document.querySelectorAll('div')).find((item,index)=>{ return item.className.includes('quality') }) if(dom){ const ul_dom = Array.from(dom.children[1].childNodes).find((item)=>item.tagName=='UL'); const li_dom = Array.from(ul_dom.childNodes) let seleteIndex = 0 li_dom.forEach((item,index)=>{ if(item.className!=''){ seleteIndex = index } }) if(seleteIndex==0){ const endTime = new Date().getTime() console.log('默认为最高画质,无需切换') console.log(`脚本结束,耗时:${(endTime-startTime)/1000}秒`) }else{ const endTime = new Date().getTime() const old_quality = li_dom[seleteIndex].innerText const new_quelity = li_dom[0].innerText li_dom[0].click() console.log(`已切换到${new_quelity}`) console.log(`脚本结束,耗时:${(endTime-startTime)/1000}秒`) } }else{ if(count++<10){ setTimeout(()=>{ autoClick() },2000) }else{ console.log('脚本结束') } } } autoClick(); } })();