Руководство:Pywikibot/touch.py

This page is a translated version of the page Manual:Pywikibot/touch.py and the translation is 100% complete.

touch.py — скрипт Pywikibot , предназначенный для прохода по множеству страниц Вики и редактированию их без изменений.

Например, это может использоваться для обновления категорий, проставляемых шаблонами.

Когда страница должна быть обновлена, touch.py может помочь. Скрипт обновляет запись без внесения изменений. Технически скрипт берёт каждую страницу и сохраняет без внесения изменений (нулевая правка), что вызывает обновление всех составляющих. Обычно это не отражается в истории страницы, однако в редких случаях пустая правка может попасть в историю (обычно это происходит в результате неправильного поведения расширений или если предыдущий редактор оставил на странице что-то, что приводит к преобразованиям перед сохранением в правке бота).

Сценарий 1

Когда категория заполняется широко используемым шаблоном, запуск touch.py добавит в категорию существующие страницы.

Параметры

touch.py принимает те же параметры, что и replace.py , а также общие параметры .


Доступные генераторы и фильтры

Опции генератора
Параметр Описание
-cat Работать по всем страницам в указанной категории. Аргумент также можно указать в виде -cat:имя_категории или в виде -catимя_категории:|первая_страница (также в этой и последующих опциях вместо | можно использовать #)
-catr Аналог -cat, но также рекурсивно включает страницы не только из указанной категории, но и из её подкатегорий, подподкатегорий и т.д. Аргумент может задаваться в виде -catr:имя_категории или -catr:имя_категории|первая_страница.
-subcats Обрабатывать все подкатегории указанной категории. Аргумент может задаваться в виде -subcats:имя_категории или -subcats:имя_категории|первая_страница.
-subcatsr Аналог -subcats, но также рекурсивно включает подподкатегории и т.д. Аргумент может задаваться в виде -subcatsr:имя_категории или -subcatsr:имя_категории|первая_страница.
-uncat Работать по всем некатегоризованным страницам.
-uncatcat Работать по всем некатегоризованным категориям.
-uncatfiles Работать по всем некатегоризованным файлам.
-file Читать список страниц из указанного текстового файла. Имена страниц в файле могут быть окружены квадратными скобками (например, [[Page]]) или разделены переносами строки. Аргумент также может задаваться в виде -file:имя_файла.
-filelinks Работать по всем страницам, содержащим указанный файл. Аргумент также может задаваться в виде -filelinks:имя_файла.
-search Работать по всем страницам, которые будут найдены с помощью поиска MediaWiki по пространствам имён .
-logevents Работать по страницам, полученным с помощью Special:Log. Значение может быть разделённым запятыми списком следующего:
logevent,username,start,end

или для обратной совместимости:

logevent,username,total

Для использования значения по умолчаний оставляйте строку пустой. Доступны опции для каждого типа журналов, типы журналов могут быть следующими:

spamblacklist, titleblacklist, gblblock, renameuser, globalauth, gblrights, gblrename, abusefilter, massmessage, thanks, usermerge, block, protect, rights, delete, upload, move, import, patrol, merge, suppress, tag, managetags, contentmodel, review, stable, timedmediahandler, newusers

Количество страниц по умолчанию — 10.

Примеры:

-logevents:move возвращает страницы из журнала переименования (обычно перенаправления)
-logevents:delete,,20 возвращает 20 страниц из журнала удаления
-logevents:protect,Usr возвращает страницы, защищённые пользователем Usr
-logevents:patrol,Usr,20 возвращает 20 страниц, отпатрулированных пользователем Usr (первичное патрулирование)
-logevents:upload,,20121231,20100101 возвращает страницы, загруженные в 2010, 2011 и 2012
-logevents:review,,20121231 возвращает страницы, отпатрулированные до 31 декабря 2012
-logevents:review,Usr,20121231 возвращает страницы, отпатрулированные пользователем Usr до 31 декабря 2012
В некоторых случаях должно указываться как -logevents:"move,Usr,20"
-interwiki Работать по указанной и странице и всем её аналогам на других языках. Может быть полезно для борьбы с кросс-вики спамом. Внимание: эта опция затрагивает множество вики-сайтов, используйте с осторожностью и проверяйте все свои правки!
-links Работать по всем страницам, на которые ссылается указанная страница. Аргумент также может задаваться в виде -links:имя_страницы.
-liverecentchanges Работать по страницам из списка свежих правок. Если указано как -liverecentchanges:x, работать по x последним правкам.
-imagesused Работать по всем файлам, содержащимся на указанной странице. Аргумент также может задаваться в виде -imagesused:имя_страницы.
-newimages Работать по последним загруженным изображениям. Если задано в виде -newimages:x, работать по x последним изображениям.
-newpages Работать по последним созданным страницам. Если задано в виде -newpages:x, работать по x последним страницам.
-recentchanges Работать по страницам с наиболее свежими правками. Если задано в виде -recentchanges:x, работать по x последним страницам. Если задано в виде -recentchanges:offset,duration, работать по страницам с отступом offset в минутах продолжительностью duration минут.

Примеры:
-recentchanges:20 - возвращает 20 страниц со свежими правками
-recentchanges:120,70 - вернёт страницы с отступом 120 в минутах продолжительностью 70 минут.
-recentchanges:visualeditor,10 - возвращает visualeditor страниц со свежими правками с тэгом visualeditor
-recentchanges:"mobile edit,60,35" - вернёт страницы, отмеченные «мобильной правкой» для данного промежутка времени и начала

rc-тэги поддерживаются, при этом rc-тэг должен быть в самом первом параметре.
-unconnectedpages Работать по новейшим страницам, не связанным с репозиторием Wikibase. Если задано в виде -unconnectedpages:x, обрабатывать x новейших неподсоединённых страниц.
-ref Работать по всем страницам, которые ссылаются на указанную страницу. Аргумент также может задаваться в виде -ref:имя_страницы.
-start Указывает боту обрабатывать все страницы вики в алфавитном порядке, начиная с указанной. Аргумент также может задаваться в виде -start:имя_страницы. Также можно включать пространство имён. Например, -start:Template:! даёт боту задание работать по всем страницам в пространстве имён шаблонов. Значение по умолчанию: start:!
-prefixindex Работать по страницам, начинающимся с общего префикса.
-transcludes Работать по всем страницам, содержащим указанный шаблон. Аргумент также может задаваться в виде -transcludes:Имя.
-unusedfiles Работать по всем описаниям неиспользуемых файлов. Также может задаваться в виде -unusedfiles:n, где n — максимальное количество обрабатываемых страниц.
-lonelypages Работать по всем страницам, на которые не ссылается ни одна страница. Аргумент также может задаваться в виде -lonelypages:n, где n — максимальное количество страниц для обработки.
-unwatched Работать по всем статьям, за которыми никто не наблюдает. Аргумент также может задаваться в виде -unwatched:n, где n — максимальное количество страниц для обработки.
-property:name Работать по всем страницам с указанным свойством из Special:PagesWithProp.
-usercontribs Работать по всем статьям, которые правил указанный пользователь. (Пример: -usercontribs:DumZiBoT)
-weblink Работать по всем статьям, которые содержат внешнюю ссылку на указанный URL; может задаваться в виде -weblink:url
-withoutinterwiki Работать по всем страницам без интервики-ссылок. Аргумент может задаваться в виде -withoutinterwiki:n, где n — общее количество.
-mysqlquery Исполнить запрос Mysql вида "SELECT page_namespace, page_title, FROM page WHERE page_namespace = 0" и работать по страницам из результата. См. Manual:Pywikibot/MySQL .
-sparql Исполнить запрос SPARQL SELECT, включающий ?item и работать по страницам из результата.
-sparqlendpoint Указать URL эндпоинта SPARQL (необязательно). (Пример: -sparqlendpoint:http://myserver.com/sparql)
-searchitem Принимает строку поискового запроса и работает по содержащим его страницам Wikibase. Аргумент может задаваться в виде -searchitem:текст, где текст — искомая строка, или -searchitem:lang:текст, где lang — язык, на котором будет производиться поиск.
-random Работать по случайным страницам, возвращаемым Special:Random. Также может задаваться в виде -random:n, где n — количество возвращаемых страниц.
-randomredirect Работать по случайным перенаправлениям, возвращаемым Special:RandomRedirect. Также может задаваться в виде -randomredirect:n, где n — количество возвращаемых страниц.
-google Работать по страницам, полученным поиском Google. Для этого необходим лицензионный ключ Google Web API. Обратите внимание, что Google больше не предоставляет такие лицензионные ключи. См. google_key в config.py для инструкций. Аргумент также может задаваться в виде -google:поисковая_строка.
-yahoo Работать по страницам, полученным поиском Yahoo. Зависит от модуля Python pYsearch. См. yahoo_appid в config.py для инструкций.
-page Работать по одной странице. Аргумент может задаваться в виде -page:имя_страницы и использоваться несколько раз для нескольких страниц.
-pageid Работать по одному идентификатору страницы. Аргумент также может задаваться в виде -pageid:pageid1,pageid2,.. или -pageid:'pageid1|pageid2|.. и использоваться несколько раз для разных страниц.
-linter Работать по страница с ошибками lint. На сайте должно быть установлено расширение Linter . -linter выбирает все категории. -linter:high, -linter:medium или -linter:low выбирает все категории с указанным приоритетом. Категории могут быть указаны поодиночке через запятую -linter:кат1,кат2,кат3 Указание /int устанавливает Lint ID, с которого будет начинаться запрос; например, -linter:high/10000 -linter:show лишь показывает доступные категории.
Опции фильтрации
Параметр Описание
-catfilter Фильтровать генератор страниц, отдавать только страницы в указанной категории. Формат аргументов см. у генератора -cat.
-grep Регулярное выражение, которому должно соответствовать содержимое статьи. Могут быть указаны множественные -grep:regexpr, страница будет возвращаться, если её содержимое соответствует хотя бы одному из них. Будут использоваться регистронезависимые регулярные выражения, точка соответствует любому символу, включая перевод строки.
-grepnot Like -grep, but return the page only if the regular expression does not match.
-intersect Работать по пересечению всех указанных генераторов.
-limit При использовании любого другого аргумента -limit:n задаёт множество страниц, откуда берётся не более чем n страниц для обработки.
-namespaces
-namespace
-ns
Фильтровать генератор страниц, отдавать только страницы в указанной категории. Разделяйте множественные номера пространств имён запятыми.

Примеры:

-ns:0,2,4 -ns:Help,MediaWiki

Чтобы исключить пространство имён, перед ним надо указывать not Примеры:

-ns:not:2,3 -ns:not:Help,File

Если используется с генераторами -newpages/-random/-randomredirect/-linter, -namespace/-ns должно указываться перед -newpages/-random/-randomredirect/-linter. Если используется с генератором -recentchanges, -namespace следует указывать перед -recentchanges для улучшения производительности.

Если используется с генератором -start, -namespace/-ns должно содержать единственное значение.
-onlyif Утверждение, которое должна содержать страница, иначе элемент не будет возвращаться. Формат — свойство=значение,квалификатор=значение. Можно указывать несколько (или ни одного) квалификаторов, разделённых запятыми.

Примеры:
P1=Q2 (свойство P1 должно содержать значение Q2)
P3=Q4,P5=Q6,P6=Q7 (свойство P3 со значением Q4 и квалификаторами: P5 со значением Q6 и P6 со значением Q7)

Значение может быть идентификатором страницы, координатой в формате: latitude,longitude[,precision] (все значения в десятичных градусах), год или простая строка. Аргумент может быть указан несколько раз, страница будет возвращена, только если соответствует всем аргументам. Аргумент также может задаваться через -onlyif:expression.
-onlyifnot Утверждение, которое не должна содержать страница, иначе элемент не будет возвращаться. См. примеры и использование выше в -onlyif.
-ql Фильтровать страницы по качеству. Применимо только при модели содержимого proofread-page, иначе не оказывает никакого эффекта. Допустимы значения от 0 до 4. Множественные значения разделяются запятыми.
-subpage -subpage:n фильтрует страницы с глубиной n, т.е. глубина 0 отфильтровывает все подстраницы, а глубина 1 — все подстраницы подстраниц.
-titleregex Регулярное выражение, которому должно соответствовать название страницы, иначе она не будет возвращена. Могут быть указаны множественные -titleregex:regexpr, страница будет возвращаться, если соответствует хотя бы одному из них. Будут использоваться регистронезависимые регулярные выражения, точка соответствует любому символу.
-titleregexnot Как -titleregex, но возвращается страницу, если не выполняется соответствие регулярному выражению.

Кроме того поддерживается параметр purge, который заставляет использовать очистку кэша вместо нулевой правки.

Скрипт также понимает некоторые дополнительные аргументы командной строки:

ParameterDescription
-botflag обязать использовать пометку правки бота при изменениях
-converttitles (аргумент purge) преобразовывать заголовки к другим вариантам при необходимости
-forcelinkupdate (аргумент purge) обновлять таблицы ссылок
-forcerecursivelinkupdate (аргумент purge) обновлять таблицы ссылок для страницы и всех включающих её страниц
-redirects (аргумент purge) автоматически разрешать перенаправления

Примеры

$ python3 touch.py -start:!
$ python3 touch.py -lang:fr -family:wiktionary -cat:anglais
$ python3 touch.py -lang:fr -family:wiktionary -transcludes:"pron-rég" -purge


Доступные глобальные аргументы

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

Глобальные параметры
Параметр Описание Конфигурационная переменная
-dir:PATH Прочитать настройки бота из каталога, заданному переменной PATH, а не из каталога по умолчанию.  
-config:file The user config filename. Default is user-config.py. user-config.py
-lang:xx Установить язык Вики с которой вы хотите работать, перезаписывая конфигурацию из user-config.py. Вместо xx должен быть указан код языка (ru). mylang
-family:xyz Установите семейство Вики с которой вы хотите работать, например, Википедия, викисловарь, викисклад, викитрэвел, ... Переопределяет конфигурацию в user-config.py. family
-user:xyz Войдите в систему как пользователь 'xyz' вместо пользователя по умолчанию. usernames
-daemonize:xyz Немедленно возвращает управление терминалу и перенаправляет stdout и stderr в файл xyz (использовать только для ботов, которые не требуют ввода из stdin).  
-help Показать справку.  
-log Включить лог-файл, используя имя файла по умолчанию script_name-bot.log. Журналы будут храниться в подкаталоге logs. log
-log:xyz Включить лог-файл, используя 'xyz' в качестве имени файла. logfilename
-nolog Отключить лог (если он включен по умолчанию).  
-maxlag Устанавливает новый параметр - maxlag (число секунд). Отложить правки ботов в периоды лагов сервера базы данных. Значение по умолчанию устанавливается в config.py maxlag
-putthrottle:n
-pt:n
-put_throttle:n
Указать минимальное время (в секундах) которое бот будет ждать после сохранения страниц. put_throttle
-debug:item
-debug
Включить лог-файл и включить расширенные отладочные данные для компонента "item(элемент)" (для всех компонентов, если используется последующая форма). debug_log
-verbose
-v
Выводить больше отладочной информации в консоль. verbose_output
-cosmeticchanges
-cc
Переключает настройки cosmetic_changes в config.py или user-config.py в противоположные или отменяет их. Все остальные параметры и ограничения остаются без изменений. cosmetic_changes
-simulate Запрещается запись на сервер. Полезно для тестирования и отладки нового кода (если эта опция указана, не делается каких-либо реальных изменений, а только показывается, что изменилось бы). simulate
-<config var>:n Вы можете использовать все заданные числовые настройки переменных как параметр и изменить его из командной строки.