Участник:Ilya Voyager/wikipedia-notify

wikipedia-notify — система мгновенного уведомления о новых правках на страницах проектов Фонда Викимедиа. Позволяет отслеживать свежие правки и участвовать в дискуссиях на страницах Википедии так же легко, как болтать в мессенджере, а также мгновенно блокировать вандалов.

Техническая реализация

Клиент Irssi подключается к специальным IRC-каналам на irc.wikimedia.org, на которые транслируются свежие правки. В Irssi загружается скрипт wikipedia-notify.pl, осуществляющий фильтрацию новых сообщений на выбранных каналах. В случае, если сообщение соответствует правке, удовлетворяющей определенным критериям, скрипт загружает старую и новую ревизию, делает дифф с помощью wdiff, и с помощью libnotify выдает сообщение, аналогичное уведомлению о новых сообщения в интернет-мессенджерах. (См. скриншот.)

Возможные критерии:

  • Отображать все правки в проекте (полезно для слежения за проектами с низкой активностью)
  • Отображать правки в списке наблюдения (используется отдельный скрипт для создания локальной копии списка наблюдения, с помощью pywikipedia framework).
  • Отображать правки на страницах, имена которых соответствуют данному регулярному выражению (например, все подстраницы в личном пространстве).

1-click block

Функция 1-click block позволяет заблокировать автора правки буквально «одним кликом» по специальной ссылке, приводимой в окне-уведомлении. (Ссылки «1 day» и «indef» на скриншоте сверху.) Эта функция особенно полезна для борьбы с явным «серийным» вандализмом или грубыми оскорблениями. Поскольку основной задачей в данном случае является оперативное пресечение деструктивных действий и экономия времени администратора, форма Special:Block заполняется автоматически (пользовательским javascript'ом, см. код ниже), при этом подставляются стандартные параметры блокировки для типичных ситуаций (например, вандализм с IP-адреса — блокировка на 1 день; вандализм с зарегистрированной учетной записи — бессрочная блокировка). В случае необходимости, параметры такой блокировки впоследствии могут быть уточнены либо изменены. Если есть основания считать, что блокировка с помощью 1-click block была наложена ошибочно, её можно снять или скорректировать без предварительного обращения к блокировавшему администратору (но, желательно, с его уведомлением).

Код пользовательского javascript

Следующий код используется для мгновенной бессрочной блокировки вандальных учетных записей.

function kickOut(){
    document.getElementById('mw-bi-other').value = 'infinite'
    document.getElementById('mw-bi-reason').value = '[[user:Ilya Voyager/wikipedia-notify#1-click block|1-click block]], вероятно [[ВП:В|вандализм]]'
    document.getElementById('wpAllowUsertalk').checked = false
    document.getElementById('wpEmailBan').checked = true
    document.getElementById('blockip').submit()
}
if (document.URL.match(/\?kickout=1/) && wgPageName == 'Служебная:Block') addOnloadHook(kickOut)

Код wikipedia-notify.pl

Текущий код доступен в svn-репозитории. Распространяется под GPLv2+.

Другие версии

Версия, не требующая irssi

Может быть написана. Когда-нибудь :) Скажем, можно использовать POE::Component::IRC. Правьте смело! :)

Версия под MS Windows

Может быть написана. Когда-нибудь :) Скажем, на основе snarl. Правьте смело! :)

 

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia