No wikivoyage.org houve necessidade de mover uma enorme quantidade de páginas que estavam no formato "JAMGuides:" para "Wikivoyage:", não deixando para trás redirecionamentos, algo que se revelou extremamente simples. O pormenor foi a flag temporária de administrador que o bot recebeu, para poder não deixar redirecionamentos, pois isso é basicamente uma eliminação automática dos mesmos. Como o projecto tem ainda poucas páginas, e era uma operação básica, a listagem das páginas foi obtida pela lista de páginas totais no domínio principal, caso contrário teria de ser usada uma outra opção, e, além do mais, a opção mais lógica, que é a busca por páginas começadas por uma determinada string não estava a funcionar correctamente, portanto seguiu-se esta via. O script em sí é básico, e creio, facilmente entendível:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wikipedia as pywikibot
import pagegenerators
def main():
# Definir o site, e obter a listagem de todas as páginas do domínio principal.
site = pywikibot.getSite("pt","wikivoyage")
gen = pagegenerators.AllpagesPageGenerator(site=site,includeredirects=False)
for i in gen:
# Aqui filtramos os títulos que começam por "JAMGuides", separando primeiro
# o título tendo por base o ":", e, caso tenha o ":", verificar se antes da ocorrência
# o texto é "JAMGuides".
if i.title().split(":")[0] == u'JAMGuides':
# Criação do novo título, a segunda parte é igual, logo compõem-se o novo título fácilmente
ntitle = u"Wikivoyage:%s" % i.title().split(":")[1]
print u"old title: ", i.title(), u" |---> new title: ", ntitle, u" |--> afluentes: "
try:
# E por fim move-se a página para o novo título.
i.move(ntitle, leaveRedirect=False, reason=u"[[Wikivoyage:BOT|BOT]]: A mover páginas para título correcto.")
except:
print u"error"
else:
pass
if __name__ == "__main__":
try:
main()
finally:
pywikibot.stopme()
https://github.com/alchimista/pywikipedia-tutorial