Использование pywikipedia

From Meta, a Wikimedia project coordination wiki

Jump to: navigation, search

In other languages: en - es - fa - fr - hu - it - ja - ko - nl - pl - pt - ru - sv - zh-hant


Интерфейс (библиотека) pywikipedia представляет собой набор скриптов для ботов на языке Python. Эта страница содержит необходимую информацию для участников, желающих создавать и использовать ботов на этом языке.

Contents

[edit] Установка

  • Для Windows: установите последнюю версию Python 2.x, как минимум 2.4 (3.x версии не подходят, на 2.3 будет работать лишь часть скриптов)
  • Для Mac и Unix: Python заранее установлен на Mac OS X и некоторые версии Unix (но могут требоваться обновления, если установлена слишком старая версия)

[edit] Скачивание библиотеки

Последняя версия библиотеки pywikipedia (обновляется ежедневно в 20:00 UTC) может быть скачена с Тулсервера, после скачивания требуется лишь распаковать архив (установка не требуется).

[edit] Скачивание с помощью SVN

Вы можете пользоваться SVN (subversion.tigris.org) для установки последней версии Pywikipedia. Пользователям Windows рекомендуется использовать TortoiseSVN, установка SVN на Mac осуществляется согласно этим инструкциям.

To check out the source code using the command line SVN client use this command:

With either of those commands the source code will be in a new directory inside your current working directory named pywikipedia. (the last argument is used as the destination directory)

For non command line tools, the only information needed is the repository path: http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/

[edit] Конфигурация

Перед запуском необходимо создать файл user-config.py в директории, куда установлена библиотека (например, pywikipedia). Он может быть создан вручную (см. ниже) или же автоматически: для этого введите python generate_user_files.py в командную строку и нажмите ENTER (запустится соответствующий скрипт).

[edit] Для Википедии

Создайте файл с помощью текстового редактора (в Windows — Блокнот), сохраните как user-config.py в директории pywikipedia и добавьте в него следующие две строки:

Строка программы Пояснение
mylang = 'xx'

xx — название языкового раздела, в котором работает ваш бот (например, "en" — английский раздел).[1]

usernames['wikipedia']['en'] = u'ExampleBot'

[2]

В файле необходимо указать имя бота.

В вышеприведённом примере бот работает в английском разделе и носит название "ExampleBot".

(Необязательная часть)

usernames['wikipedia']['de'] = u'BeispielBot'
usernames['wikipedia']['en'] = u'ExampleBot'
usernames['wiktionary']['de'] = u'BeispielBot'

(Необязательная часть)

Если ваш бот работает в разных разделах под разными именами, напишите для каждого из них отдельную характеристику, как указано выше.

(Необязательная часть)

console_encoding = 'utf-8'
textfile_encoding = 'unicode_escape'

(Необязательная часть)

Можете указать кодировку, используемую вашей системой.

[edit] Для других проектов Викимедиа

Добавьте вышеуказанные две строки, в строке "usernames" вместо "wikipedia" укажите название вашего проекта. Также добавьте строку:

Строка программы Пояснение
family = 'sitename'

"sitename" - имя вашего проекта. Pywikipedia поддерживает большинство проектов Викимедиа: Викисклад, Викиновости, Викисловарь, Викиверситет, Викитеку, Викицитатник и др.

(Только для Викисклада)

 mylang = 'commons'
 family = 'commons'
 usernames['commons']['commons'] = 'UserBot'

(Только для Викисклада)

commons указывается и как википроект, и как языковой раздел.

[edit] Для проектов, не относящихся к Викимедиа

Некоторые другие проекты (Анархопедия, Betawiki и др.) также поддерживаются pywikipedia, их полный список можно найти в директории families/. Если вашего проекта там нет, создайте свой файл family (см. Pywikipedia bot on non-Wikimedia projects).

[edit] Разрешение на использование бота

Перед использованием бота необходимо получить разрешение сообщества. Создайте для него отдельный аккаунт и подайте заявку на статус бота. Бюрократы выдадут боту специальный флаг, и его правки не будут засорять список свежих правок.

[edit] Запуск бота

  • Windows: из меню "Пуск" откройте "Запуск программы", введите "Cmd.exe". Из командной строки откройте диск C с помощью команды "chdir C:\", затем той же командой откройте нужную папку (например: chdir \"pywikipedia").
  • Mac: найдите файл "Terminal.app" в директории "/Applications/Utilities"
  • Unix (в том числе Linux):

Введите "Python login.py" (для Windows — просто "login.py"), запустив соответствующий скрипт. Программа выдаст:

Password for user your_bot on your_site:en:

Введите пароль от учётной записи бота (бот не может работать анонимно), после входа можете запускать скрипты.

[edit] Скрипты

  Основные   Остальные  



  • add_text.py Добавляет текст в начале или в конце страницы
  • category.py Управляет категориями
  • imagetransfer.py Копирует изображения в другой языковой раздел или другой проект
  • interwiki.py Создаёт интервики
  • redirect.py Исправляет двойные перенаправления и удаляет перенаправления в никуда
  • replace.py Заменяет часть текста страницы на другой текст
  • solve_disambiguation.py Разрешение неоднозначностей
  • table2wiki.py Преобразует HTML-таблицы в вики-разметку
  • template.py Заменяет один шаблон на другой
  • upload.py Автоматически загружает изображения
  • weblinkchecker.py Находит битые внешние ссылки
  • wikipedia.py

Вспомогательные

  • catall.py Добавляет или изменяет категории
  • copyright.py Проверяет текст новых статей на нарушения авторских прав (с использованием поисковиков)
  • cosmetic_changes.py Косметические правки вики-разметки
  • delete.py Автоматическое удаление множества страниц (только администраторы)
  • delinker.py Удаление ссылок на изображения
  • imageharvest.py Массовое копирование изображений в вики-проект
  • movepages.py Переименование страниц
  • pagefromfile.py Создаёт страницы из текстового файла
  • protect.py Автоматическая защита страниц (только администраторы)
  • standardize_interwiki.py Перемещает интервики в начало страницы
  • standardize_notes.py Исправляет примечания и цитаты
  • test.py Выдаёт название учётной записи бота и вики-проекта, в котором он работает.
  • touch.py
  • touchall.py
  • warnfile.py
  • welcome.py Приветствует новых участников
  • version.py Выдаёт информацию об используемой версии Python и Pywikipedia

[edit] Глобальные аргументы

Хотя у многих скриптов для ботов есть свои аргументы, которые указаны на посвящённых им страницах или в их исходном коде, существуют глобальные аргументы, поддерживаемые всеми за редким исключением скриптами:

-help
Выдаёт список глобальных аргументов (то есть этот список) и справку по данному конкретному скрипту (если доступна)
-lang:xx
Определяет языковой раздел, первостепенен по отношению к соответствующему параметру в файле user-config.py.
-family:xyz
Определяет вики-проект, в котором работает бот: Википедия, Викисловарь, Викисклад... Также превалирует над записью в файле user-config.py.
-log
Активировать журналирование (журналы будут храниться в соответствующей субдиректории).
-log:xyz
Активировать журналирование, записывается в файл xyz.
-nolog
Отключить журналирование (если активировано по умолчанию)
-putthrottle:nn
Временной промежуток между правками бота (в секундах). По умолчанию: 10.

Например, запись python scriptname.py -family:wiktionary запустит скрипт "scriptname" в Викисловаре вне зависимости от значения параметра "family" в файле user-config.py.

[edit] Рассылка

Ботовладельцы могут подписаться на рассылку, посвящённую ботам (см. http://lists.wikimedia.org/mailman/listinfo/Pywikipedia-l) и уведомляющую пользователей обо всех обновлениях. Это позволит вовремя обновлять версии программ.

[edit] Update

  • If you installed using SVN, updating your working copy is easy. Place yourself in your pywikipedia repertory, and simply type svn update. It will simply update the framework to include the latest changes. Read svn Manual for more precisions.
  • If you are using a nightly version, the process is a bit more complicated. You have to re-download a full copy from the same site. Before installing it, backup your configuration files and scripts (user-config.py, any family file, or custom script that you might have created). Replace your pywikipedia directory by the new version you just download. Restore your configuration files. If you're not sure of what you're doing, do not erase but keep a backup of your complete old pywikipedia directory, to avoid losing any important files.

[edit] Сообщения об ошибках

Если вы хотите указать на ошибки в программах, включите в сообщение:

  • Используемую версию pywikipedia. Если она не является последней, желательно проверить, не была ли ошибка уже устранена в более поздних версиях.
  • Версию Python (2.x) и свою операционную систему (Windows, Linux, Mac OS и др.)
    • С этой целью можете использовать вышеупомянутый скрипт version.py.
  • Краткое изложение
  • Подробное описание проблемы
  • При каких условиях выдаётся ошибка (используемый скрипт, командная строка, вики-проект и языковой раздел)
  • The console output provided by the script (included the Python traceback if you are reporting a crash)

Публиковать сообщения можно в специальном разделе сайта SourceForge.

[edit] Создание новых скриптов

Если вам требуется программа, которой нет среди данных, вы можете оставить запрос на её создание. Кроме того, можете освоить язык Python (если не владеете им) и попробовать написать её самостоятельно: это будет очень приветствоваться.

[edit] Tips

Here and in wikipedia.py, there are some very basic tips for getting started writing your own bot:

  • be sure you've set up your user-config.py file (see above)
  • To gain access to the pywikipedia framework, use:
import wikipedia
  • to retrieve a page, use the following, where pageName is, e.g., "Wikipedia:Bots" or "India":
site = wikipedia.getSite()
page = wikipedia.Page(site, u"pageName")
text = page.get(get_redirect = True)
  • to update a page, use:
page.put(u"newText", u"Edit comment")
  • look at some of the pywikipedia files for other ideas -- basic.py is relatively easy to read even if you're new to pywikipedia.
  • you can find all available Page methods in the wikipedia.py file.
  • basic.py gives you a setup that can be used for many different bots, all you have to do is define the string editing on the page text.
  • To iterate over a set of pages, see pagegenerators.py for some objects that return a set of pages. An example use of the CategoryPageGenerator that does something for each page in the Category:Living people category:
import catlib
import pagegenerators
import wikipedia
site = wikipedia.getSite()
cat = catlib.Category(site,'Category:Living people')
gen = pagegenerators.CategorizedPageGenerator(cat)
for page in gen:
  #Do something with the page object, for example:
  text = page.get()

[edit] Create a quick shortcut to run commands (Windows users)

How to make a quick shortcut to run commands (Windows users).

If you're installing Pywikipediabot in a folder such as "My Documents" it may be troublesome to use the "cd" command to go into the folder all the time to run the bots (For those who don't get what that means, this will help you a lot).

On Windows you can create a shortcut which will open the command box you can use to run bots easily. Just follow these simple steps to create one:

  1. Open up the folder pywikipedia is installed in, in a window.
  2. Under File > New select Shortcut.
  3. Type in "cmd.exe" and hit next.
  4. You can give a name to the shortcut here, just "Pywikipediabot" is good.
  5. In the address bar (The text bar above where your files are which tells you where you are) copy the path there.
  6. Right click on the new shortcut and hit properties and paste that path you copied into the "Start in" text field.
  7. Hit ok, and now you have a shortcut to open the command line to run bots from.

[edit] Contributing changes

If you changed the bot and want to send a patch to the maintainer,

  1. Update to the current version (it will merge your changes with the improvements already committed to the SVN Repository),
  2. Resolve any conflicts caused by the update (grep for "=====" ;-) and
  3. Type:
$ svn diff > svn.diff

Review the diff to ensure it only includes the changes you want to contribute. The lines at the beginning starting with "?" should be removed.

If you are in direct contact with a Pywikipediabot developer, you can send the file svn.diff to him, but preferably attach the patch to a ticket in the Pywikipedia bug tracking system.

[edit] Использование нескольких учётных записей

It is a common need to run python wikipedia bot under different accounts (main and/or multiple bot accounts). It can be done in two ways.

[edit] Separate pywikipedia distributions

One can install completely separate instances of pywikipedia in different directories (1 for each account) and have diferent user-config.py files in each of them. However, when updating the installation via SVN, one needs to run svn update on each folder separately. Also, every installation takes some disk space, which might be a problem on accounts with limited quota.

[edit] One pywikipedia distribution with symbolic links

Let's assume user foo has a current SVN working copy of pywikipedia in /home/foo/pywikipedia. For each of the accounts, he creates a separate directory:

foo@bar:~$ mkdir foobot
foo@bar:~$ cd foobot

Pywikipedia needs then some symlinks to the main code tree created in the working directory:

foo@bar:~/foobot$ ln -s ~/pywikipedia/families
foo@bar:~/foobot$ ln -s ~/pywikipedia/userinterfaces

Then, user-config.py for this account must be created as described in Configuration section above.

Finally, the bot must be logged in the usual way:

foo@bar:~/foobot$ python ~/pywikipedia/login.py

The working directory is ready. The scripts will however require a slight modification to run (the path to the pywikipedia tree must be added to Python's path).

import sys, os
sys.path.append(os.environ['HOME'] + '/pywikipedia')
import wikipedia

That's all. Updating to the newest version of pywikipedia on all accounts at once is now a matter of running svn update only in the ~/pywikipedia directory.

[edit] On Windows 2000+ with NTFS

A similar set-up can be created on Windows systems running Windows 2000 or later that use NTFS as their filesystem. This can be achieved by using the junction tool (available from Microsoft's website, part of the sysinternals suite).

As above, create your new directory, but to create the symlinks, create families and userinterfaces as directories inside of that. (NB: The cmd.exe mkdir appears not to work properly in all the time, so using the Right-click->New menu or File->New menu is suggested.)

C:\...> junction families C:\pywikipedia\families
C:\...> junction userinterfaces C:\pywikipedia\userinterfaces

The rest of the method is the same as above.

Symlink/junctions should be deleted using the junction program, as you may accidentally lose data in the original directory (see [1]).

[edit] Bot & Proxy

There is probably (not tested!) draft workaround described here.

[edit] Примечания

  1. Если вы хотите работать в нескольких языковых разделах, укажите тот, в котором будете запускать бота чаще всего; при работе в других разделах используйте глобальный аргумент -lang.
  2. Буква 'u' перед именем участника обозначает Юникод. Она важна, если в имени вашего бота есть символы, не входящие в ASCII.

[edit] См. также

[edit] Mailing lists

pywikipedia-l (archives, current month
Human discussion on pywikipedia topic. This includes support, follow-ups to announcements, follow-ups to svn commits, and developer discussions. -- Moderate traffic (usually no more than a couple of mails a week in average)
pywikipedia-announce (archives, current month
Important announcements, e.g. breaking changes. -- Minimal traffic (one mail a month, at most)
pywikipedia-bugs (archives, current month
automated mail is sent by bug trackers on each bug state change. -- High traffic
pywikipedia-svn (archives, current month
automated mail is sent after each pywikipedia SVN commit. -- High traffic

[edit] Ссылки