Просмотр комментариев на Хабре в порядке добавления

от автора

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); })();  

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


ссылка на оригинал статьи https://habr.com/post/419297/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *