Manual:Pywikipediabot/replace.py/ru
This page was moved from MetaWiki.
It probably requires cleanup – please feel free to help out. In addition, some links on the page may be red; respective pages might be found at Meta. Remove this template once cleanup is complete.
| Язык: | English • Català • Français • Magyar • Italiano • Русский |
|---|
Replace.py — это часть системы википедиа-ботов, написанных на языке программирования Питон.
Этот бот служит для замены текста. Он получает информацию о страницах, в которых требуется замена, из дампа XML или из текстового файла, либо же изменяет одну страницу, явно указанную в параметрах командной строки -page (см. ниже). Чтобы получить дополнительную информацию, используйте синтаксис
python replace.py -help
Contents |
[edit] Файлы
Этот бот использует три особых файла:
- replace.py
- главный модуль
- fixes.py
- список некоторых стандартных замен
- user-fixes.py
- файл со списком пользовательских замен. Этот файл можно создать (с примером замены) при помощи скрипта generate_user_files.py.
Файлы которые можно использовать для ввода и/или вывода:
- filename.txt
- файл со списком статей, подлежащих обработке, название этого файла передаётся скрипту при помощи параметра «-file»
- filename.xml
- локальный XML дамп, который можно использовать при помощи параметра «-xml»
- replacelog
- файл отчёта (лог), имя этого файла передаётся скрипту при помощи параметра «-log»
[edit] Параметры
Вы можете запускать скрипт replace.py со следующими параметрами (например, python replace.py -file:articles_list.txt "errror" "error").
| Источники (страницы для замены) | |
|---|---|
| -xml | Получает информацию из локального XML дампа (pages_current, см. http://download.wikimedia.org). Аргумент может быть передан скрипту в формате «-xml:filename». |
| -file | Работает со списком страниц из сохранённого локально текстового файла. Будет читать все [[wiki link|вики-ссылки]] и использовать эти страницы для замены. Аргумент может быть передан скрипту в формате «-file:filename». |
| -cat | Работает со всеми страницами в определённой категории. Аргумент может быть передан скрипту в формате «-cat:categoryname». |
| -subcat | Работает со всеми страницами в определённой категории, отличие от предыдущего параметра в том, что в этом случается обрабатываются также и подкатегории. Аргумент может быть передан скрипту в формате «-subcat:categoryname». |
| -transcludes | Работает со всеми страницами, которые включают определённый шаблон. Аргумент может быть передан скрипту в формате «-transcludes:referredtemplate». |
| -page | Редактирует только определённую страницу. Аргумент может быть передан скрипту в формате «-page:pagetitle». Чтобы редактировать несколько страниц, используйте параметр несколько раз. |
| -ref | Работает со всеми страницами, которые ссылаются на определённую страницу. Аргумент может быть передан скрипту в формате «-ref:referredpagetitle». |
| -filelinks | Работает со всеми страницами, которые ссылаются на определённый файл (изображение). Аргумент может быть передан скрипту в формате «-filelinks:ImageName». |
| -links | Работает со всеми страницами, на которые есть ссылки с определённой страницы. Аргумент может быть передан скрипту в формате «-links:linkingpagetitle». |
| -start | Работает со всеми страницами данной вики, начиная с определённой страницы. Чтобы начать с первой из страниц данной вики, используйте «-start:!». Внимание: Лучше использовать -xml вместо этого параметра; он применяется когда нет локального XML дампа. |
| Параметры замены | |
| -except:XYZ (только старые версии) | Игнорирует страницы, содержащие XYZ. Если указан аргумент -regex, то XYZ будет считаться регулярным выражением. |
| -excepttitle:XYZ (только новые версии) | Игнорирует страницы, название которых содержит XYZ. Если указан аргумент -regex, то XYZ будет считаться регулярным выражением. |
| -requiretitle:XYZ (только новые версии) | Производит замены только на страницах, название которых содержит XYZ. Если указан аргумент -regex, то XYZ будет считаться регулярным выражением. |
| -excepttext:XYZ (только новые версии) | Игнорирует страницы, содержащие текст XYZ. Если указан аргумент -regex, то XYZ будет считаться регулярным выражением. |
| -exceptinside:XYZ (только новые версии) | Skip occurences of the to-be-replaced text which lie within XYZ. Если указан аргумент -regex, то XYZ будет считаться регулярным выражением. |
| -exceptinsidetag:XYZ (только новые версии) | Skip occurences of the to-be-replaced text which lie within an XYZ tag. |
| -summary:XYZ | Устанавливает текст для описания совершаемых ботом изменений, этот параметр означает, что текст по усмолчанию для описания изменений не будет использоваться. |
| -query: | Максимальное количество страниц, загружаемых роботом за раз. По умолчанию значение равно 60. При чтении XML файла этот параметр игнорируется |
| -fix:XYZ | Выполняет одну из стандартных или пользовательских замен (файлы fixes.py и user-fixes.py). Аргумент -regex и установленные командной строкой замены будут игнорироваться при использованиии этого параметра -fix. Текущие доступные стандартные замены:
|
| -namespace:n | Номер пространства страниц, которое нужно обрабатывать. Этот параметр можно использовать несколько раз. Он работает в сочетании со всеми остальными параметрами, за исключением параметра -start. (Если вы хотите обработать все страницы внутри какого-то пространства страниц, используйте префикс страницы, например, -start:Участник:!.) Больше не поддерживается |
| -sleep:123 | При использовании параметра -fix и нескольких регулярных выражений, загрузка ЦПУ может быть очень большой из-за того, что скрипт проверяет все регулярные выражения, потребляя доступные системные ресурсы. Использование параметра -sleep заставляет скрипт ждать между проверками разных регулярных выражений и снимает нагрузку на систему |
| неименованные параметры | Первый неименованный параметр — текст который нужно заменять, второй — на что его нужно заменить. Если указан параметр -regex, первый аргумент будет рассматриваться как регулярное выражение и во втором аргументе можно использовать выражения типа \1 или \g<name> (номера групп). |
| Специальные параметры | |
| -always | Не запрашивает разрешения для каждой замены |
| -recursive | Рекурсивные замены, если это возможно. Будьте осторожны, использование параметра может привести к возникновению бесконечного зацикливания. |
| -nocase | Не обращать внимания на регистр при использовании регулярных выражений. |
| -allowoverlap | Если образцы для замены пересекаются, заменять их все. Будьте осторожны, использование параметра может привести к возникновению бесконечного зацикливания. |
| -regex | Использовать при замене регулярные выражения. Без использования этого параметра будет происходить простая замена текста. |
| -dotall | При использовании регулярных выражений (параметр -regex) точка обозначает любой символ, в том числе и конец строки. Без этого параметра точка обозначает любой символ кроме конца строки |
| -addcat:название_категории | Добавляет к каждой изменяемой странице категорию «название_категории» |
Глобальные параметры
| arg | Описание | Значение по умолчанию |
|---|---|---|
| -help | Вывести список глобальных аргументов бота (этот список), затем спецификацию конкретного бота, если это возможно. | отсутствуют |
| -family:xyz | Установить family вики, в которой работает бот, например wikipedia, wiktionary, commons, wikitravel, …. Это изменяет настройку в user-config.py. | параметр user-config.py: family |
| -lang:zxx | Установить язык вики, в которой работает бот, изменяя настройку в user-config.py, где zxx является кодом языка, за исключением использования -lang:commons для Викисклада. | параметр user-config.py: mylang |
| -log | Включить запись лога. Логи будут записаны в поддиректорию /logs. | параметр user-config.py: log ? |
| -log:xyz | Включить запись лога, использовать xyz как имя файла. | |
| -nolog | Отключить запись лога (если она включена по умолчанию). | |
| -putthrottle:nn | Установить минимальное время (в секундах), которое будет ждать бот между сохранением страниц. | параметр user-config.py: putthrottle ? |
| -verbose -v |
Сделать более детальные сообщения в программном выводе, чем в стандартном выводе о текущей работе, или происходящем процессе. Это может быть полезно для отладки или при нестандартных ситуациях. | не выбрано |
[edit] Примеры
Если вы хотите поменять синтаксис шаблона, например со старого {{msg:Шаблон}} на новый ({{Шаблон}}), загрузите XML дамп (таблицу страниц) с http://download.wikimedia.org и используйте команду:
python replace.py -xml -regex "{{msg:(.*?)}}" "{{\1}}"
Обратите внимание что можно использовать парметры и из нескольких строк:
python replace.py -regex -start:! "Первая строка\nВторая строка" ""
Replace.py можно использовать для вставки или добавления текста на страницу (обратите внимание, что добавляемый текст содержит добавляемую новую строку)):
python replace.py -regex '(?ms)^(.*)$' "\1
> [[Category:NewCat]]"
Если у вас есть дамп foobar.xml и вы хотите исправите ошибку, например Ошипка → Ошибка, используйте такой формат:
python replace.py -xml:foobar.xml "Ошипка" "Ошибка"
Если у вас есть страниц под названием «John Doe» и вы хотите преобразовать в ней тэги HTML в вики-разметку, используйте такой вызов скрипта: syntax, use:
python replace.py -page:John_Doe -fix:HTML
Если вы запускаете скрипт без аргументов, вам будет предложено их ввести:
python replace.py -file:blah.txt
Скрипт запрашивает у пользователя разрешения на модификацию страниц. Рекомендуем вам дважды проверять текст чтобы не внести ошибки на страницы (особенно проверяйте текст на отсутствие опечаток). Можно создать файл со списком страниц для замены:
[[plane]] [[vehicle]] [[train]] [[car]]
Затем вызвать скрипт для этих страниц примерно в таком виде:
python replace.py [global-arguments] -file:articles_list.txt "Ошипка" "Ошибка"
Предпочтительнее задавать регулярные выражения не в командной строке, а в файле user-fixes.py
python replace.py -file:articles_list.txt -fix:example2
[edit] Пример: Замена нескольких абзацев
Исходный текст на Meta:Sandbox:
This page is for any tests. Welcome to the sandbox!
Если вы хотите изменить порядок этих абзацев (второй сделать первым), используйте такой синтаксис:
replace.py -page:Meta:Sandbox -regex "This page is for any tests.\r\n\r\nWelcome to the sandbox!" "Welcome to the sandbox!\n\nThis page is for any tests."
Чтобы добавить новую строку, используйте \n.
[edit] Ссылки
- The Python Standard Library Regular expression operations
- Kodos - The Python Regular Expression Debugger - to test regular expressions specifically for python
- Regular-Expression.Info - introduction and comparison of various regex implementations, including python
