Manual:Pywikibot/replace.py/pt-br

From MediaWiki.org
Jump to navigation Jump to search


Replace.py faz parte da estrutura do Pywikibot.

Este bot substitui o texto. Ele recuperará informações sobre quais páginas podem precisar de alterações de um despejo XML ou de um arquivo de texto ou apenas alterar uma única página. Para obter mais informações, use

$ python pwb.py replace -help

Se você possui o Windows, pode omitir "python".

Visão geral[edit]

Você pode usar esse script basicamente de duas maneiras:

  1. Você escreve todos os parâmetros na linha de comando, incluindo o texto a ser substituído e a substituição. Isso é útil para tarefas simples. Por exemplo, python pwb.py replace -ns:0 color colour -search:color procurará a palavra "cor" apenas nos artigos (ns:0), altera as ocorrências em minúsculas para "cor", solicita sempre que você confirme a substituição e usa o comentário de edição padrão. Tenha cuidado, porque há casos em que a cor não deve ser alterada para cor (por exemplo, no artigo Cascading Style Sheets); nunca execute essa substituição automaticamente, a menos que você tenha pelo menos 100% de certeza de que está sempre correta! Essa é quase a forma mais simples do comando (veja abaixo os parâmetros mínimos). -search:color é equivalente a escrever a palavra cor na barra de pesquisa e é uma maneira rápida de reunir artigos, mas não encontra cores.

    Se o texto antigo ou o novo contiverem espaços, use aspas! Tarefas repetidas podem ser armazenadas em um arquivo em lotes (Windows) ou shell script (Linux).

  2. Você armazena os parâmetros principais, incluindo texto antigo e novo, exceções e edita o comentário em um arquivo. Várias tarefas (chamadas de correções) podem ser armazenadas em um arquivo e usadas repetidamente. Esse arquivo pode ser fixes.py, que está incluído na sua distribuição pywikibot, mas está sujeito a alterações a cada atualização; portanto, você deve salvá-lo, ou user-fixes.py, projetado para uso pessoal, mas não é incluído no Pywiki e pode ser criado com generate_user_files.py. Este último tem uma sintaxe um pouco diferente, mas tem um exemplo. Isso é muito mais eficiente e flexível, mas precisa de alguma preparação. Esses dois métodos podem ser combinados; no entanto, alguns parâmetros armazenados na correção substituem o parâmetro correspondente fornecido na linha de comando.

Depois de escolher entre essas opções, você tem outra decisão:

  1. Você faz substituições de texto simples como a acima. Essa é uma boa maneira de alterar palavras, modelos, categorias, títulos ou nomes de seções, mas não é flexível. Por exemplo, o comando acima substituirá "cor", mas não cores, coloridas e cor em maiúsculas. (Se você está preocupado apenas com o caso, ainda pode digitar python pwb.py replace -ns:0 color colour Color Colour -search:color.)
  2. Você usa expressões regulares (geralmente mencionadas como regexes). Eles procuram padrões e os substituem por padrões. Existem alguns exemplos em fixes.py. Para idiomas aglutinantes e flexíveis, essa é a única maneira eficiente de corrigir as ortografia.

Sua terceira decisão será a seguinte:

  1. Você procura por páginas a serem modificadas no wiki ao vivo. Isso resultará em uma velocidade aceitável se você trabalhar com modelos, categorias ou o mecanismo de pesquisa, mas geralmente é muito lento para a iteração simples de páginas, especialmente em wikis de grande e médio porte. Então python pwb.py replace -start:!é a maneira de uso menos recomendada, pois desperdiça seu tempo e os recursos do servidor. (No entanto, às vezes é necessário e inevitável se o seu wiki não tiver despejos.)
  2. Você baixa um dump XML do seu wiki em https://dumps.wikimedia.org (geralmente xxwiki-latest-pages-articles.xml.bz2) e usa-o com -xml. Isso irá acelerar o seu bot e usar seu tempo, bem como o tempo do seu computador e do servidor, com mais eficiência. Essa é a maneira recomendada de procurar cores e cores juntas, porque o mecanismo de pesquisa infelizmente não lida com expressões regulares. A desvantagem desse método é que você não encontrará artigos nos quais o texto fornecido se encontra desde a composição do último despejo.
    O acesso direto aos dumps do seu wiki é algo como o download:huwiki/. Mude as duas primeiras letras para o seu código de idioma.
    Os despejos no link fornecido estão disponíveis apenas para os wikis da Wikimedia. Para outros wikis, entre em contato com o mantenedor desse wiki para saber se eles têm despejos.

E, por último mas não menos importante, você enfrenta mais uma decisão:

  1. Você procura por páginas e as modifica rapidamente. Isso resultará novamente em uma velocidade aceitável se você trabalhar com modelos, categorias ou o mecanismo de pesquisa, mas poderá ser muito lento se você apenas procurar uma regex no espaço para nome completo ou wiki.

Conjunto mínimo de parâmetros

Pelo menos esses dados devem ser fornecidos para o bot sempre:

  1. Onde e como procurar as páginas a serem editadas?
    O parâmetro correspondente pode ser qualquer um de -start, -file, -page, -search, -xml, -cat etc.; consulte a seção Fonte da tabela abaixo.
  2. O texto antigo a ser substituído e o novo a ser substituído.
    Pode ser um ou mais pares de cadeias ou o nome de uma correção.
  3. Não é obrigatório, mas geralmente vale a pena e é altamente recomendável que iniciantes limitem o trabalho ao namespace principal com -ns:0. Assim, você pode evitar alterar as contribuições dos usuários nas páginas de discussão ou corrigir o título de um artigo em uma página em que a discussão seja apenas sobre esse título. Parte visível dos modelos (mas não o código em si!) E as descrições dos arquivos também estão no escopo dos leitores. É melhor não modificar páginas de discussão, páginas de usuário e páginas de projeto (o espaço de nomes "Wikipedia") pela primeira vez, e ele precisa de cuidados especiais e consenso da comunidade ainda mais tarde. Não se surpreenda com reações iradas ou com o bloqueio de seu bot se você omitir o parâmetro namespace.

Arquivos[edit]

O bot usa três arquivos além da estrutura:

replace.py

o módulo principal

fixes.py

algumas "correções" predefinidas

user-fixes.py

um arquivo para adicionar suas próprias correções. O arquivo é criado quase vazio por generate_user_files.py

Arquivos que podem ser usados para entrada e/ou saída:

filename.txt

um arquivo com uma lista de artigos, se especificado com o parâmetro "-file"

filename.xml

um dump XML local se usado com o parâmetro "-xml"

replacelog

o log com um nome que pode ser especificado com o parâmetro "-log"

Parâmetros[edit]

Local[edit]

Você pode executar replace.py com os seguintes parâmetros (por exemplo, python pwb.py replace -file:articles_list.txt "errror" "error").

Fonte
-xml Recupere informações de um despejo XML local (pages_current, consulte https://dumps.wikimedia.org). O argumento também pode ser fornecido como "-xml: filename".
-xmlstart Use com -xml. Isso começará no título fornecido (eles geralmente estão na ordem da primeira edição). Se você sair com Ctrl+C, replace.py gravará na tela, onde continuar.
-file Trabalhe em todas as páginas fornecidas em um arquivo de texto local. Vai ler qualquer [[Wiki link]] e usar esses artigos. O argumento também pode ser fornecido como "-file: filename".
-cat Trabalhe em todas as páginas (não categorias) que estão em uma categoria específica. O argumento também pode ser dado como "-cat:categoryname".
-catr Como -cat, mas também inclui recursivamente páginas em subcategorias, subcategorias etc. da categoria especificada.
-subcats Trabalhe em todas as subcategorias de uma categoria específica. O argumento também pode ser dado como "-subcats: categoryname" ou como "-subcats: categoryname|fromtitle".
-subcatsr Como -subcats, mas também inclui subcategorias etc. da categoria especificada.
-transcludes Trabalhe em todas as páginas que transcluem um modelo específico. O argumento também pode ser fornecido como "-transcludes: referencetemplate", por exemplo "-transcludes: stub" significa a inclusão do modelo de stub.
-page Edite apenas uma página específica. O argumento também pode ser fornecido como "-page: pagetitle". Você pode atribuir esse parâmetro várias vezes para editar várias páginas.
-ref Trabalhe em todas as páginas que apontam para uma determinada página. O argumento também pode ser fornecido como "-ref: referencepagetitle".
-filelinks Trabalhe em todas as páginas que apontam para uma determinada imagem. O argumento também pode ser fornecido como "-filelinks: ImageName".
-links Trabalhe em todas as páginas vinculadas a partir de uma determinada página. O argumento também pode ser fornecido como "-links: bindingpagetitle".
-start Trabalhe em todas as páginas do wiki, começando em uma determinada página. Escolha "-start :!" para começar do início. Nota: É recomendável usar -xml em vez desta opção; isso se destina a casos em que não há despejo XML recente.
-prefixindex Trabalhe em páginas que começam com um prefixo comum.
-titleregex Trabalhe em páginas que tenham títulos correspondentes a expressão regular, por exemplo: -titleregex: '.*foo.*'
-search Trabalhe em páginas que contêm a sequência de pesquisa especificada, -search: "Cor"
Alvo
Replace parâmetros
-excepttitle:XYZ Pule páginas com títulos que contêm XYZ. Se o argumento -regex for fornecido, XYZ será considerado como uma expressão regular.
-excepttext:XYZ Ignore as páginas que contêm o texto XYZ. Se o argumento -regex for fornecido, XYZ será considerado como uma expressão regular.
-exceptinside:XYZ Ignore as ocorrências do texto a ser substituído que se encontra dentro de XYZ. Se o argumento -regex for fornecido, XYZ será considerado como uma expressão regular.
-exceptinsidetag:XYZ Ignore as ocorrências do texto a ser substituído que estão dentro de uma tag XYZ.
Os possíveis valores de XYZ incluem:
comment: entre '<!--' and '-->'
includeonly: entre '<includeonly>' and '</includeonly>'
math: entre '<math>' and '</math>'
noinclude: entre '<noinclude>' and '</noinclude>'
nowiki: entre '<nowiki>' and '</nowiki>' (as tags wiki são ignoradas dentro das tags nowiki)
pre: entre '<pre>' and '</pre>' (texto pré-formatado)
source: entre '<source ' and '</source>' (referências embutidas)
ref: entre '<ref[ >]' and '</ref>'
timeline: entre '<timeline>' and '</timeline>'
startspace: linhas que começam com um espaço
table: dentro de tabela
template: entre '{{' and '}}' (em cascata até o nível 3, mas não mais profundo)
hyperlink:
gallery: entre '<gallery' and '</gallery>'
link: nas interwikis, mas também na interwiki, categorias e imagens
interwiki: dentro de interwikis
-summary:XYZ Defina o texto da mensagem de resumo, ignorando os resumos de edição padrão.
-fix:XYZ Execute uma das tarefas de substituição predefinidas, fornecidas no dicionário 'correções' definidas dentro do arquivo fixes.py ou user-fixes.py. O argumento -regex e as substituições fornecidas serão ignoradas se você usar -fix. As correções predefinidas atualmente disponíveis são:
  • HTML - converter tags HTML em sintaxe wiki e corrigir XHTML
  • isbn - corrigir ISBNs mal formatados
  • syntax - tente corrigir a marcação incorreta do wiki (NÃO execute automaticamente!)
  • syntax-safe - como sintaxe, mas menos arriscado, para que você possa executar isso no modo automático.
  • case-de - corrigir erros de maiúsculas e minúsculas em alemão.
  • grammar-de - corrigir gramática e tipografia em alemão.
  • vonbis - Substitua traço/recuo por "para" em alemão
  • music - Links para esclarecimentos de termos em alemão
  • datum - formatos de data específicos em alemão
  • correct-ar - Correções para a Wikipedia em árabe e qualquer wiki em árabe
  • yu-tld - o domínio de nível superior do yu será desativado em breve
  • fckeditor- Tente converter tags HTML do FCKeditor em wikisyntax.
-pairsfile As linhas dos nomes de arquivo fornecidos serão lidas como se tivessem sido adicionadas à linha de comando naquele momento. I.e. um arquivo contendo as linhas "a" e "b", usado como python pwb.py replace -page: X -pairsfile: file cd substituirá 'a' por 'b' e 'c' por ' d '. No entanto, o uso de python pwb.py replace -page: X c -pairsfile: file d também funcionará e substituirá 'c' por 'a' e 'b' por 'd'.
-namespace:n

abbrev. -ns:n

Número de espaço para nome a processar. O parâmetro pode ser usado várias vezes. Ele funciona em combinação com todos os outros parâmetros, exceto o parâmetro -start. (Se você deseja alterar todas as páginas em um espaço para nome específico, adicione o prefixo do espaço para nome; por exemplo, -start:User:!.)
unnamed O primeiro argumento sem nome é o texto antigo, o segundo argumento é o novo texto. Se o argumento -regex for fornecido, o primeiro argumento será considerado uma expressão regular e o segundo argumento poderá conter expressões como \1 ou \g<name>.
Opções
-always Não solicite cada substituição.
-recursive Recomende a substituição até possível.
-nocase Expressões de pesquisa sem distinção entre maiúsculas e minúsculas (incluindo regex).
-allowoverlap Quando as ocorrências do padrão se sobrepuserem, substitua todas elas. 'Aviso!' Não use essa opção se você não souber o que está fazendo, pois pode facilmente levar a loops infinitos.
-regex Faça substituições usando expressões regulares. Se esse argumento não for apresentado, o bot fará substituições simples de texto.
-dotall um ponto (.) também corresponde a quebras de linha ao usar regex.
-multiline '^' e '$' agora correspondem ao início e ao fim de cada linha.

Global

These options will override the configuration in user-config.py settings.

Global options
ParameterDescriptionConfig variable
-dir:PATH Read the bot's configuration data from directory given by PATH, instead of from the default directory.  
-lang:xx Set the language of the wiki you want to work on, overriding the configuration in user-config.py. xx should be the language code. mylang
-family:xyz Set the family of the wiki you want to work on, e.g. wikipedia, wiktionary, wikitravel, ... This will override the configuration in user-config.py. family
-user:xyz Log in as user 'xyz' instead of the default username. usernames
-daemonize:xyz Immediately return control to the terminal and redirect stdout and stderr to file xyz. (only use for bots that require no input from stdin).  
-help Show the help text.  
-log Enable the log file, using the default filename 'script_name-bot.log' Logs will be stored in the logs subdirectory. log
-log:xyz Enable the log file, using 'xyz' as the filename. logfilename
-nolog Disable the log file (if it is enabled by default).  
-maxlag Sets a new maxlag parameter to a number of seconds. Defer bot edits during periods of database server lag. Default is set by config.py maxlag
-putthrottle:n
-pt:n
-put_throttle:n
Set the minimum time (in seconds) the bot will wait between saving pages. put_throttle
-debug:item
-debug
Enable the log file and include extensive debugging data for component "item" (for all components if the second form is used). debug_log
-verbose
-v
Have the bot provide additional console output that may be useful in debugging. verbose_output
-cosmeticchanges
-cc
Toggles the cosmetic_changes setting made in config.py or user-config.py to its inverse and overrules it. All other settings and restrictions are untouched. cosmetic_changes
-simulate Disables writing to the server. Useful for testing and debugging of new code (if given, doesn't do any real changes, but only shows what would have been changed). simulate
-<config var>:n You may use all given numeric config variables as option and modify it with command line.  

Exemplos[edit]

Se você deseja alterar modelos da sintaxe antiga, por exemplo, {{msg: Stub}}, para o nova sintaxe, por exemplo {{Stub}}, baixe um arquivo de despejo XML (tabela de páginas) em https://dumps.wikimedia.org, use este comando:

$ python pwb.py replace -xml -regex "{{msg:(.*?)}}" "{{\1}}"

Você pode combinar padrões em mais de uma linha:

$ python pwb.py replace -regex '(?s)^(.*)$' "\1
    > ==new message==
    > blah
    > "

Se você tem um dump chamado foobar.xml e deseja corrigir erros de digitação, por exemplo, Erro -> Erro, use este:

$ python pwb.py replace -xml:foobar.xml "Errror" "Error"

Se você tem uma página chamada 'John Doe' e deseja converter tags HTML em wiki sintaxe, use:

$ python pwb.py replace -page:John_Doe -fix:HTML

Se você executar o bot sem argumentos, você será solicitado várias vezes a substituir:

$ python pwb.py replace -file:blah.txt

O script solicita ao usuário antes de modificar um artigo. É recomendável verificar novamente o resultado para garantir que o bot não tenha introduzido erros (especialmente com palavras com erros ortográficos). É possível especificar um conjunto de artigos com um arquivo de texto externo contendo os links do Wiki :

  [[avião]]
  [[veículo]]
  [[trem]]
  [[carro]]

O bot é chamado usando algo como:

$ python pwb.py replace [global-arguments] -file:articles_list.txt "errror" "error"

Em vez de especificar expressões regulares na linha de comando, é preferível adicioná-las ao user-fixes.py

$ python pwb.py replace -file:articles_list.txt -fix:example2

Exemplo: Substituindo vários parágrafos[edit]

O texto original da página Meta:Sandbox é:

 Esta página é para todos os testes.

Welcome to the sandbox!

Se você deseja alternar a instrução (a segunda vai antes da primeira), digite a seguinte sintaxe:

$ python pwb.py replace -page:Meta:Sandbox -regex "This page is for any tests.\r\n\r\nWelcome to the sandbox!" "Welcome to the sandbox!\n\nThis page is for any tests."

Para adicionar uma nova linha, usamos \n.


Exemplo: muito desdobramento em um artigo[edit]

Em este artigo realmente havia muitas títulos de episódios em negrito em várias tabelas que deveriam ser desdobradas. É o caso em que você pode usar um bot para um único artigo e isso mostra o papel de alguns parâmetros interessantes.

O que você está procurando?
  • Textos entre pares de ''',
  • que estão dentro de uma tabela (não queremos substituir no restante do artigo!),
  • mas não contém um caractere | (apenas por segurança, para garantir que ainda estamos dentro de uma célula - talvez possamos omitir isso),
  • 'prestando atenção' em ter muitas ocorrências dentro de uma tabela (recursão),
  • e que as tabelas são agrupadas em várias linhas (dotall),
  • e que cada tag de abertura de tabela deve corresponder à sua própria tag de fechamento e todo começo de texto em negrito deve corresponder ao seu próprio fechamento ''' (é por isso que usamos ? s para tornar as expressões não agradáveis).
Com o que substituímos?

Com as partes de texto antes, entre e depois das negritas - elas são colocadas entre parênteses para poder se referir a elas com seus números de grupo, respectivamente.

O comando

(Ele está incluído aqui para facilitar a leitura, mas você deve escrever para uma linha, é claro.)

$ python pwb.py replace -page -regex -recursive -dotall -summary: Vastagtalanítás "(\{\|. *?)'''([^\|] *?)'''(.*?\|\})" "\1\2\3"

O bot irá pedir o título, já que não o demos. O uso de aspas duplas ajusta-se à linha de comando e oferece a liberdade de usar apóstrofos na expressão.

Resultado

Aqui você está. (Não clique se o computador não estiver suficientemente forte!)

Uso avançado de correções: funções próprias[edit]

Ser um assistente por meio do replace.py não é um sonho, se você estiver familiarizado com o básico da programação Python. textlib.py (outro módulo da estrutura pywikibot) possui uma capacidade maravilhosa, mas não amplamente utilizada. Se você escrever uma função em vez de um texto constante ou uma expressão regular no texto de substituição ou nas exceções, ele a reconhecerá e executará. Com um pouco de programação, você pode aproveitar esse recurso e usar o replace.py em um nível superior. Desnecessário dizer que o uso de uma função própria oferece muito mais flexibilidade do que uma simples expressão regular. Você também pode usar uma função para gerar as expressões de substituição para mantê-las claramente organizadas. Para aprender como usar suas próprias funções em fixes.py e user-fixes.py e para que serve, consulte hu:Szerkesztő:Bináris/Fixes and functions HOWTO.

Ligações externas[edit]