Manual:Pywikipediabot/replace.py/ru

From MediaWiki.org
Jump to: navigation, search
Wikimedia-logo-meta.png

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.

Bug blank.svg
Subversion repository of Wikimedia has this file:
Язык: 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. Текущие доступные стандартные замены:
  • HTML - преобразует тэги HTML в вики-синтакс и исправляет XHTML.
  • syntax - пытается исправить неправильную вики-разметку.
  • case-de - исправляет ошибки в падежах в страницах на немецком языке.
  • grammar-de - исправляет грамматику и типографию в страницах на немецком языке.
-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] Ссылки

Personal tools
Namespaces

Variants
Actions
Navigation
Support
Download
Development
Communication
Print/export
Toolbox