Руководство:Pywikibot/touch.py
Wikimedia Git repository has this file: scripts/touch.py |
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 |
Работать по страницам с наиболее свежими правками. Если задано в виде , работать по x последним страницам. Если задано в виде , работать по страницам с отступом offset в минутах продолжительностью duration минут.
Примеры: |
-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 Чтобы исключить пространство имён, перед ним надо указывать -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 |
Утверждение, которое должна содержать страница, иначе элемент не будет возвращаться. Формат — свойство=значение,квалификатор=значение. Можно указывать несколько (или ни одного) квалификаторов, разделённых запятыми.
Примеры: -onlyif:expression . |
-onlyifnot |
Утверждение, которое не должна содержать страница, иначе элемент не будет возвращаться. См. примеры и использование выше в -onlyif . |
-ql |
Фильтровать страницы по качеству. Применимо только при модели содержимого proofread-page , иначе не оказывает никакого эффекта. Допустимы значения от 0 до 4. Множественные значения разделяются запятыми. |
-subpage |
-subpage:n фильтрует страницы с глубиной n, т.е. глубина 0 отфильтровывает все подстраницы, а глубина 1 — все подстраницы подстраниц. |
-titleregex |
Регулярное выражение, которому должно соответствовать название страницы, иначе она не будет возвращена. Могут быть указаны множественные -titleregex:regexpr, страница будет возвращаться, если соответствует хотя бы одному из них. Будут использоваться регистронезависимые регулярные выражения, точка соответствует любому символу. |
-titleregexnot |
Как -titleregex , но возвращается страницу, если не выполняется соответствие регулярному выражению. |
Кроме того поддерживается параметр purge, который заставляет использовать очистку кэша вместо нулевой правки.
Скрипт также понимает некоторые дополнительные аргументы командной строки:
Parameter | Description |
---|---|
-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 |
Вы можете использовать все заданные числовые настройки переменных как параметр и изменить его из командной строки. |