NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Funimation Timer
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Displays a timer synced with the video playing.
// @author akuma06
// @license MIT
// @match https://www.funimation.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
const config = {
color: '#FFFFFF', // Can be a color in RGB or a word like "white"
background: 'rgba(0, 0, 0, 0)', // Background defined in RGB and an opacity value: rgba(red, green, blue, opacity) with opacity ranging from 0 to 1 and colors from 0 to 255
fontSize: '40px', // Size for the displayed timer (00:00:00)
top: undefined, // To position the timer relative to the top border of the player, it can't be defined if bottom is defined (in pixels)
left: undefined, // To position the timer relative to the left border of the player, it can't be defined if right is defined (in pixels)
bottom: '30px', // To position the timer relative to the bottom border of the player (in pixels)
right: '20px', // To position the timer relative to the right border of the player (in pixels)
};
function setupCountDown(player, doc) {
player.ready(() => {
const div = doc.createElement("div");
div.innerText = "00:00:00";
div.style.position = "absolute";
if (config.bottom !== undefined && config.bottom != '') {
div.style.bottom = config.bottom;
}
else if (config.top !== undefined && config.top != '') {
div.style.top = config.top;
}
if (config.right !== undefined && config.right != '') {
div.style.right = config.right;
}
else if (config.left !== undefined && config.left != '') {
div.style.left = config.left;
}
div.style.zIndex = 100004;
div.style.fontSize = config.fontSize;
div.style.color = config.color;
div.style.background = config.background;
doc.querySelector("#brightcove-player").appendChild(div);
player.on("timeupdate", (e) => {
const elapsed = player.currentTime().toFixed();
const hours = Math.floor(elapsed / 3600).toFixed();
const minutes = Math.floor((elapsed - hours * 3600) / 60);
const seconds = elapsed % 60;
div.innerText = `${(hours > 9) ? hours : "0" + hours}:${(minutes > 9) ? minutes : "0" + minutes}:${(seconds > 9) ? seconds : "0" + seconds}`;
});
}, true);
}
if (document.querySelector("#brightcove-player") !== null) {
setupCountDown(window.videojs("brightcove-player"), document);
}
else if (document.querySelector("#player") !== null) {
document.querySelector("#player").addEventListener("load", () => {
setupCountDown(document.querySelector("#player").contentWindow.videojs("brightcove-player"), document.querySelector("#player").contentDocument);
});
}
})();