// ==UserScript== // @name youtube默认开启最高画质 // @namespace Violentmonkey Scripts // @match *://www.youtube.com/watch?v=* // @match *://www.youtube.com/* // @grant none // @version 1.1 // @author lazy cat // @description 2023/7/27 11:45:08 // @run-at document-end // @license MIT // @homepageURL https://greasyfork.org/zh-CN/scripts/473553-youtube%E9%BB%98%E8%AE%A4%E5%BC%80%E5%90%AF%E6%9C%80%E9%AB%98%E7%94%BB%E8%B4%A8 // @homepage https://greasyfork.org/zh-CN/scripts/473553-youtube%E9%BB%98%E8%AE%A4%E5%BC%80%E5%90%AF%E6%9C%80%E9%AB%98%E7%94%BB%E8%B4%A8 // @downloadURL none // ==/UserScript== (function(){ // 元素透明函数 function transparent(judgment_num){ let t_add = document.createElement('style') t_add.textContent = `.ytp-tooltip-text {opacity: ${judgment_num};}\n.ytp-popup {opacity: ${judgment_num};}` return document.head.appendChild(t_add) } // 移动鼠标使讨厌的“设置”提示消失 function remove_ts(){ let t_add = document.createElement('style') t_add.textContent = `.ytp-tooltip-text {opacity: 0;}` return document.head.appendChild(t_add) } // 时停函数 function t_stop(num){ return new Promise(resolve => setTimeout(resolve, num)) } // 异步开启画质 async function set_max_voice_px() { let style_doc = transparent(0) document.querySelectorAll('button[aria-label="设置"]')[0].click() await t_stop(300) let ex_b = document.querySelectorAll('div[class="ytp-popup ytp-settings-menu"] div[class="ytp-menuitem-content"]') ex_b[ex_b.length-1].click() await t_stop(400) let a_list = document.querySelectorAll('div[class="ytp-menuitem-label"] span') setTimeout(()=>{ remove_ts() style_doc.remove() }, 150) if (!a_list[0].textContent.includes('Premium')){ a_list[0].click() return } if (a_list[1].textContent.includes('Premium')){ a_list[2].click() return } if (a_list[0].textContent.includes('Premium')){ a_list[1].click() return } } // 判断视频是否加载完成 async function judgment_voice_out(){ if (j_num > 100){ console.log('当前视频加载失败') return } let voice_wim = document.querySelector('video[class="video-stream html5-main-video"]') if (voice_wim.readyState === 4){ setTimeout(set_max_voice_px, 500) j_num=0 } else{ await t_stop(100) j_num++ judgment_voice_out() } } // 判断当前页面是否有视频 function judgment_voice(){ if (document.querySelectorAll('video[class="video-stream html5-main-video"]')){ judgment_voice_out() } else{ console.log('当前页面无视频') } } function list_judgment() { judgment_voice() //循环检查页面是否改变 setInterval(() => { new_url = String(window.location.href) if (new_url != url){ judgment_voice() url = new_url } }, 1000); } //开始运行程序 var new_url = '' var j_num = 0 var url = String(window.location.href) list_judgment() })()