您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
开启后会让b站播放器像摇篮一样摇起来
// ==UserScript== // @name 让b站播放器摇起来 // @namespace http://tampermonkey.net/ // @version 0.9 // @description 开启后会让b站播放器像摇篮一样摇起来 // @author 邻桌男孩 // @icon https://www.google.com/s2/favicons?sz=64&domain=gf.qytechs.cn // @grant none // @license GPL v3.0 // @match https://www.bilibili.com/video/* // ==/UserScript== (function() { 'use strict'; function sleep(delay){ return new Promise(resolve => setTimeout(resolve, delay)) } class lock{ status = false acquire(){ while(this.status){} // bad written pattern this.status = true } release(){ this.status = false } } let rotater = {} rotater.lock = new lock() rotater.rotate_delays = new Map() rotater.EVENT_ROTATED = 'rotated' rotater.rotate_element_single = function (element, delay, degree) { return sleep(delay).then(()=>{ element.style = `transform:rotate(${Math.floor(3 * Math.sin(degree / 30))}deg)` const event = new CustomEvent(rotater.EVENT_ROTATED, {bubbles: false, detail: {degree : degree}}) element.dispatchEvent(event) }) } rotater.rotate_event_handler = (evt) => { let degree = evt.detail.degree + 1 let element = evt.target rotater.lock.acquire() if(rotater.rotate_delays.get(element)) { rotater.rotate_element_single(element, rotater.rotate_delays[element], degree) } rotater.lock.release() } rotater.rotate_element = function(element, initial, delay){ rotater.lock.acquire() rotater.rotate_delays.set(element, delay) rotater.lock.release() element.removeEventListener(rotater.EVENT_ROTATED, rotater.rotate_event_handler) element.addEventListener(rotater.EVENT_ROTATED, rotater.rotate_event_handler) rotater.rotate_element_single(element, delay, initial) } rotater.delay_modify = function (element, delay){ rotater.lock.acquire() rotater.rotate_delays.set(element, delay) rotater.lock.release() } let page_loaded = false function sleep_and_check(){ sleep(300).then( async () => { page_loaded = document.querySelector("#playerWrap") if(page_loaded) sleep_and_exec() else sleep_and_check() }) } function sleep_and_exec(){ sleep(50).then( async () => { let player = document.querySelector("#playerWrap") rotater.rotate_element(player, 0, 100) }) } // main sleep_and_check() })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址