Content Time Estimator

Estimate reading time for content.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

Advertisement:

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

Advertisement:

// ==UserScript==
// @name         Content Time Estimator
// @namespace    http://yournamespace.com/
// @version      0.2
// @description  Estimate reading time for content.
// @author       icycoldveins
// @include      *://*/*
// @grant        GM_addStyle
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Style for the reading time box
    GM_addStyle(`
        #reading-time-box {
            position: fixed;
            bottom: 10px;
            right: 10px;
            padding: 5px 10px;
            background-color: #000;
            color: #FFF;
            border-radius: 5px;
            font-size: 14px;
            z-index: 10000;
            display: none;
        }
    `);

    const estimateReadingTime = () => {
        // Grab all the paragraphs on the page
        let paragraphs = document.querySelectorAll('p');
        let totalWords = 0;

        paragraphs.forEach(paragraph => {
            totalWords += paragraph.innerText.split(' ').length;
        });

        // Average reading speed is roughly 200-250 words per minute
        let readingTime = Math.ceil(totalWords / 225);
        return readingTime;
    };

    const displayReadingTime = () => {
        let readingTime = estimateReadingTime();

        if (readingTime > 1) { // Show the estimator only if reading time is more than a minute
            let timeBox = document.createElement('div');
            timeBox.id = 'reading-time-box';
            timeBox.innerHTML = `Estimated Reading Time: ${readingTime} mins`;
            document.body.appendChild(timeBox);
            timeBox.style.display = 'block';
        }
    };

    window.addEventListener('load', displayReadingTime);

})();