Есть ли способ использовать переменную "заголовок текущей страницы" внутри команды замены pywikibot? - PullRequest
0 голосов
/ 23 апреля 2019

Я бы хотел, чтобы мой pywikibot удалил

| name = whatever

из информационного блока Википедии, если имя совпадает с заголовком страницы с помощью функции замены.Есть ли простой способ сделать это?

Используемый код должен быть примерно таким:

$ python pwb.py replace -regex " *\| *name *\= "TITLEPAGE" *\n" ""

Но я не уверен, существует ли эта опция даже в pywikibot.

1 Ответ

0 голосов
/ 06 мая 2019

к сожалению, не существует прямого пути, подобного этому. Но вы определенно можете использовать его внутри кода, легко создав свой собственный скрипт replace.py. После этого вы можете использовать что-то вроде:

$ python pwb.py my_replace.py

Содержимое scripts / userscripts / my_replace.py может выглядеть так:

# -*- coding: utf-8  -*-

import pywikibot, re

site = pywikibot.Site()
page = pywikibot.Page(site, 'Page you want to edit')
new_text = re.sub(r' *\| *name *\= ' + re.escape(page.title()) + r' *\n', r'', text)
page.text = new_text
page.save('remove param with page title')

Или вы можете использовать генератор для генерации списка страниц, таких как:

# -*- coding: utf-8  -*-

import pywikibot, re
from pywikibot import pagegenerators

site = pywikibot.Site()
cat = pywikibot.Category(site,'Category:Pages with title in param')
gen = pagegenerators.CategorizedPageGenerator(cat)

for page in gen:
    new_text = re.sub(r' *\| *name *\= ' + re.escape(page.title()) + r' *\n', r'', text)
    page.text = new_text
    page.save('remove param with page title')

Подробнее см. https://www.mediawiki.org/wiki/Manual:Pywikibot/Create_your_own_script

...