Greasy Fork is available in English.
adds div with the current title and time
当前为
// ==UserScript==
// @name netflix progress and title indicator
// @namespace http://tampermonkey.net/
// @version 0.1
// @description adds div with the current title and time
// @author Me
// @match https://www.netflix.com/*
// @grant none
// ==/UserScript==
function title_getter() {
var vid, title = "", on = false;
function refresh_title () {
try {
let divs = document.querySelectorAll(".video-title div *");
if(divs.length === 0){
divs = document.querySelectorAll(".video-title *");
}
title = Array.from(divs).map((x)=>x.textContent).join(" ");
} catch(e) {
title = "";
}
}
function refresh_enabled () {
vid = document.querySelector(".AkiraPlayer video");
if(vid === null && on) {
on = false;
return;
}
if(vid !== null && !on)
on = true;
}
function time() {
try {
let cur = +vid.currentTime;
let dur = +vid.duration;
return { cur: cur, dur: dur };
} catch(e) {
return { cur: 0, dur: 0 };
}
}
return { title: function () { return title; }, time, refresh_title, refresh_enabled, enabled: function () { return on; } };
}
function reappend (n) {
var w = document.querySelector(".sizing-wrapper");
if(w !== null){
if(w.contains(n))
return;
w.appendChild(n);
}
}
function node(cls, c) {
var parent = document.createElement("div");
var text = document.createTextNode("");
parent.appendChild(text);
if(c != null) {
for(var n of c) {
parent.appendChild(n);
}
}
var current;
var hidden = false;
parent.className = cls;
return {
n: parent,
set: function (value) {
if(value == null)
return;
value = value.toString();
if(current != value) {
text.textContent = value;
current = value;
}
},
hide: function () { if(hidden) return; hidden = true; parent.className = cls + " hidden"; },
show: function () { if(!hidden) return; hidden = false; parent.className = cls; }
};
}
function p(number) {
return (number < 10 ? '0' : '') + number;
}
(function() {
var data = title_getter();
function fmt_time(s) {
var s = s | 0;
var h = (s / 3600)|0;
s = s - h * 3600;
var m = (s / 60)|0;
s = s - m * 60;
return `${p(h)}:${p(m)}:${p(s)}`;
}
var title = node("title");
var time = node("time");
var wholeTitleNode = node("myTitleNode", [title.n, time.n]);
document.body.appendChild(wholeTitleNode.n);
setInterval(data.refresh_title, 5000);
var shown = false;
document.body.addEventListener('keypress', function (e) {
if(e.key == 't') {
shown = shown ? false : true;
refresh();
}
});
function refresh () {
data.refresh_enabled();
reappend(wholeTitleNode.n);
if(data.enabled() && shown)
wholeTitleNode.show();
else {
wholeTitleNode.hide();
return;
}
var my_tit = data.title();
title.set(my_tit);
let t = data.time();
time.set(`${fmt_time(t.cur)} / ${fmt_time(t.dur)}`);
}
setInterval(refresh, 500);
})();