29 февраля 2016 29.02.16 6 2032

Что делать если нет возможности, но очень хочется?

Бывает такой момент, заходишь ты почитать новости, какая то из них тебя заинтересовывает, ты хочешь оставить комментарий и вовремя его написания замечаешь что какой то контрацептив комментатор, взял да запалил сюжетную развязку игры которую ты вот только что купил и собирался поиграть. Да, его тут же закидали минусами и нехорошими словами, но что толку, мир никогда не станет прежним и этот индивидуум встряли чему нибудь научится, а значит его сообщений хотелось бы не видеть вовсе. Либо же ты просто по глупости ввязался в спор с еще более недалеким чем ты, и тот с каждым новым сообщением находит способ зацепить тебя чтобы продолжить глупый и бессмысленный диалог. Было бы идеально если бы на стопгейме была система с черными листами, позволяющая отфильтровывать комментарии неугодных пользователей. Но увы, такой нет. Но можно это испарить своими силами, в этом поможет то что сайт после загрузки находится у нас на компьютере, и мы вольны его править как хотим, главное сделать это достаточно быстро чтобы ненужный мусор не успел показаться. В этом нам поможет 2 вещи, любой плагин для браузера позволяющий запускать JavaScript (я для FireFox использую GreasetMonkey) и замечательный язык под названием CoffeeScript .

Первое что нужно сделать это разумеется установить плагин (если вы не умеете устанавливать плагины в свой браузер то что вы делаете в интернете?). На этом заострять внимание не буду, отмечу лишь что для того чтобы наш скрипт срабатывал на каждой странице нужно указывать сайт как _http://stopgame.ru/* (нижний слеш впереди для того чтобы сайт не срезал http, он не нужен) ибо без звездочки он будет срабатывать только на главной, где комментариев нет.

И разумеется самое главное, это код скрипта:

blackList = [ 'user1', 'user2']
$(«div[id^='comment_id_']:has(a):contains('#{user }')»).remove() for user in blackList

(кавычки в коде должны быть обычными ' " ' а не ' « » ')

у неподготовленного человека от этого случается ступор, да чего там, даже у программистов которые никогда не связывались с web разработкой и то приступ сработать может, я сам 4 месяца назад смотрел на это как на темную магию.

Но ничего сложного по сути нет, в первой строчке мы заполняем массив «неугодных», ники вписываются в кавычках, без пробелов по бокам, через запятую. Вторая же строка делает за нас всю работу, а именно мы командой for user in blackList поочередно присваиваем переменной user все значения из массива blackList. Далее для каждого значения переменной user мы при помощи строки $(«div[id^='comment_id_']:has(a):contains('#{user }')») ищем все блоки комментариев которые содержат в качестве ника комментатора искомое значение, и собственно выносим их со страницы командой .remove(). Тут используется хоть и старая но все же очень популярная библиотека jQuery (которую стопгейм любезно загрузил сам и нам не нужно подключать ее отдельно).

Собственно то и все, программирования всего 2 строчки, однако есть 1 проблема, хоть CoffeeScript и может исполняться на страницах, это происходит очень медленно, потому для быстрой работы нашего года его необходимо конвертировать в JavaScript. Для этой цели существует очень полезный сайт js2.coffee он позволяет перегонять CoffeeScript в валидный JavaScript. После конвертации наш код выглядит вот так:

var blackList, i, len, user;

blackList = ['user1', 'user2'];

for (i = 0, len = blackList.length; i < len; i++) {
user = blackList[i];
$(«div[id^='comment_id_']:has(a):contains('» + user + "')").remove();
}

(кавычки в коде должны быть обычными ' " ' а не ' « » ')

тут происходит тоже самое что я описывал выше только языком JavaScript. И данный код уже можно смело копировать в плагин и наслаждаться тем как он сразу после загрузки страницы выносит всех неугодных комментаторов.

В итоге написав всего 2 строчки кода мы реализовали весьма полезную функцию на сайте. А ведь таким образом можно сделать абсолютно все что душе угодно. Можно не только фильтровать комментарии но и к примеру менять внешний вид сайта так чтобы он был более приятен глазу, как говорится на любителя, поменять шрифт, цвет фона, и тому подобное. Только следует быть осторожным в дальнейшем, ибо «забанив» слишком много активных комментаторов можно увидеть что ветки начинаются со 2-3 уровня и тд. Решил выложить скрипт сюда, может кому пригодиться, я активно им пользуюсь. если кого заинтересовал CoffeScript советую прочитать по нему документацию cidocs.ru/coffeescript, она очень короткая и отвечает на большинство вопросов, далее остается лишь немного поэкспериментировать и можно с любым сайтом делать что угодно.

Собственно берем и пользуемся, если есть вопросы постараюсь ответить.

Лучшие комментарии

Assassin4791 29 февраля 2016, 20:44
Это лишь пример, большинство то люди адекватные но встречаются индивидуумы которых после 2-3 сообщений видеть просто не хочется ни в коем виде, грубо их послать не поможет, они только продолжат гадить, и пока не глянешь на это, циферка в профиле так и будет раздражать, и если нет функции фильтра по умолчанию, то значит нужно ее сделать, хотя бы и кустарно.
Assassin4791 1 марта 2016, 11:39
Не помню что бы рассказывал в теме о решении главной проблемы интернета. Цель стояла в создании фильтра для комментариев.
Alamonall 29 февраля 2016, 20:09
У тебя просто в конце концов никого не останется. Да и классифицировать человека по одному коменту не дальновидно.
atomgrib 1 марта 2016, 9:15
взял да запалил сюжетную развязку игры которую ты вот только что купил и собирался поиграть

И когда это успела стать главной проблемой Интернета

Читайте также