Jump to content

Podręcznik:Pywikibot/PAWS

From mediawiki.org
This page is a translated version of the page Manual:Pywikibot/PAWS and the translation is 100% complete.
Po więcej szczegółów zobacz Wikitech:PAWS.

Ten dokument stanowi krótki interaktywny przegląd Pywikibot przy użyciu notatnika hostowanego w środowisku Wikimedia Cloud Services przy użyciu PAWS (PAWS: A Web Shell).

Terminal PAWS obsługuje kopiowanie i wklejanie tylko w Chromium-based browsers only. (Google Chrome, Opera, Safari and new Microsoft Edge są w porządku.) Jeśli używasz innej przeglądarki, możesz spróbować jedynie przy użyciu menu kontekstowego (prawy przycisk myszy) albo będziesz zmuszony do ręcznego wpisywania poleceń wymienionych w tym przewodniku. Możesz także utworzyć plik bash z poleceniami i z poziomu terminala wywołać go za pomocą bash file.sh.
Uwaga Uwaga: Wszystkie notatniki i terminale w PAWS są zamykane bez powiadomienia. W przypadku, gdy Twoje zadanie trwa dłużej niż godziny, sugerowane jest uruchomienie zadania w innych miejscach (takich jak Toolforge).

Załóż konto na Wikimedi

Do skorzystania z tej instrukcji, potrzebujesz jedynie konta w Wikipedii/Wikimedii. Użyj Special:CreateAccount, aby je utworzyć.

Po utworzeniu konta, odwiedź https://test.wikipedia.org/ i sprawdź, czy Twoja nazwa użytkownika pojawia się w prawym górnym rogu (działa z zadanie T120327).

Jeśli jesteś nowym użytkownikiem Wikimedia, zaloguj się przy użyciu konta z Meta-Wiki, Wikipedii, Wikidata, Commons. I w każdym z nich przeczytaj i usuń wszystkie oczekujące wiadomości, jakie masz (na górze).

Zaloguj się do notatnika

W celu uruchomienia hostowanego notatnika przejdź do https://hub-paws.wmcloud.org/hub

Kliknij „Zaloguj się za pomocą MediaWiki”, a gdy pojawi sie okno dialogowe „Użyj OAuth do uwierzytelniania” - „Zezwalaj”. Przy swoim pierwszym dostępie do PAWS musisz utworzyć serwer. Kliknij zielony button „Uruchom mój serwer”. Kilka minut oczekiwania na start nowego serwera jest rzeczą normalną.

Po ukończeniu zostaniesz przekierowany na adres URL, taki jak https://hub-paws.wmcloud.org/user/<username>/lab

Uruchom terminal

Aby uruchomić nowy interaktywny terminal,

# Idź do PAWS home
  1. Kliknij: Plik > Nowy > Terminal

Spowoduje to otwarcie nowego okna ze znakiem zachęty '$' systemu Linux.

Ten terminal nie jest emulatorem. Jest to prawdziwa powłoka systemowa UNIX, jako część prawdziwej instalacji Linuksa znajdująca się na kontener Docker, więc możesz użyć dowolnego polecenia bash oraz dowolnych zainstalowanych poleceń dostępnych w systemie Linux.

Aby zobaczyć niektóre z dostępnych poleceń, użyj 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.


Logowanie do wiki

Spowoduje to utworzenie Twojego konta na serwerze i umożliwi zalogowanie się z poziomu wiersza poleceń. Następujące polecenie powinno potwierdzić, że możesz zalogować się do testwiki. Korzysta z protokołu OAuth, więc nie ma potrzeby podawania hasła.

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

Możesz połączyć pywikibota z inną wiki, tworząc plik o nazwie user-config.py w swoim katalogu głównym $HOME(/home/paws)(/home/paws) i dodając zmienne mylang i 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.


Utwórz stronę

Aby utworzyć stronę, wprowadź w terminalu następujące polecenie, zastępując '<username>' swoją nazwą użytkownika i naciskając 'Y', gdy pojawi się monit o zaakceptowanie zmian:

$ 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

Dokonałeś(-aś) edycji wiki. Zobacz swoje zmiany, otwierając https://test.wikipedia.org/wiki/User_talk:<username> w swojej przeglądarce internetowej.

O każdym z tych skryptów wiersza poleceń dowiesz się więcej dzięki opcji wiersza poleceń „-help”.

$ pwb.py add_text -help
...

Fetchowanie strony

Fetchowanie wielu stron możliwe jest poprzez użycie polecenia "listpages".

Aby uzyskać zawartość strony utworzonej w poprzedniej sekcji, wpisz następujące polecenie:

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

Teraz, jeśli uruchomisz $ ls, zapisana strona powinna się pojawić.

Przykładwy prawdziwy skrypt

Kiedy witryna używana w Wikipedii zmienia swój adres URL, linki w Wikipedii stają się nieaktualne, możliwe są również martwe linki, jeśli witryna nie przekierowuje ze starych adresów URL na nowe adresy URL. Na przykład, Encyklopedia Britannica (EB) zmieniła swoje linki, choćby poprzez przenoszenie stron z http://www.britannica.com/EBchecked/media/ na http://www.britannica.com/topic/[topic name]/images-videos/*. Listę użyć starych adresów URL możesz znaleźć w angielskiej Wikipedii pod w:Special:LinkSearch/http://www.britannica.com/EBchecked/media. Ręczna aktualizacja tych linków może być bardzo czasochłonna. Na szczęście EB zachowało przekierowania ze swoich starych adresów URL na nowe adresy URL, więc natychmiastowe poprawki nie są konieczne.

Dla prostszego przykładu, angielska Wikipedia zawiera obecnie linki do http://britannica.com/EBchecked/ zamiast http://www.britannica.com/EBchecked/; tj. adres URL pozbawiony jest 'www.'.

Obecnie na angielskiej Wikipedii znajduje się 14 spraw: 1$

Problem ten występuje również w Wikipedii w innych językach, np. w niemieckiej Wikipedii jest jeden przypadek: w:de:Spezial:Weblinksuche/http://britannica.com/EBchecked/

Aby naprawić te linki, możemy użyć skryptu Pywikibot replace.py . W tym demo użyjemy argumentu 'simulate', aby uniknąć pisania na wiki, ponieważ istnieją ścisłe zasady dotyczące automatycznej edycji Wikipedii.

Najpierw zróbmy listę wszystkich stron z linkami prowadzącymi do 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

Teraz sprawdzamy, czy te strony faktycznie zawierają literalny adres URL; tj. nie używają szablonu.

$ 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

Teraz użyj zastąpienia, aby dodać brakujące „www.”

$ 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

...

W PAWS i każdym terminalu obsługującym kolor różnica zmian będzie wyświetlana z dodanym „www.” w zielonym kolorze tekstu, co ułatwi odnalezienie proponowanych zmian.

Wewnątrz Pywikibota

Uwaga Uwaga: Nie zapisuj haseł w plikach serwera, pliki są publiczne!

Następnie użyjemy sesji Pythona PAWS.

  1. Udaj się na stronę PAWS home,
  2. kliknij 'Nowy' z prawej strony,
  3. zaznacz 'Python 3'.

Spowoduje to otwarcie nowego okna.

W polu tekstowym wpisz następujące elementy i z menu komórki wybierz "Uruchom" (lub uruchom wciskając shift+enter).

import pywikibot

Poniżej pojawi się nowe pole tekstowe. Uruchom następujące polecenie, aby utworzyć obiekt APISite przypisany do https://test.wikipedia.org/:

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

Opisz „stronę”, poprzez wpis w nowym polu tekstowym i wybranie „Uruchom”.

site

Powinno się pokazać

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

Tworzenie obiektu strony:

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

Sprawdź, czy istnieje poprzez uruchomienie:

page.exists()

Powinno dać rezultat.

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

Pokaże tekst na stronie:

page.text

Zmień tekst strony w obiekcie:

page.text = 'Hello world'

Zapisz stronę na wiki:

page.save()

Odpowiedź powinna brzmieć:

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

Interaktywny notatnik w Pythonie 3 pozwala na jednoczesne uruchomienie wielu linii. Powyższe można umieścić w jednym polu tekstowym i uruchomić

import pywikibot

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

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

Dziennik interaktywnej sesji Pythona może być zapisany lub pobrany do wykorzystania w przyszłości.

Dostęp do dokumentacji online w PAWS

Dokumentację Pywikibot'a można znaleźć w wmdoc:pywikibot. Pierwotne źródło jest docstrings, które można załadować do interaktywnego notatnika Python 3 za pomocą wbudowanej funkcji Pythona help().

Na przykład, aby sprawdzić argumenty powyższej metody zapisywania, uruchom:

help(page.save)

albo

help(pywikibot.Page.save)

Edycja skryptów Pywikibot'a

Biblioteka i skrypty Pywikibota znajdują się w katalogu /srv/paws i są przeznaczone tylko do odczytu. Zainstalowanej biblioteki Pywikibot nie można modyfikować w PAWS.

Skrypty można modyfikować po skopiowaniu ich do katalogu domowego PAWS.

Na przykład, aby uruchomić zmodyfikowany "checkimages.py”:

  1. W terminalu wpisz cp /srv/paws/pwb/scripts/checkimages.py ~
  2. W przeglądarce przejdź do strony PAWS home i kliknij na plik checkimages.py.
  3. Plik możesz edytować w przeglądarce. Edytuj kod -- na przykład zaraz po kodzie start = time.time() w linii 1775 dodaj nową linię 1776, która wyświetli na ekranie Twoje imię: print("MYNAME's version.")
  4. By zapisać swoje modyfikacje, w interfejsie edycji wybierz: Menu/Plik/Zapisz.
  5. W terminalu wpisz 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.)

Zobacz też


If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.