您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A simple timer that shows how much time you spent on Youtube today.
- // ==UserScript==
- // @name Time Spent on Youtube
- // @version 2022.08.30.07.46
- // @description A simple timer that shows how much time you spent on Youtube today.
- // @license MIT
- // @author Marco Dalla Gatta
- // @namespace https://github.com/marcodallagatta/userscripts/raw/main/youtube-time-spent/
- // @match https://www.youtube.com/*
- // @icon https://icons.duckduckgo.com/ip2/youtube.com.ico
- // ==/UserScript==
- (function () {
- "use strict";
- const background = false; // 'true' also counts when YT is in a background tab, 'false' only counts active tab
- const showInTitle = true; // 'true' prepend the minutes before the title in the tab
- const originalTitle = document.title;
- const resetTime = 4; // time when the timer resets, 24h time (0 = midnight, 4 = 4AM, 15 = 3PM)
- const today = new Date();
- const dd = String(today.getDate()).padStart(2, "0");
- const mm = String(today.getMonth() + 1).padStart(2, "0");
- const yyyy = today.getFullYear();
- const todayYYMMDD = yyyy + mm + dd;
- const hours = today.getHours();
- let spent = 0;
- if (localStorage.getItem("date") !== todayYYMMDD && hours >= resetTime) {
- localStorage.setItem("date", todayYYMMDD);
- localStorage.setItem("spent", 0);
- } else {
- spent = parseFloat(localStorage.getItem("spent"));
- }
- const inDOM = document.getElementById("start");
- let elem = document.createElement("span");
- elem.style = "color:white;font-size:2rem";
- inDOM.appendChild(elem);
- function showAlert(time) {
- const mm = (Math.trunc(time) % 60).toString();
- if (time > 60) {
- const hh = Math.trunc(time / 60).toString();
- elem.innerText = `${hh}h ${mm}m`;
- if (showInTitle) document.title = `${hh}h${mm.padStart(2, "0")}m ${originalTitle}`;
- } else {
- elem.innerText = `${mm}m`;
- if (showInTitle) document.title = `${mm.padStart(2, "0")}m ${originalTitle}`;
- }
- }
- setInterval(function () {
- if (background || document.hasFocus()) {
- spent = parseFloat(localStorage.getItem("spent")) + 0.25;
- localStorage.setItem("spent", spent);
- showAlert(spent);
- }
- }, 15000); // 15s
- // triggers after a few seconds since by default YT overwrites titlebar after a while on load \_(ツ)_/
- setTimeout(function () { showAlert(spent) }, 2000);
- })();