Шаблон:Scan dump (OgQlku&Scan dump)
Внимание! |
Данный шаблон оставляет запрос для 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
соответственно.
Заготовки для копирования
[править код]
Результат в список: {{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 запросов; если их больше, часть из них будет оставлена на следующий запуск бота. Это ограничение необходимо для того, чтобы не упереться в нехватку памяти.