Manual:Pywikibot/PAWS

From mediawiki.org
This page is a translated version of the page Manual:Pywikibot/PAWS and the translation is 86% complete.
Outdated translations are marked like this.
Veja Wikitech:PAWS para mais detalhes.

Este documento fornece uma rápida visão geral interativa de Pywikibot usando um notebook hospedado no ambiente do Wikimedia labs usando PAWS (PAWS: Um Web Shell).

Nota O PAWS Terminal suporta copiar e colar apenas em Navegadores baseados em Chromium (Google Chrome, Opera e Safari estão bem). Se você usar um navegador diferente, poderá tentar apenas com o menu de contexto (clique com o botão direito do mouse) ou precisará digitar manualmente os comandos mencionados neste guia. Você também pode criar um arquivo bash com o conteúdo do comando e chamar o terminal com bash file.sh.
Atenção Atenção: Todos os notebooks e terminais no PAWS estão sujeitos à rescisão sem aviso prévio. Você é incentivado a executar sua tarefa em outros locais (como Toolforge) se sua tarefa durar mais de horas.

Crie uma conta Wikimedia

Para seguir este guia, você só precisa de uma conta na Wikipedia / Wikimedia. Use Special:CreateAccount para criar uma.

Depois de criar uma conta, visite https://test.wikipedia.org/ e verifique se seu nome de usuário aparece no canto superior direito (isso funciona em torno de tarefa T120327).

Se você é um novo usuário da Wikimedia, faça login com sua conta na meta.Wikimedia, Wikipédia, Wikidata e Commons. E em cada um deles leia e exclua todas as mensagens pendentes que você tem (na parte superior).

Entre em um notebook

Para iniciar um notebook hospedado, vá para https://hub-paws.wmcloud.org/hub

Clique em "Entrar com o MediaWiki" e, em seguida, clique em "Permitir" quando for solicitado a aprovar "Usar o OAuth para autenticação". Na primeira vez que você acessa o PAWS, você precisa criar um servidor. Clique no botão verde "Start my Server". É normal aguardar alguns minutos para a inicialização do novo servidor.

Uma vez concluído, você será redirecionado para um URL como https://hub-paws.wmcloud.org/user/<username>/lab

Iniciar um terminal

Para iniciar um novo terminal interativo,

  1. Vá para a sua [$paws PAWS home]
  2. clique em 'New' no lado direito e
  3. selecione 'Terminal'.
  1. click: File > New > Terminal

Isso abrirá uma nova janela com a URL $paws, com um prompt '$' do Linux.

Este terminal não é um emulador. É um verdadeiro bash shell, como parte de uma instalação real do Linux em um container docker, para que você possa usar qualquer comando bash e use todos os comandos disponíveis no Linux que foram instalados.

Para ver alguns dos comandos disponíveis, use ls /bin/.

$ ls /bin/
bash         cat            domainname  journalctl  mkdir          pwd         stty                            tar           zcmp
unzip2       chacl          echo        kill        mknod          rbash       su                              tempfile      zdiff
../..
$ ls /usr/bin/
2to3-3.4                 dvipdf                     lcf                         printf               systemd-path                         
X11                      dwp                        ld                          prlimit              systemd-run
../..

To see them all, press TAB twice.


Faça login na wiki

Isso estabelecerá sua conta no servidor e permitirá que você efetue login na linha de comando. O comando a seguir deve confirmar que você pode efetuar login no testwiki. Ele usa o OAuth, portanto, não é necessário digitar uma senha.

$ pwb.py login
Logging in to wikipedia:test as <username>
Logged in on wikipedia:test as <username>.

Você pode conectar o pywikibot a um wiki diferente criando um arquivo chamado user-config.py em seu $HOME directory (/home/paws) e adicionando variáveis de mylang e family:

mylang = 'test'
family = 'wikipedia'

You can type vim user-config.py in the terminal, then I to insert text, add the text, then Esc to exist insert mode, then :wq and Enter to finishing editing.


Crie uma página

Para criar uma página, digite o seguinte comando no terminal, substituindo '<username>' pelo seu nome de usuário e pressionando 'Y' quando solicitado a aceitar suas alterações:

$ pwb.py add_text -up -talk -page:"User talk:<username>" -text:"Hello. ~~~~"
Loading User talk:<username>...

>>> User talk:<username> <<<
@@ -0,0 +1 @@
+ Hello. ~~~~

Do you want to accept these changes? ([Y]es, [N]o, [a]ll, open in [b]rowser): Y
Page [[User talk:<username>]] saved

Você editou o wiki. Veja suas alterações abrindo https://test.wikipedia.org/wiki/User_talk:<username> no seu navegador.

Você pode ler mais sobre cada um desses scripts de linha de comando com a opção de linha de comando '-help'.

$ pwb.py add_text -help
...

Buscar uma página

A busca de muitas páginas é obtida com o comando "listpages".

Para obter o conteúdo da página que você criou na seção anterior, digite o seguinte comando:

$ pwb.py listpages -page:"User talk:<username>" -save
   1 <username>
Saving User talk:<username> to /home/paws/User_talk_<username>
1 page(s) found

Agora, se você for para a sua [$pawshome PAWS files list], a página salva deverá estar presente.

Um exemplo de script real

Quando um site usado na Wikipedia altera seu URL, os links na Wikipedia ficam desatualizados e também são possíveis links mortos se o site não redirecionar dos URLs antigos para os novos URLs. Por exemplo, a Encyclopedia Britannica (EB) mudou seus links, como mover páginas de http://www.britannica.com/EBchecked/media/ para http://www.britannica.com/topic/[topic name]/images-videos/*. Você pode encontrar a lista de usos do URL antigo na Wikipedia em inglês por w:Special:LinkSearch/http://www.britannica.com/EBchecked/media. A atualização manual de todos esses links consumirá muito tempo. Felizmente, a EB manteve redirecionamentos de seus URLs antigos para os novos URLs, portanto, isso não precisa ser corrigido imediatamente.

Para um exemplo mais simples, atualmente a Wikipedia em inglês contém links para http://britannica.com/EBchecked/ em vez de http://www.britannica.com/EBchecked/; ou seja, um "www". O subdomínio está ausente no URL.

Atualmente, existem 14 casos na Wikipedia em inglês: w:Special:LinkSearch/http://britannica.com/EBchecked/

A Wikipedia em outro idioma também tem esse problema. por exemplo. há um caso na Wikipedia em alemão: w:de:Spezial:Weblinksuche/http://britannica.com/EBchecked/

Para corrigir esses links, podemos usar o script Pywikibot replace.py . Nesta demonstração, usaremos o argumento '-simulate' para evitar a escrita no wiki, pois existem regras estritas sobre a Wikipedia em inglês edição automática.

Primeiro vamos listar todas as páginas que apontam para $<nowiki.

$ pwb.py listpages -lang:en -weblink:"britannica.com/EBchecked/"
   1 Bhatner fort
   2 Mohammad Ishaq Khan
   3 Fringe theories/Noticeboard/Archive 7
   4 El Riego phase
   5 Catalonia/Archive 4
   6 Stephen I of Hungary
   7 Stephen I of Hungary/Archive 1
   8 Väinö Tanner
   9 Tokaji
  10 Transylvania/Archive5
  11 Hungarians in Romania
  12 Transylvania
  13 Uttarakhand
  14 Françoise Giroud
14 page(s) found

Agora, verificamos se essas páginas realmente possuem o URL literal na página; ou seja, eles não estão usando um modelo.

$ pwb.py listpages -lang:en -weblink:"britannica.com/EBchecked/" -grep:"britannica.com\/EBchecked"
   1 Bhatner fort
   2 Mohammad Ishaq Khan
   3 Fringe theories/Noticeboard/Archive 7
   4 El Riego phase
   5 Catalonia/Archive 4
   6 Stephen I of Hungary
   7 Stephen I of Hungary/Archive 1
   8 Väinö Tanner
   9 Tokaji
  10 Transylvania/Archive5
  11 Hungarians in Romania
  12 Transylvania
  13 Uttarakhand
  14 Françoise Giroud
14 page(s) found

Agora use substituir para adicionar o "www" ausente.

$ pwb.py replace -lang:en -simulate -weblink:"britannica.com/EBchecked/" -grep:"britannica.com\/EBchecked" "http://britannica.com/EBchecked/" "http://www.britannica.com/EBchecked/"
The summary message for the command line replacements will be something like: Bot: Automated text replacement  (-http://britannica.com/EBchecked/ +http://www.britannica.com/EBchecked/)
Press Enter to use this automatic message, or enter a description of the
changes your bot will make: 
Logging in to wikipedia:en as <username>
Retrieving 14 pages from wikipedia:en.
Retrieving 14 pages from wikipedia:en.


>>> Stephen I of Hungary <<<
@@ -47 +47 @@
- Stephen's birth date is uncertain because it was not recorded in contemporaneous documents.{{sfn|Györffy|1994|p=64}} Hungarian and Polish chronicles written centuries later give three different years: 967, 969 and 975.{{sfn|Kristó|2001|p=15}} The unanimous testimony of his three late 11th-century or early 12th-century [[hagiographies]] and other Hungarian sources, which state that Stephen was "still an adolescent" in 997,<ref>''Hartvic, Life of King Stephen of Hungary'' (ch. 5), p. 381.</ref> substantiate the reliability of the later year (975).{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}} Stephen's ''[[Life of Saint Stephen, King of Hungary (Vita minor)|Lesser Legend]]'' adds that he was born in [[Esztergom]],{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}}<ref name=Britannica>{{cite encyclopedia|title=Stephen I|url=http://britannica.com/EBchecked/topic/565415/Stephen-I|encyclopedia=[[Encyclopædia Britannica]]|publisher=Encyclopædia Britannica, Inc.|year=2008|accessdate=2008-07-29}}</ref> which implies that he was born after 972 because his father, [[Géza, Grand Prince of the Hungarians]], chose Esztergom as royal residence around that year.{{sfn|Györffy|1994|p=64}} Géza promoted the spread of Christianity among his subjects by force, but never ceased worshipping pagan gods.{{sfn|Kontler|1999|p=51}}{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}} Both his son's ''[[Life of Saint Stephen, King of Hungary (Vita maior)|Greater Legend]]'' and the nearly contemporaneous [[Thietmar of Merseburg]] described Géza as a cruel monarch, suggesting that he was a despot who mercilessly consolidated his authority over the rebellious Hungarian lords.{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}}{{sfn|Bakay|1999|p=547}}
+ Stephen's birth date is uncertain because it was not recorded in contemporaneous documents.{{sfn|Györffy|1994|p=64}} Hungarian and Polish chronicles written centuries later give three different years: 967, 969 and 975.{{sfn|Kristó|2001|p=15}} The unanimous testimony of his three late 11th-century or early 12th-century [[hagiographies]] and other Hungarian sources, which state that Stephen was "still an adolescent" in 997,<ref>''Hartvic, Life of King Stephen of Hungary'' (ch. 5), p. 381.</ref> substantiate the reliability of the later year (975).{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}} Stephen's ''[[Life of Saint Stephen, King of Hungary (Vita minor)|Lesser Legend]]'' adds that he was born in [[Esztergom]],{{sfn|Györffy|1994|p=64}}{{sfn|Kristó|2001|p=15}}<ref name=Britannica>{{cite encyclopedia|title=Stephen I|url=http://www.britannica.com/EBchecked/topic/565415/Stephen-I|encyclopedia=[[Encyclopædia Britannica]]|publisher=Encyclopædia Britannica, Inc.|year=2008|accessdate=2008-07-29}}</ref> which implies that he was born after 972 because his father, [[Géza, Grand Prince of the Hungarians]], chose Esztergom as royal residence around that year.{{sfn|Györffy|1994|p=64}} Géza promoted the spread of Christianity among his subjects by force, but never ceased worshipping pagan gods.{{sfn|Kontler|1999|p=51}}{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}} Both his son's ''[[Life of Saint Stephen, King of Hungary (Vita maior)|Greater Legend]]'' and the nearly contemporaneous [[Thietmar of Merseburg]] described Géza as a cruel monarch, suggesting that he was a despot who mercilessly consolidated his authority over the rebellious Hungarian lords.{{sfn|Berend|Laszlovszky|Szakács|2007|p=331}}{{sfn|Bakay|1999|p=547}}

Do you want to accept these changes? ([y]es, [N]o, [e]dit, open in [b]rowser, [a]ll, [q]uit): N

...

No PAWS e em qualquer terminal que suporte cores, a diferença de alterações mostrará o "www." adicionado na cor verde do texto, facilitando a localização das alterações propostas.

Dentro do Pywikibot

Atenção Atenção: Não escreva senhas nos arquivos do servidor, os arquivos são públicos!

Em seguida, usaremos a sessão do PAWS Python.

  1. Vá para a sua [$paws PAWS home],
  2. clique em 'Novo' no lado direito e
  3. selecione 'Python 3'.

Isso abrirá uma nova janela.

Na caixa de texto, digite o seguinte e, no menu Cell, selecione 'Run' (ou pressione Shift+Enter para executar).

import pywikibot

Uma nova caixa de texto será exibida abaixo. Execute o seguinte para criar um objeto APISite conectado a https://test.wikipedia.org/:

site = pywikibot.Site('test', 'wikipedia')

Descreva o "site" inserindo-o na nova caixa de texto e selecionando "Run".

site

Deve mostrar

 Out[3]: APISite("test", "wikipedia")

Crie um objeto de página:

page = pywikibot.Page(site, 'test')

Verifique se existe executando:

page.exists()

Deve gerar

 VERBOSE:pywiki:Found 1 wikipedia:test processes running, including this one.
 Out[5]: True

Mostre o texto na página:

page.text

Altere o texto da página no objeto:

page.text = 'Hello world'

Salve a página no wiki:

page.save()

A resposta deve ser:

Page [[Test]] saved
INFO:pywiki:Page [[Test]] saved

O notebook interativo Python 3 permite que muitas linhas sejam executadas juntas. O acima pode ser colocado em uma caixa de texto e Executar

import pywikibot

site = pywikibot.Site('test', 'wikipedia')
page = pywikibot.Page(site, 'test')

page.text = 'Hello world!'
page.save()

O log da sua sessão interativa do Python pode ser salvo ou baixado para referência futura.

Acessando a documentação online no PAWS

A documentação do Pywikibot pode ser encontrada em https://doc.wikimedia.org/pywikibot/. Ele é originário principalmente de docstrings, que pode ser carregado no notebook interativo do Python 3 usando a função interna do Python help().

Por exemplo, para examinar os argumentos do método save acima, execute:

help(page.save)

ou

help(pywikibot.Page.save)

Editando scripts Pywikibot

A biblioteca e os scripts do Pywikibot estão localizados em /srv/paws e são somente leitura. A biblioteca Pywikibot instalada não pode ser modificada no PAWS.

Os scripts podem ser modificados após copiá-los para a sua casa no PAWS.

Por exemplo, para executar um "checkimages.py" modificado:

  1. No terminal, digite cp /srv/paws/pwb/scripts/checkimages.py ~
  1. Em um navegador, vá para a sua [$paws PAWS home] e clique no arquivo checkimages.py.
  1. No navegador, você pode editar o arquivo. Edite o código -- por exemplo, logo após o código start = time.time() na linha 1775, adicione uma nova linha 1776 que imprimirá seu nome: print("MYNAME's version.")
  2. Na interface de edição, use o menu Arquivo e clique em Salvar para salvar suas modificações.
  3. No terminal, digite pwb.py ~/checkimages.py -simulate -limit:10 (If no '-limit:x' defined, the program would run until all images checked, it may take long time.)

Veja também

  • [$1 PAWS cheatsheet] por um usuário (por exemplo, sobre acesso à API e ao banco de dados)


Se você precisar de mais ajuda na configuração do seu Pywikibot, visite o canal #pywikibot IRC connect ou pywikibot@ lista de discussão.