Посібник:Pywikibot/PAWS
Pywikibot |
---|
|
- Див. Wikitech:PAWS для докладнішої інформації.
Цей документ надає швидкий інтерактивний огляд Pywikibot із використанням notebook, який розташований у середовищі лабораторій Вікімедіа та використовує PAWS (PAWS: A Web Shell).
bash file.sh
.
Створення облікового запису Вікімедіа
Для дотримання цього проходження Вам потрібний лише обліковий запис Вікіпедії чи Вікімедіа. Використовуйте Special:CreateAccount для створення такого.
Щойно Ви створили обліковий запис, будь ласка, відвідайте https://test.wikipedia.org/ та перевірте, що Ваше ім'я користувача з'явилося у верхньому правому кутку (це працює навколо завдання T120327).
If you are a new user on Wikimedia log in with your account on Meta-Wiki, Wikipedia, Wikidata, and Commons. And in each of them read and delete all pending messages you have (on the top).
Вхід до записника
Для запуску розміщеного записника ідіть до https://hub-paws.wmcloud.org/hub
Натисніть «Увійти за допомогою MediaWiki», а потім «Дозволяю», коли попросять схвалити «Використовувати OAuth для автентифікації». Під час першого доступу до PAWS Вам необхідно створити сервер. Натисніть зелену кнопку «Запустити мій Сервер». Нормально почекати кілька хвилин, поки новий сервер запуститься.
Щойно це завершиться, Вас буде переспрямовано до URL на кшталт https://hub-paws.wmcloud.org/user/<username>/lab
Запуск терміналу
Для запуску нового інтерактивного терміналу,
- Ідіть до свого дому PAWS
- натисніть «Новий» праворуч, і
- виберіть «Термінал».
- click: File > New > Terminal
Це відкриє нове вікно з URL $paws та запитом Linux «$».
Цей термінал не є емулятором. Це справжня оболонка bash як частина справжньої інсталяції Linux, яка сидить на докерному контейнері, то ж Ви можете використовувати будь-яку команду bash і використовувати будь-які команди, доступні на Linux, які було встановлено.
Щоб побачити деякі доступні команди, використовуйте 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.
Вхід до Вікіпедії
Це встановить Ваш обліковий запис на сервері та дозволить Вам входити з командного рядка. Наступна команда повинна підтвердити, що Ви входите до тестової Вікіпедії. Вона використовує OAuth, то ж немає необхідності вводити пароль.
$ pwb.py login
Logging in to wikipedia:test as <username>
Logged in on wikipedia:test as <username>.
Ви можете під'єднати pywikibot до різних Вікіпедій шляхом створення файлу під назвою user-config.py у своїй $HOME
папці (/home/paws
) та додавання змінних mylang і 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.
Створення сторінки
Для створення сторінки введіть наступну команду в терміналі, замінивши «<username>» своїм іменем користувача та натиснувши «Y» при запиті на підтвердження Ваших змін:
$ 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
Ви відредагували Вікіпедію. Перегляньте свої зміни відкриттям https://test.wikipedia.org/wiki/User_talk:<username> у своєму веб-браузері.
Ви можете прочитати більше про кожен із цих сценаріїв командного рядка за допомогою опції «h» командного рядка.
$ pwb.py add_text -help
...
Завантаження сторінки
Завантаження багатьох сторінок досягається командою «listpages».
Для отримання вмісту створеної Вами сторінки в попередньому розділі введіть наступну команду:
$ pwb.py listpages -page:"User talk:<username>" -save
1 <username>
Saving User talk:<username> to /home/paws/User_talk_<username>
1 page(s) found
Тепер, якщо Ви підете до свого [$url списку файлів PAWS], збережена сторінка повинна існувати.
Приклад реального скрипту
When a website used on Wikipedia changes its URL, the links on Wikipedia become outdated, and possible also dead links if the website doesn't redirect from the old URLs to the new URLs. For example, Encyclopedia Britannica (EB) has changed their links, such as moving pages from http://www.britannica.com/EBchecked/media/ to http://www.britannica.com/topic/[topic name]/images-videos/*. You can find the list of usages of the old URL on English Wikipedia at w:Special:LinkSearch/http://www.britannica.com/EBchecked/media. Updating all those links manually will be very time consuming. Thankfully EB has maintained redirects from their old URLs to the new URLs, so this does not need to be fixed immediately.
Для простішого прикладу Англійська Вікіпедія наразі містить посилання до http://britannica.com/EBchecked/ замість http://www.britannica.com/EBchecked/; тобто піддомен «www.» відсутній у цьому URL.
Наразі існує 14 cases в Англійській Вікіпедії: w:Special:LinkSearch/http://britannica.com/EBchecked/
Вікіпедія іншою мовою також має цю проблему. Наприклад, один case в Німецькій Вікіпедії: w:de:Spezial:Weblinksuche/http://britannica.com/EBchecked/
In order to fix those links, we can use Pywikibot replace.py script. In this demo we will use the '-simulate' argument to avoid writing to the wiki, as there are strict rules about automated editing of English Wikipedia.
Спочатку давайте перелічимо всі сторінки, що посилаються на 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
Тепер ми перевіримо ті сторінки, що дійсно мають літерал URL на сторінці, тобто вони не використовують шаблон.
$ 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
Тепер використаємо заміну для додавання пропущеного «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
...
У PAWS і будь-якому терміналі з підтримкою кольору різниця змін показуватиме додавання «www.» зеленим кольором тексту, спрощуючи пошук пропонованих змін.
Всередині Pywikibot
Далі ми використовуватимемо сеанс PAWS Python.
- Ідіть до свого дому PAWS,
- натисніть «Новий» праворуч, і
- виберіть «Python 3».
Це відкриє нове вікно.
У текстовому полі введіть наступне та в меню Комірка виберіть «Запуск» (або натисніть Shift+Enter для запуску).
import pywikibot
Нове текстове вікно з'явиться нижче. Запустіть наступне для створення об'єкту APISite, підключеного до https://test.wikipedia.org/:
site = pywikibot.Site('test', 'wikipedia')
Опишіть «сайт» введенням його в нове текстове вікно та виберіть «Запуск».
site
Повинно показатися
Out[3]: APISite("test", "wikipedia")
Створено об'єкт сторінки:
page = pywikibot.Page(site, 'test')
Перевірте його існування запуском:
page.exists()
Повинно вивестись
VERBOSE:pywiki:Found 1 wikipedia:test processes running, including this one. Out[5]: True
Показався текст на сторінці:
page.text
Зміна тексту сторінки в об'єкті:
page.text = 'Hello world'
Збереження сторінки на Вікіпедію:
page.save()
Відгук повинен бути:
Page [[Test]] saved
INFO:pywiki:Page [[Test]] saved
Інтерактивний записник Python 3 дозволяє запускати багато рядків разом. Вони повинні бути в одному текстовому полі та Запущені
import pywikibot
site = pywikibot.Site('test', 'wikipedia')
page = pywikibot.Page(site, 'test')
page.text = 'Hello world!'
page.save()
Журнал Вашого інтерактивного сеансу Python може бут збережений або завантажений для майбутніх посилань.
Доступ до онлайн-документації у PAWS
Документація Pywikibot може бути знайдена на wmdoc:pywikibot. Вона процитована переважно з docstrings, який можна завантажити в інтерактивний записник Python 3, використовуючи вбудовану функцію Python help().
Наприклад, подивимось аргументи вищезгаданого методу збереження, запустивши:
help(page.save)
або
help(pywikibot.Page.save)
Редагування скриптів Pywikibot
Бібліотека та сценарії Pywikibot розташовані в /srv/paws і доступні лише для читання. Встановлена бібліотека Pywikibot не може змінюватися у PAWS.
Скрипти можуть змінюватися після їх копіювання до свого дому PAWS.
For example, to run a modified "checkimages.py":
- In the terminal, enter
cp /srv/paws/pwb/scripts/checkimages.py ~
- In a browser, go to your PAWS home and click on the file
checkimages.py
.
- In the browser, you can edit the file.
Edit the code -- for instance, just after the start = time.time()
code on line 1775, add a new line 1776 that will print out your name: print("MYNAME's version.")
- In the editing interface, use the File menu and click Save to save your modifications.
- In the terminal, enter
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.)
Див. також
- 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 одного користувача (наприклад, про API та доступ до баз даних)
- 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
- Якщо вам потрібна додаткова допомога щодо налаштування вашого Pywikibot, відвідайте #pywikibot IRC-канал connect або pywikibot@ список розсилки.