Jump to content

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

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

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

Внимание Внимание: Все блокноты и терминалы в 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. Перейдите на [$url Домашнюю станицу PAWS]
  1. Go to your PAWS home
  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 exit 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'.
  4. click 'New' on the right hand side, and
  5. select '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»:

  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.)

См. также


Если вам нужна дополнительная помощь по настройке Pywikibot, зайдите на #pywikibot IRC-канал подключиться или список рассылки pywikibot@.