Manual:Pywikibot/PAWS
- 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 o web-shell PAWS).
bash file.sh
.
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 (usaremos o terminal interativo)
Clique em "Entrar com o MediaWiki" ("Sign in with MediaWiki") e, em seguida, clique em "Permitir" quando for solicitado para permitir o uso do OAuth para fazer a Autenticação com login único da Wikimedia. 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 o terminal
Para iniciar o terminal interativo,
- Vá para a sua [$paws PAWS inicial]
- clique em 'New' no lado direito e
- selecione 'Terminal'.
- click: File > New > Terminal
Isso abrirá uma nova janela com a URL $paws e com o prompt '$' do Linux.
Este terminal é um "bash shell" verdadeiro (não é emulador), como parte de uma instalação real do Linux em um 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
...
Pesquise 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.
Exemplo 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 http://britannica.com/EBchecked/:
$ 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
Em seguida, usaremos a sessão do PAWS Python.
- Vá para a sua [$paws PAWS home],
- clique em 'Novo' no lado direito e
- 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 wmdoc: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:
- No terminal, digite
cp /srv/paws/pwb/scripts/checkimages.py ~
- Em um navegador, vá para a sua [$paws PAWS home] e clique no arquivo
checkimages.py
.
- 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.")
- Na interface de edição, use o menu Arquivo e clique em Salvar para salvar suas modificações.
- 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
- wikitech:PAWS/PAWS and Pywikibot
- Using Pywikibot with PAWS tutorial - A tutorial that helps users get started with using Pywikibot and PAWS
- Example notebooks using Pywikibot - A list of notebooks hosted on PAWS that use Pywikibot
- [$1 PAWS cheatsheet] por um usuário (por exemplo, sobre acesso à API e ao banco de dados)
- Source code on GitHub
- Small wiki toolkits workshop about running basic Pywikibot scripts
- Self-study materials based on the small wiki toolkits workshop
- Workshop handbook based on the small wiki toolkits workshop
- Se você precisar de mais ajuda na configuração do seu Pywikibot, visite o canal #pywikibot IRC connect ou pywikibot@ lista de discussão.