Podręcznik:Pywikibot/PAWS
Pywikibot |
---|
|
- 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).
bash file.sh
.
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
- 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
Następnie użyjemy sesji Pythona PAWS.
- Udaj się na stronę PAWS home,
- kliknij 'Nowy' z prawej strony,
- 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”:
- W terminalu wpisz
cp /srv/paws/pwb/scripts/checkimages.py ~
- W przeglądarce przejdź do strony PAWS home i kliknij na plik
checkimages.py
. - 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.")
- By zapisać swoje modyfikacje, w interfejsie edycji wybierz: Menu/Plik/Zapisz.
- 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ż
- 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
- PAWS cheatsheet przez jednego użytkownika (np. o API i dostępie do baz danych)
- Source code on GitHub
- Mały zestaw narzędzi wiki do uruchamiania podstawowych skryptów Pywikibota
- Materiały do samodzielnej nauki oparte na warsztatach z małych zestawów narzędzi wiki
- Podręcznik warsztatowy bazujący na warsztatach z małych zestawów narzędzi wiki
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.