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

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Pywikibot/PAWS and the translation is 79% complete.

Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎čeština • ‎Ελληνικά • ‎русский • ‎українська • ‎اردو • ‎العربية • ‎中文 • ‎日本語 • ‎한국어
См. Wikitech:PAWS для более детальной информации.

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

Заметьте, что терминал PAWS поддерживает копирование и вставку только в основанные на Chromium браузеры (Google Chrome, Opera и Safari подойдут). Если вы используете другой браузер, вам надо вручную ввести команды из этого списка. Вы также можете создать bash-файл с содержимым команды и вызвать его уже в терминале с помощью bash file.sh.
Внимание Внимание: All notebooks and terminals in PAWS are subject to termination without notice. You are encouraged to run your task on other places (such as Toolforge) if your task lasts for more than hours.

Создание пользователя Викимедиа

Для прохождения регистрации вам нужен только аккаунт на Википедии/Викимедии. Используйте Special:CreateAccount, чтобы создать его.

После того как вы создали аккаунт, пожалуйста, посетите https://test.wikipedia.org/ и проверьте, что Ваш логин появился в верхнем правом углу (это работает после T120327).

Регистрация в блокноте PAWS

Для запуска блокнота, перейдите на https://paws.wmflabs.org/paws/hub

Нажмите кнопку "Вход в Медивавики" и нажмите кнопку "Разрешить", когда появится запрос "Использовать OAuth для аутентификации". При Вашем первом входе в PAWS, Вы должны создать сервер. Нажмите на зелёную кнопку с надписью "Запустить мой сервер". Вполне нормально подождать несколько минут для запуска сервера.

Как только это будет завершено, Вы будете перенаправлены на URL такого вида https://paws.wmflabs.org/paws/user/<username>/tree

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

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

  1. Перейдите на Домашнюю станицу PAWS
  2. Щёлкните 'New' справа, и
  3. Выберете 'Terminal'.

При этом откроется новое окно с URL https://paws.wmflabs.org/paws/user/<username>/terminals/1, с приглашением Linux '$'.

Вы можете занести в закладки этот URL, и возвращаться к терминалу в любое время, даже после закрытия браузера или выключения вашего собственного компьютера.

Этот терминал - не эмулятор. Это настоящая оболочка 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
../..

Вход в вики

Это установит ваш аккаунт на сервере и позволит вам войти в систему из командной строки. Следующая команда должна подтвердить, что вы можете войти в 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'

Создание страницы

Чтобы создать страницу, введите следующую команду в терминале, заменив '<имя_пользователя>' с вашим именем пользователя, и нажав клавишу "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

После редактирования Вики. Вы можете посмотреть изменения, открыв <в nowiki>https://test.wikipedia.org/wiki/User_talk:<имя пользователя></в nowiki> в вашем браузере.

Вы можете узнать больше о каждом из этих сценариев командной строки с '-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

Теперь если зайти на Список файлов PAWS, там должны присутствовать сохраненные страницы .

Пример скрипта

Когда вебсайт, на который ссылается Википедия меняет URL, ссылки на Википедии становятся устаревшими, а возможно и мертвыми в случае отсутствия перенаправления со старых URL на новые. Как пример, Encyclopedia Britannica (EB) сменила ссылки, переместив страницы с http://www.britannica.com/EBchecked/media/ на http://www.britannica.com/topic/[topic name]/images-videos/*. Вы можете найти список использований старых URL на Английской Википедии по https://en.wikipedia.org/wiki/Special:LinkSearch/http://www.britannica.com/EBchecked/media. Обновление всех ссылок вручную заняло бы много времени. Спасибо EB за перенаправление старых URL на новые, нам не придется исправлять все немедленно.

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/; то есть в URL пропущен поддомен 'www.'.

В настоящее время существует 14 возможных случаев в английской Википедии: https://en.wikipedia.org/wiki/Special:LinkSearch/http://britannica.com/EBchecked/

В Википедии на других языках тоже есть эта проблема. Например, есть один случай в немецкой Википедии: https://de.wikipedia.org/wiki/Spezial:Weblinksuche/http://britannica.com/EBchecked/

Для того, чтобы исправить эти ссылки, мы можем использовать Pywikibot Manual:Pywikibot/replace.py/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/index.html. Она созадется из docstrings, и может быть загружена в интерактивной консоли Python 3 используя встроенные функции Python help().

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

help(page.save)

или

help(pywikibot.Page.save)

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

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

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

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

  1. В терминале, введите "cp /srv/pwb/scripts/checkimages.py ~"
  2. Щёлкните по файлу checkimages.py в Вашей [$paws Домашней странице PAWS]
  3. Исправьте код и сохраните Ваши изменения
  4. В терминале, введите "pwb.py ~/checkimages.py -simulate"
  1. In the terminal, enter cp /srv/paws/pwb/scripts/checkimages.py ~
  2. In a browser, go to your PAWS home and click on the file checkimages.py.
  3. 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.")
  4. In the editing interface, use the File menu and click Save to save your modifications.
  5. In the terminal, enter pwb.py ~/checkimages.py -simulate

См. также

  • шпаргалка по PAWS от одного пользователя (например об API и доступе к базе данных)


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