GHacks Hide Older Comments

Hides comments on ghacks.net that were made before the date of the article.

目前為 2023-09-29 提交的版本,檢視 最新版本

// ==UserScript==
// @name        GHacks Hide Older Comments
// @namespace   MickyFoley
// @description Hides comments on ghacks.net that were made before the date of the article.
// @include     *://*.ghacks.net/*
// @version     1.0
// @author      MickyFoley
// @license     GPL-3.0-only
// @grant       none
// ==/UserScript==

(function() {
    'use strict';

    // Helper function to convert month name to number
    function monthToNumber(month) {
        const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
        const abbrevMonths = months.map(m => m.substr(0, 3));
        let monthIndex = months.indexOf(month);
        if (monthIndex === -1) monthIndex = abbrevMonths.indexOf(month);
        return monthIndex + 1;
    }

    // Extract the article date
    const articleDateDiv = document.querySelector('.post-subtitle-meta_left_date-published');
    if (!articleDateDiv) return;
    const [articleMonth, articleDay, articleYear] = articleDateDiv.textContent.trim().replace(',', '').split(' ');
    const articleDate = new Date(Number(articleYear), monthToNumber(articleMonth) - 1, Number(articleDay));

    // Iterate through comments and hide older ones
    const comments = document.querySelectorAll('li.comment');
    comments.forEach(comment => {
        const dateDivText = comment.querySelector('div.comment-item__header div').textContent;
        const dateMatch = dateDivText.match(/said on (\w+) (\d+), (\d+) at/);
        if (!dateMatch) return;

        const [, commentMonth, commentDay, commentYear] = dateMatch;
        const commentDate = new Date(Number(commentYear), monthToNumber(commentMonth) - 1, Number(commentDay));

        if (commentDate < articleDate) {
            comment.style.display = 'none';
        }
    });
})();