Tutorial de pywikipediabot – IV

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

 

 


Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *