Greasy Fork is available in English.
Auto widescreen.(Forked from Bilibili Helper)
// ==UserScript==// @name Bilibili WideScreen Helper// @name:zh-CN Bilibili 宽屏助手// @description Auto widescreen.(Forked from Bilibili Helper)// @description:zh-CN 自动宽屏.(Forked from Bilibili Helper)// @namespace bilibili-widescreen-helper// @version 1.1.1// @author everbrez// @author sabertaz// @license MIT License// @match *://www.bilibili.com/video/*// @match *://www.bilibili.com/bangumi/play/*// @match *://www.bilibili.com/blackboard/*// @match *://www.bilibili.com/watchlater/*// @match *://www.bilibili.com/list/*// @match *://player.bilibili.com/*// ==/UserScript=="use strict";(function () {/*** wait for an element to render* @usage* const targetElement = await waitForElement('.target')* // then do something* if the rootElement is not exist, waitForElement will throw an error** @param {string} targetSelector the target element query selector* @param {string} [rootSelector='body'] default search root element: body* @param {number} [wait] how long to cancal watch this element to render, default: wait forever* @returns {Promise<Element>} return the target element dom object*/function waitForElement(targetSelector, rootSelector = 'body', wait) {const rootElement = document.querySelector(rootSelector);if (!rootElement) {console.log('root element is not exist');return Promise.reject('root element is not exist');}// check if the element is already renderedconst targetElement = rootElement.querySelector(targetSelector);if (targetElement) {return Promise.resolve(targetElement);}return new Promise((resolve, reject) => {const callback = function (matationList, observer) {const targetElement = rootElement.querySelector(targetSelector);if (targetElement) {// foundresolve(targetElement);// then cancel to watch the elementobserver.disconnect();}};const observer = new MutationObserver(callback);observer.observe(rootElement, {subtree: true,childList: true});if (wait !== undefined) {// if wait is set, then cancel to watch the element to render after wait timessetTimeout(() => {observer.disconnect();}, wait);}});}async function autoClickElement(targetSelector, rootSelector, now = false) {if (now) {const parent = rootSelector ? document.querySelector(rootSelector) : document;if (parent) {const target = parent.querySelector(targetSelector);if (target) {target.click();return true;}}return false;}const target = await waitForElement(targetSelector, rootSelector);target.click();}function main() {const selectorList = ['[role="button"][aria-label="宽屏"]'];selectorList.forEach(selector => autoClickElement(selector));}main();})();