Greasy Fork

Greasy Fork is available in English.

9gag video enhancer

try to take over the world!

目前为 2021-02-12 提交的版本,查看 最新版本

// ==UserScript==
// @name         9gag video enhancer
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  try to take over the world!
// @author       Llorx
// @match        https://9gag.com/*
// @grant        none
// ==/UserScript==

// from 0 to 100
var VOUME_LEVEL = 50;

function onFirstPlay(e) {
    e.target.removeEventListener("play", onFirstPlay);
    e.target.click(); // element click instead of setting the video muted attribute, so 9gag intertal state also changes to umnmuted
    e.target.volume = VOUME_LEVEL/100;
}

(function() {
    function checkVideos(node) {
        if (node.querySelectorAll) {
            var videos = node.querySelectorAll("video");
            for (var i = 0; i < videos.length; i++) {
                videos[i].setAttribute("controls", "1");
                if (VOUME_LEVEL > 0) {
                    var audiotoggle = videos[i].parentNode.querySelector(".sound-toggle");
                    if (audiotoggle) {
                        videos[i].addEventListener("play", onFirstPlay);
                    }
                }
                var drag = videos[i].closest(".badge-track");
                if (drag) {
                    drag.addEventListener("dragstart", function(e) {
                        e.preventDefault();
                    });
                }
                var els = videos[i].parentNode.querySelectorAll(".sound-toggle,.length");
                for (var ii = 0; ii < els.length; ii++) {
                    els[ii].style.display = "none";
                }
            }
        }
    }
    var targetNode = document.body;
    var config = { childList: true, subtree: true };
    var callback = function(mutationsList) {
        for (var i = 0; i < mutationsList.length; i++) {
            for (var ii = 0; ii < mutationsList[i].addedNodes.length; ii++) {
                checkVideos(mutationsList[i].addedNodes[ii]);
            }
        }
    };
    var observer = new MutationObserver(callback);
    observer.observe(targetNode, config);
    checkVideos(targetNode);
})();