Руководство:Pywikibot/PAWS
Pywikibot |
---|
|
- См. Wikitech:PAWS для более детальной информации.
Этот документ обеспечивает быстрый интерактивный обзор Pywikibot с использованием блокнота, размещённого в среде облачных сервисов Викимедиа, использующих PAWS (Pywikibot A Web Shell).
bash file.sh
.
Создание учётной запись Викимедиа
Для прохождения регистрации вам нужен только аккаунт Википедии/Викимедии. Если его нет, тогда для создания новой глобальной учётной записи можно использовать Special:CreateAccount.
Вне зависимости от того, когда был создан аккаунт, пожалуйста, обязательно посетите https://test.wikipedia.org/ и проверьте, что Ваш логин появился в верхнем правом углу (это работает после T120327). Без такой проверки последующее автоматическое подключение из терминала может не работать.
Если вы только что зарегистрировались как новый пользователь Викимедиа, обязательно войдите в свою учётную запись через Мета-Вики, Википедию, Викиданные и Викисклад (или перейдите через внутренние ссылки на родственные проекты). В каждом из проектов прочитайте и удалите все отложенные сообщения для вас (сверху).
Регистрация в блокноте PAWS
Для запуска блокнота, перейдите на https://hub-paws.wmcloud.org/hub
Нажмите кнопку «Sign in with MediaWikiи» (вход через Викимедия) и нажмите кнопку «Разрешить», когда появится запрос о полномочиях. При Вашем первом входе в PAWS, Вы должны создать сервер. Нажмите на зелёную кнопку с надписью «Запустить мой сервер». Вполне нормально подождать несколько минут для запуска сервера.
Как только это будет завершено, Вы будете перенаправлены на URL такого вида https://paws.wmflabs.org/paws/user/<username>/tree
Запуск терминала
Для запуска нового интерактивного терминала,
- Перейдите на Домашнюю станицу 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.
Вход в вики
Это установит ваш аккаунт на сервере и позволит вам войти в систему из командной строки. Следующая команда должна подтвердить, что вы можете войти в testwiki. Она использует технологию 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> в вашем браузере.
Вы можете узнать больше о каждом из этих сценариев командной строки с '-help' опции командной строки.
$ 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
Теперь если вы запустите $ ls
, там должны присутствовать сохраненные страницы .
Пример скрипта
Когда вебсайт, на который ссылается Википедия меняет URL, ссылки на Википедии становятся устаревшими, а возможно и мертвыми в случае отсутствия перенаправления со старых URL на новые. Как пример, Encyclopedia Britannica (EB) сменила ссылки, переместив страницы с http://www.britannica.com/EBchecked/media/ на http://www.britannica.com/topic/[topic name]/images-videos/*. Вы можете найти список использований старых URL на Английской Википедии по w:Special:LinkSearch/http://www.britannica.com/EBchecked/media. Обновление всех ссылок вручную заняло бы много времени. Спасибо EB за перенаправление старых URL на новые, нам не придется исправлять все немедленно.
Простой пример: Английская Википедия содержит ссылки на http://britannica.com/EBchecked/ вместо http://www.britannica.com/EBchecked/; то есть в URL пропущен поддомен 'www.'.
В настоящее время существует 14 возможных случаев в английской Википедии: w:Special:LinkSearch/http://britannica.com/EBchecked/
В Википедии на других языках тоже есть эта проблема. Например, есть один случай в немецкой Википедии: w:de:Spezial:Weblinksuche/http://britannica.com/EBchecked/
Для того, чтобы исправить эти ссылки, мы можем использовать Pywikibot скрипт replace.py . В этой демонстрации мы будем использовать аргумент '-simulate', чтобы не писать в вики, так как существуют строгие правила об автоматическом редактированим в английской Википедии.
Сначала получите список всех страниц которые ссылаются на 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,
- нажмите на 'New' с правой стороны, и
- выберете 'Python 3'.
При этом откроется новое окно.
В текстовом поле введите следующее и в ячейке меню выберите «Выполнить (Run)» (или нажмите клавиши Shift+ввод, чтобы запустить).
import pywikibot
Новое текстовое поле будет отображаться ниже. Выполните следующую команду для создания APISite объекта подключенного к https://test.wikipedia.org/:
site = pywikibot.Site('test', 'wikipedia')
Наберите «site», введя его в новое текстовое поле и выберете «запустить (Run)».
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.
Для запуска изменённого «checkimages.py»:
- Введите в терминале «
cp /srv/paws/pwb/scripts/checkimages.py ~
» - В браузере перейдите к [$paws Домашней странице PAWS] и нажмите на файл
checkimages.py
. - В браузере вы можете редактировать файл. Отредактируйте код — например, сразу после кода
start = time.time()
в строке 1775 добавьте новую строку 1776, в которой будет напечатано ваше имя:print("MYNAME's version.")
- В интерфейсе редактирования используйте меню «File» и нажмите «Save», чтобы сохранить изменения.
- Введите в терминале
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 от одного пользователя (например, об 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
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel подключиться or pywikibot@ mailing list.