Manual:Pywikibot/replace.py/ru

From MediaWiki.org
Jump to navigation Jump to search
Другие языки: English  • català • français • magyar • italiano • русский
Wikimedia-logo-meta.png

Эта страница была перемещена из MediaWiki.
Вероятно требуется очистка – пожалуйста, не стесняйтесь помочь. Кроме того, некоторые ссылки на странице могут быть красными; Соответствующие страницы можно найти в Meta. Удалите этот шаблон после завершения очистки.

Git logo
Wikimedia Git repository has this file: scripts/replace.py

Replace.py — это часть системы википедиа-ботов, написанных на языке программирования Питон.

Этот бот служит для замены текста. Он получает информацию о страницах, в которых требуется замена, из дампа XML или из текстового файла, либо же изменяет одну страницу, явно указанную в параметрах командной строки -page (см. ниже). Чтобы получить дополнительную информацию, используйте синтаксис

python replace.py -help

Файлы[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, см. https://dumps.wikimedia.org). Аргумент может быть передан скрипту в формате «-xml:filename».
-file Работает со списком страниц из сохранённого локально текстового файла. Будет читать все [[wiki link|вики-ссылки]] и использовать эти страницы для замены. Аргумент может быть передан скрипту в формате «-file:filename».
-cat Работает со всеми страницами в определённой категории. Аргумент может быть передан скрипту в формате «-cat:categoryname».
-subcats Работает со всеми страницами в определённой категории, отличие от предыдущего параметра в том, что в этом случается обрабатываются также и подкатегории. Аргумент может быть передан скрипту в формате «-subcat:categoryname».
-subcatsr Аналогично -subcats, но включает подподкатегории определённой категории.
-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:название_категории Добавляет к каждой изменяемой странице категорию «название_категории»

Глобальные параметры

Эти параметры переопределяют настройки параметров в user-config.py .

Глобальные параметры
ПараметрОписаниеКонфигурационная переменная
-dir:PATH Прочитать настройки бота из каталога, заданному переменной PATH, а не из каталога по умолчанию.  
-lang:xx Установить язык Вики с которой вы хотите работать. ХХ должен быть код языка. (ru) mylang
-family:xyz Установите семейство Вики с которой вы хотите работать, например, Википедия, викисловарь, викисклад, викитрэвел, ... Переопределяет конфигурацию в user-config.py. family
-user:xyz Войдите в систему как пользователь 'xyz' вместо пользователя по умолчанию. usernames
-daemonize:xyz Немедленно возвращает управление терминалу и перенаправляет stdout и stderr в файл xyz (использовать только для ботов, которые не требуют ввода из stdin).  
-help Показать справку.  
-log Включить лог-файл. Журналы будут храниться в подкаталоге logs. log
-log:xyz Включить лог-файл, используя 'xyz' в качестве имени файла. logfilename
-nolog Отключить лог (если он включен по умолчанию).  
-maxlag Устанавливает новый параметр - maxlag (число секунд). Defer bot edits during periods of database server lag. Default is set by config.py maxlag
-putthrottle:n
-pt:n
-put_throttle:n
Указать минимальное время (в секундах) которое бот будет ждать после сохранения страниц. put_throttle
-debug:item
-debug
Включить лог-файл и включить расширенные отладочные данные для компонента "item(элемент)" (для всех компонентов, если используется последующая форма). debug_log
-verbose
-v
Have the bot provide additional console output that may be useful in debugging. verbose_output
-cosmeticchanges
-cc
Переключает настройки cosmetic_changes в config.py или user-config.py в противоположные или отменяет их. All other settings and restrictions are untouched. cosmetic_changes
-simulate Запрещается запись на сервер. Useful for testing and debugging of new code (if given, doesn't do any real changes, but only shows what would have been changed). simulate
-<config var>:n Вы можете использовать все заданные числовые настройки переменных как параметр и изменить его из командной строки.  

Примеры[edit]

Если вы хотите поменять синтаксис шаблона, например со старого {{msg:Шаблон}} на новый ({{Шаблон}}), загрузите XML дамп (таблицу страниц) с https://dumps.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]