TLDR: скрипт сортирует комментарии под статьей в порядке добавления, без учета уровня вложенности и дискуссий. Можно просматривать раз в несколько дней до появления чувства дежавю.



Поймал себя на мысли что за длинными дискуссиями на хабре неудобно следить, особенно если они растягиваются на несколько дней. Особенно если там есть какая-то живучая подветка, где участники поливают друг друга истиной в течение нескольких дней. Особенно если в этом потоке истины нужно просто извлечь мнения и факты не погружаясь в саму дискуссию. Возможно кому-то еще это окажется полезным.



Быстрый вариант для выполнения в консоли разработчика:



Развернуть
(function() {
    function sortComments() {
        let comments = Array.from(
            document.querySelectorAll(".comment")
        );

        comments.sort(function (a,b) {
            let times = [
                a.querySelector("time"),
                b.querySelector("time")
            ];

            for (let i in times) {
                times[i] = (( times[i] !== null ) ? times[i].innerText : "").replace(/([0-9]{2})\.([0-9]{2})\.([0-9]{2}).+?([0-9]{2}):([0-9]{2})/, "$3.$2.$1 $4:$5");
            }

            return times[1].localeCompare(times[0]);
        });

        let rendered = "";

        for (let i = 0; i < comments.length; i++) {
            rendered += comments[i].innerHTML + "<br/><br/>";
        }

        document.querySelector("#comments").innerHTML = rendered;
        document.querySelector("#comments").scrollIntoView();
    }

    sortComments();
})();




Вариант для GreaseMonkey (в правом верхнем углу появляется кнопка):



Развернуть
// ==UserScript==
// @name     Сортировка комментариев по дате
// @version  1
// @grant    none
// @include https://habr.com/post/*
// @include https://habr.com/company/*/blog/*
// ==/UserScript==


(function() {

    function sortComments() {
        let comments = Array.from(
            document.querySelectorAll(".comment")
        );

        comments.sort(function (a,b) {
            let times = [
                a.querySelector("time"),
                b.querySelector("time")
            ];

            for (let i in times) {
                times[i] = (( times[i] !== null ) ? times[i].innerText : "").replace(/([0-9]{2})\.([0-9]{2})\.([0-9]{2}).+?([0-9]{2}):([0-9]{2})/, "$3.$2.$1 $4:$5");
            }

            return times[1].localeCompare(times[0]);
        });

        let rendered = "";

        for (let i = 0; i < comments.length; i++) {
            rendered += comments[i].innerHTML + "<br/><br/>";
        }

        document.querySelector("#comments").innerHTML = rendered;
        document.querySelector("#comments").scrollIntoView();
    }
    let sortButton = document.createElement("div");

    sortButton.style["position"] = "fixed";
    sortButton.style["top"] = 0;
    sortButton.style["right"] = 0;
    sortButton.style["height"] = "1.3em";
    sortButton.style["width"] = "11em";
    sortButton.style["border"] = "1px solid grey";
    sortButton.style["text-align"] = "center";
    sortButton.style["cursor"] = "pointer";
    sortButton.style["z-index"] = 999;

    sortButton.innerText = "Комментарии по дате";

    sortButton.addEventListener("click", function (event) {
        event.preventDefault();
        sortComments();
        event.target.remove();
    });

    document.body.appendChild(sortButton);
})();




Хотелось бы видеть такой функционал как часть сайта, потому что «комментарии полезней статьи» — это классика. И что-то интересное можно поймать и неделю спустя после публикации.

Комментарии (5)


  1. alexyr
    05.08.2018 18:09

    Было бы неплохо! Иногда бывает открою статью с новыми комментариями из трекера, с мыслью почитать попозже… А потом случайно обновляю страницу и всё… Хз что там последнее было!


    1. roscomtheend
      06.08.2018 10:14

      С какого-то билда хром открывает статью, а после пары переключений вкладок сам обновляет, хотя я не просил. И всё, та новая пара комментариев потеряна.


  1. sohmstyle
    05.08.2018 18:39
    +1

    Уже есть хороший habr-best-comments. И шкала рейтинга, и обновление.


  1. Qwertovsky
    06.08.2018 14:31

    Сворачивание веток в комментариях кто-нибудь делал?


  1. GamaleyVV
    06.08.2018 18:22

    Может Лопух или Дурак, но скажите как закладки на Хабре Отсортировать? Захожу в Закладки, а там то ли Гаусс толи Белый Шум…