Interested Article - Scan dump
- 2021-11-19
- 1
Внимание!
|
Данный шаблон оставляет запрос для NapalmBot ( , ) на сканирование дампа. Бот обрабатывает запросы раз в 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
соответственно.
Заготовки для копирования
Результат в список: {{scan dump |title=<nowiki></nowiki> |namespaces= |contains=<nowiki></nowiki> |not contains=<nowiki></nowiki> |ignore=<nowiki></nowiki> |ignorecase= |multiline= |dotall= |verbose= |prefix= |result=<nowiki>* [[{title}]]</nowiki> |postfix= |sortkey=<nowiki>{title}</nowiki> |sortreverse= }} |
Результат таблицей: {{scan dump |title=<nowiki></nowiki> |namespaces= |contains=<nowiki></nowiki> |not contains=<nowiki></nowiki> |ignore=<nowiki></nowiki> |ignorecase= |multiline= |dotall= |verbose= |prefix=<nowiki>{| class="wikitable"\n|-\n!Заголовок!!Вхождение</nowiki> |result=<nowiki>|-\n|[[{title}]]||<code>\x3cnowiki\x3e{c_0}\x3c/nowiki\x3e</code></nowiki> |postfix=<nowiki>|}</nowiki> |sortkey=<nowiki>{title}</nowiki> |sortreverse= }} |
Технические ограничения
- На странице может одновременно находиться не более одного включения данного шаблона. Страницы, содержащие несколько шаблонов, будут проигнорированы ботом даже в том случае, если невыполненным является только один из них.
- Дампы создаются примерно раз в месяц и не всегда удачно, поэтому результат запроса может существенно отставать от реального положения вещей: некоторые из найденных вхождений могут быть уже исправленными, некоторые из существующих в Википедии — не найдены. Бот оставляет вместе с результатом дату просканированного дампа, чтобы вы могли оценить задержку.
- Бот не поддерживает никаких манипуляций над результатом (например, замену в найденной группе), однако их можно будет провести с помощью подстановочных шаблонов.
- Размер результата ограничен одним миллионом символов, при превышении этого предела сканирование дампа будет прервано.
- Одновременно обрабатываются до 100 запросов; если их больше, часть из них будет оставлена на следующий запуск бота. Это ограничение необходимо для того, чтобы не упереться в нехватку памяти.
- 2021-11-19
- 1