Руководство:Pywikibot/PAWS

From mediawiki.org
This page is a translated version of the page Manual:Pywikibot/PAWS and the translation is 97% complete.
См. Wikitech:PAWS для более детальной информации.

Этот документ обеспечивает быстрый интерактивный обзор Pywikibot с использованием блокнота, размещённого в среде облачных сервисов Викимедиа, использующих PAWS (Pywikibot A Web Shell).

Заметьте, что терминал PAWS поддерживает копирование и вставку только в основанные на Chromium браузеры. (Google Chrome, Opera, Safari и новый Microsoft Edge подойдут). Если вы используете другой браузер, вы можете попробовать использовать только контекстное меню (щелчок правой кнопкой мыши) или вам надо вручную ввести команды из этого списка. Вы также можете создать bash-файл с содержимым команды и вызвать его уже в терминале с помощью bash file.sh.
Внимание Внимание: Все блокноты и терминалы в PAWS подлежат удалению без предварительного уведомления. Вам рекомендуется запускать задачу в других местах (например, Toolforge), если её работа длится более часа.

Создание учётной запись Викимедиа

Для прохождения регистрации вам нужен только аккаунт Википедии/Викимедии. Если его нет, тогда для создания новой глобальной учётной записи можно использовать 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

Запуск терминала

Для запуска нового интерактивного терминала,

  1. Перейдите на Домашнюю станицу PAWS
  2. # щёлкните Файл > Новый > Терминал

При этом откроется новое окно с приглашением 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.

  1. Перейдите на Вашу Домашнюю страницу PAWS,
  2. нажмите на 'New' с правой стороны, и
  3. выберете '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 может быть найдена на https://doc.wikimedia.org/pywikibot/. Она созадется из docstrings, и может быть загружена в интерактивной консоли Python 3 используя встроенные функции Python help().

Например, чтобы посмотреть на аргументы для метода сохранённого выше, либо:

help(page.save)

или

help(pywikibot.Page.save)

Редактирование скрипта Pywikibot

В Pywikibot библиотеки и скрипты находятся в /srv/paws, и доступны только для чтения. Установленная Pywikibot-библиотека не может быть изменена в PAWS.

Скрипты могут быть изменены после их копирования в Домашнюю страницу PAWS.

Для запуска изменённого «checkimages.py»:

  1. Введите в терминале «cp /srv/paws/pwb/scripts/checkimages.py ~»
  2. В браузере перейдите к [$paws Домашней странице PAWS] и нажмите на файл checkimages.py.
  3. В браузере вы можете редактировать файл. Отредактируйте код — например, сразу после кода start = time.time() в строке 1775 добавьте новую строку 1776, в которой будет напечатано ваше имя: print("MYNAME's version.")
  4. В интерфейсе редактирования используйте меню «File» и нажмите «Save», чтобы сохранить изменения.
  5. Введите в терминале 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.)

См. также


If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel подключиться or pywikibot@ mailing list.