Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Auto-English CC
- // @author Paperlanty
- // @version 2021.10
- // @grant none
- // @include https://w2g.tv/*
- // ==/UserScript==
- // console.log('script');
- window.addEventListener('load', function () {
- console.log('auto english CC loaded');
- var element = document.querySelector("#w2g-video");
- var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
- var observer = new MutationObserver(initializeIframeObserver);
- observer.observe(element, {
- childList: true,
- characterData: true
- });
- if (document.querySelector("#w2g-video iframe"))
- setSubtitle();
- });
- function initializeIframeObserver() {
- // console.log('initializeIframeObserver');
- let iframe = document.querySelector("#w2g-video iframe");
- var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
- var iframeObserver = new MutationObserver(setSubtitle);
- iframeObserver.observe(iframe, {
- attributeFilter: ['src'],
- characterData: true
- });
- setSubtitle();
- }
- function setSubtitle() {
- // console.log('setSubtitle');
- let iframe = document.querySelector("#w2g-video iframe");
- let englishOption = [];
- setTimeout(function() {
- // console.log('waitForSubtitles');
- var waitForSubtitles = new Promise((resolve, reject) => {
- let timeWas = new Date();
- let wait = setInterval(function() {
- if (contains(iframe.contentWindow.document, '#subtitle_button div.popup_item', 'English').length > 0) {
- console.log("resolved after", new Date() - timeWas, "ms");
- clearInterval(wait);
- englishOption = contains(iframe.contentWindow.document, '#subtitle_button div.popup_item', 'English');
- englishOption[0].click();
- console.log('subtitle set');
- resolve();
- } else if (new Date() - timeWas > 5000) { // Timeout
- console.log("rejected after", new Date() - timeWas, "ms");
- clearInterval(wait);
- reject();
- }
- }, 20); // ms interval per subtitle check
- }, 5000); // ms timeout for checking for subtitles
- }, 1000); // ms delay after video load
- }
- function contains(doc, selector, text) {
- var elements = doc.querySelectorAll(selector);
- return Array.prototype.filter.call(elements, function(element) {
- return RegExp(text).test(element.textContent);
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement