Open2ch 滞在時間カウンター

open2ch livejupiter 板での累計滞在時間を計測

// ==UserScript==
// @name         Open2ch 滞在時間カウンター
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  open2ch livejupiter 板での累計滞在時間を計測
// @match        https://hayabusa.open2ch.net/test/read.cgi/livejupiter/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const KEY = "open2ch_livejupiter_time"; // 累計時間を保存するキー
    let startTime = Date.now();

    // ページロード時に保存された値を取得
    let totalTime = parseInt(localStorage.getItem(KEY) || "0", 10);

    // ページを離れる直前に時間を加算して保存
    window.addEventListener("beforeunload", () => {
        let now = Date.now();
        let elapsed = Math.floor((now - startTime) / 1000); // 秒単位
        totalTime += elapsed;
        localStorage.setItem(KEY, totalTime.toString());
    });

    // 表示用のカウンターを追加
    let counter = document.createElement("div");
    counter.style.position = "fixed";
    counter.style.bottom = "10px";
    counter.style.right = "10px";
    counter.style.padding = "5px 10px";
    counter.style.background = "rgba(0,0,0,0.7)";
    counter.style.color = "white";
    counter.style.fontSize = "14px";
    counter.style.zIndex = 9999;
    document.body.appendChild(counter);

    function updateDisplay() {
        let now = Date.now();
        let elapsed = Math.floor((now - startTime) / 1000);
        let displayTime = totalTime + elapsed;

        let h = Math.floor(displayTime / 3600);
        let m = Math.floor((displayTime % 3600) / 60);
        let s = displayTime % 60;

        counter.textContent = `お前が無駄にした時間→: ${h}時間${m}分${s}秒`;
    }

    setInterval(updateDisplay, 1000);
})();