Шаблон:Scan dump/doc

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Данный шаблон оставляет запрос для NapalmBot (исходный код, crontab) на сканирование дампа. Бот обрабатывает запросы раз в 6 часов (в 0:30, 6:30, 12:30 и 18:30 по UTC); сканирование дампа, как правило, занимает около часа — соответственно, если запрос заполнен корректно, разультат придёт в течение 8 часов.

В целях безопасности, бот реагирует только на шаблоны, поставленные на подстраницы в пространствах имён «Участник» и «Проект». В частности, вы можете подставить её на свою подстраницу.

Для регулярных выражений используется стандартная библиотека re языка программирования Python, документация доступна здесь.

Формат запроса[править код]

{{scan dump
|title=<nowiki></nowiki>
|namespaces=
|contains=<nowiki></nowiki>
|not contains=<nowiki></nowiki>
|ignore=<nowiki></nowiki>

|ignorecase=
|multiline=
|dotall=
|verbose=

|prefix=
|result=<nowiki></nowiki>
|postfix=
|sortkey=<nowiki>{title}</nowiki>
|sortreverse=
}}

Запрос:

  • title — регулярное выражение, описывающее заголовок; будет передано в функцию match, которая посчитает заголовок подходящим, если некоторый суффикс заголовка удовлетворяет регулярному выражению. Добавьте символ $ в конец, чтобы проверять заголовок целиком.
  • namespaces — список номеров пространств имён, в которых следует проводить поиск, через запятую. По умолчанию поиск будет проводиться во всех пространствах имён.
  • contains, обязательный параметр — регулярное выражение, которому должна удовлетворять подстрока страницы.
  • not contains — регулярное выражение, которому не должна удовлетворять ни одна подстрока страницы.
  • ignore — все вхождения, удовлетворяющие регулярному выражению, будут заменены на специальные метки; если эти метки попадут в результат, на их месте будет восстановлен исходный текст. С помощью этого параметра можно, например, скрыть комментарии регулярным выражением <!--.*?-->, чтобы contains и not contains не реагировали на их содержимое.

Флаги регулярных выражений:

  • ignorecase — нечувствительность к регистру.
  • dotall — точка (.) будет находить все символы, включая перевод строки.
  • multiline — символы ^ и $ будут обозначать начало и конец строк, а не всей страницы.
  • verbose — регулярные выражения будут поддерживать комментарии и разбиения на строки.

Любое непустое значение этих параметров активируют соответствующий флаг. Флаги влияют только на регулярные выражения, переданные в contains и not contains. title в любом случае будет анализироваться без флагов, чувствительно к регистру. ignore в любом случае будет обрабатываться со всеми четырьмя флагами.

Формирование результата:

  • prefix — код, который будет добавлен перед результатом.
  • result — форматная строка для одной строчки результата, см. ниже. По умолчанию — * [[{title}]].
  • postfix — код, который будет добавлен после результата.
  • sortkey — форматная строка для ключа сортировки. По умолчанию сортировка проводиться не будет, то есть, результаты будут следовать в том же порядке, в котором они следуют в дампах — по возрастанию даты создания страницы.
  • sortreverse — при любом непустом значении сортировка будет проводиться в обратном порядке (по убыванию).

Форматные строки: Все коды вида {code} будут заменены на подстроки. Для экранирования символов { и } дублируйте их. Список доступных кодов:

  • {title} — заголовок страницы.
  • {namespace} — номер пространства имён страницы.
  • {text} — текст страницы.
  • {id} — идентификатор страницы.
  • {t_0} — найденное параметром title выражение.
  • {t_N} — содержимое группы N, найденной параметром title, где N — номер неименованной или имя именованной группы.
  • {c_0} — найденное параметром contains выражение.
  • {c_N} — содержимое группы N, найденной параметром contains, где N — номер неименованной или имя именованной группы.

Экранирование символов: Поскольку символы, присутствующие в регулярных выражениях или форматных строках, могут быть восприняты движком MediaWiki и парсером бота не как обычный текст (например, символ | в регулярных выражениях может быть воспринят как начало следующего параметра), рекомендуется оборачивать весь параметр в тег <nowiki>, бот умеет это обрабатывать; если регулярное выражение само должно включать в себя тег nowiki, то символы < и > можно будет описать последовательностями \x3c и \x3e соответственно.

Заготовки для копирования[править код]

Технические ограничения[править код]

  • На странице может одновременно находиться не более одного включения данного шаблона. Страницы, содержащие несколько шаблонов, будут проигнорированы ботом даже в том случае, если невыполненным является только один из них.
  • Дампы создаются примерно раз в месяц и не всегда удачно, поэтому результат запроса может существенно отставать от реального положения вещей: некоторые из найденных вхождений могут быть уже исправленными, некоторые из существующих в Википедии — не найдены. Бот оставляет вместе с результатом дату просканированного дампа, чтобы вы могли оценить задержку.
  • Бот не поддерживает никаких манипуляций над результатом (например, замену в найденной группе), однако их можно будет провести с помощью подстановочных шаблонов.
  • Размер результата ограничен одним миллионом символов, при превышении этого предела сканирование дампа будет прервано.
  • Одновременно обрабатываются до 100 запросов; если их больше, часть из них будет оставлена на следующий запуск бота. Это ограничение необходимо для того, чтобы не упереться в нехватку памяти.