// ==UserScript== // @author zhzLuke96 // @name 油管视频旋转 // @name:en youtube player rotate plug // @version 1.3 // @description 油管的视频旋转插件. // @description:en rotate youtebe player. // @namespace https://github.com/zhzLuke96/ // @match https://www.youtube.com/* // @grant none // @downloadURL none // ==/UserScript== (async function () { "use strict"; const rule_name = "ytp_player_user_js"; // ref:https://stackoverflow.com/questions/27078285/simple-throttle-in-js function throttle(callback, limit) { var waiting = false; return function () { if (!waiting) { callback.apply(this, arguments); waiting = true; setTimeout(function () { waiting = false; }, limit); } }; } const dommap = {}; const applydom = (key, fn) => dommap[key] && fn(dommap[key]); // init ytp_horizintal ytp_vertical class ((rule) => { var style = document.createElement("style"); document.getElementsByTagName("head")[0].appendChild(style); style.innerHTML = rule; })(` video.ytp_horizintal{transform:rotateX(180deg)} video.ytp_vertical{transform:rotateY(180deg)} `); const $ = (q) => document.querySelector(q); const currentLang = ( navigator.language || navigator.browserLanguage || navigator.systemLanguage ).toLowerCase() || ""; const on_zh_lang = currentLang.indexOf("zh") > -1; let $styleElem = null; // cache var function setup($ytp_player, $ytp_player_vid) { if (!$ytp_player || !$ytp_player_vid) { return; } if (!$styleElem) { $styleElem = document.createElement("style"); document.getElementsByTagName("head")[0].appendChild($styleElem); } // mount