Manual:Pywikibot/replace.py/pt-br
![]() | Wikimedia Git repository has this file: scripts/replace.py |
![]() |
Scripts de Pywikibot |
---|
|
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:
- 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).
- 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, ouuser-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:
- 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
.) - 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:
- 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.) - 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:
- 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:
- 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.
- O parâmetro correspondente pode ser qualquer um de
- 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.
- 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
- algumas "correções" predefinidas
- 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.
|
-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:
|
-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.
Parameter | Description | Config 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]
- A biblioteca padrão do Python »Operações de expressão regular
- - O depurador de expressões regulares do Python - para testar expressões regulares especificamente para python
- [1] - introdução e comparação de várias implementações de regex, incluindo python
- Conversor Unicode para HTML (útil para criar articles_list.txt)