Ban is not the answer


Если вы узнали стиль заголовка и вам больше не нужны никакие подробности — вот ссылка на репозиторий.


Если вы недоумеваете что это такое и почему я отнимаю место в ленте у хороших авторов — тогда немного контекста будет под катом.


Все мы знаем, что на Хабре есть несколько авторов, которые пишут ради хайпа или исключительно ради денег. В целом в этом нет ничего плохого, конечно, при условии, что контент качественный. К сожалению, некоторые авторы, скажем вежливо, грешат. Плохие переводы, корпоративные блоги (не все), не просто отвлекают внимание, они еще и "съедают" место хорошего контента. В потоке мусора качественная техническая статья быстро теряется, что негативно сказывается на мотивации авторов. Кроме того, некачественный контент так же понижает общую планку Хабра. Если раньше ты вылизывал статью потому что "это же Хабр!" то теперь закрадывается мысль, что прокатит и так. Что, конечно же, рекурсивно.


Сделать что-то с этим сложно.


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


Можно репортить откровенно плохие статьи в надежде что их удалят. Но Хабру вроде как жить за что-то надо, так что корпоративные блоги удалять никто не будет. Да и сама идея массовых репортов отдает гарью, что мне не по душе.


Поэтому самый простой и одновременно эффективный способ (в краткосрочной перспективе) это скрыть некоторых авторов хотя бы из основной ленты. Способ не нов, мы о нем уже давно просили, но, пока безуспешно. И это тоже в общем то понятно. Если все начнут массово удалять корпоративные блоги из ленты, Хабр станет гораздо менее интересной площадкой для корпоративного сегмента что приведет к уменьшению прибыли. А кушать хотят все. Так что скорее всего, в ближайшее время такой функционал не увидим. Кстати, отчасти поэтому я не стал скрывать эти посты из "ЧИТАЮТ СЕЙЧАС" табы. Если пост становится популярным, возможно, вам все же будет интересно его увидеть, а площадка дополучит свои просмотры.


Зато мы можем написать такой функционал самостоятельно, что я и сделал где-то за 4 часа из которых часа 3 ушло на UI.


Итак встречайте — https://github.com/Drag13/HabrSanitizer — расширение для удаления постов от нежелательных авторов. Не судите строго, расширение писал впервые, может где-то накосячил.


Все работает довольно просто. На странице настройки расширения мы задаем список ников авторов которых больше не хотим видеть и с помощью chrome.storage.sync.set({ settings }) сохраняем их. Кстати, поэтому расширение требует разрешение использовать storage. Потом, когда Habr загружается, в контексте страницы загружается sanitizer.js который сначала загружает из storage список авторов, а потом находит и удаляет их статьи со страницы.


Поиск довольно примитивный
    function searchByAuthorName(author) {
        const [...allArticles] = document.getElementsByTagName('article');
        const articlesFromAuthour = allArticles.filter((article) =>
            equalsCaseInsensitive(article.querySelector(`.user-info__nickname`)?.textContent, author)
        );

        return articlesFromAuthour;
    }

Естественно, меня как автора тоже можно заблокировать, думаю это вполне справедливо, хотя и иронично.


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


На этом с функционалом все, как видите все предельно минималистично.


Теперь о том, как его попробовать.


Сначала установите расширение. Для этого вам нужно


  • Клонировать репозиторий
  • Открыть chrome://extensions/ табу
  • Включить режим разработчика (правый верхний угол)
  • Загрузить расширение из папки src репозитория

Теперь настройте его под себя перейдя по вкладке Extension options:


я хотел это сделать как минимум полгода


Все, расширением можно пользоваться. Если вы волнуетесь за приватность, то:


  • Расширение требует всего два разрешения — "activeTab", "storage"
  • Запускается только для домена вида "https://habr.com/*"
  • 0 постороннего кода и все на виду, никаких node_modules, никаких зависимостей.

А поскольку устанавливать его нужно вручную, вы всегда видите именно тот код, который будет работать у вас в браузере, а не тот который я запушил в маркет. Поэтому я не стал настраивать какую-то минификацию (но авто-преттиер потом поставлю). Так что все должно быть в порядке. Но если у вас есть какие то сомнения — напишите в ЛС или создайте issue.


На этом у меня все, надеюсь кому-то это окажется полезным.


Доброй ночи господа.


П.С. И хотя я умышленно потроллил одного из авторов, мой список блокировки я не выкладываю, тут уже каждый должен решать сам.


П.П.С. Если найдется человек который нарисует иконку — это было бы просто замечательно. Художник из меня очень плохой.


Новая версия 1.1 доступна


  • Пофикшен баг из-за которого пост по прямой ссылке был спрятан. Спасибо Jeka178RUS
  • Включено удаление статей по имени корп. блога.
  • Добавлено опция скрывать статьи из блока "Сейчас читают". Выключено по умолчанию.
  • Изменен порядок отображения забаненых авторов — теперь новые сначала.
  • Добавлена иконка. Спасибо Almatyn
  • Удалено не используемое разрешение activeTab. Спасибо Klestofer

Ссылка на чейнджлог


Что касается .crx — я могу его сделать и запаблишить в GitHub, но, если я все прочитал правильно, работать это не будет из-за ограничений самого Хрома. Единственный вариант — регистрироваться и пушить в маркет, чем я может быть займусь когда высплюсь.


Спасибо всем за обсуждение, за вашу высокую оценку и еще раз всем доброй ночи. Я уже отключаюсь.