Pywikipedia

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

pywikipediabot (Python Wikipedia Robot Framework) — набор скриптов для бота, работающего с движком MediaWiki. Скрипты написаны на языке Python. Заточены под работу в Википедии, но способны также работать в любом проекте, использующем движок MediaWiki.

Установка[править | править код]

  1. Скачать архив со скриптами, на сайте проекта в SF.net.
  2. Распаковать архив в желаемую директорию. У вас в системе должен быть установлен интерпретатор Python версии 2.3 или новее, получить его можно по адресу http://www.python.org/download/ (в большинстве современных дистрибутивов он уже есть).
  3. В директории families создать файл с именем traditio_family.py, куда вписать следующий текст:
    # -*- coding: utf-8  -*-
    
    import family
    
    # Traditio
    
    class Family(family.Family):
        def __init__(self):
            family.Family.__init__(self)
            self.name = 'traditio'
            self.langs = {
                  'ru': 'new.traditio.ru',
            }
            
            self.namespaces[4] = {
                '_default': [u'Traditio', self.namespaces[4]['_default']],
            }
            self.namespaces[5] = {
                '_default': [u'Обсуждение Traditio', self.namespaces[5]['_default']],
            }
    
        def version(self, code):
            return "1.10.0"
    
        def path(self, code):
            return '/index.php'
    
        def apipath(self, code):
            return '/api.php'
    
  4. В корневой директории скриптов pywikipedia создать файл user-config.py, куда вписать следующий код:
    # -*- coding: utf-8 -*-
    mylang = 'ru'
    family = 'traditio'
    usernames['traditio']['ru'] = u'Имя_вашего_бота'
    
    console_encoding = 'utf-8'
    

Если ваш бот обладает правами администратора, то следует добавить строку:

  1. sysopnames['traditio']['ru'] = u'Имя_вашего_бота'
    
  2. В консоли выполнить:
    python login.py
    

В случае, если всё успешно, скрипт запросит пароль вашего бота, залогинится и сохранит настройки в директории login-data. После этого вызывать скрипт больше не нужно, бот будет логиниться сам.

Скрипты[править | править код]

В наборе имеются скрипты, позволяющие производить наиболее востребованные действия. Каждый из скриптов обладает своим набором параметров запуска. Кроме того, имеются следующие глобальные параметры запуска:

  • -log. Включить логирование действий скрипта. Лог будет расположен в директории logs.
  • -log:filename. Включить логирование, лог будет иметь имя filename.
  • -nolog. Выключить логирование.
  • -putthrottle:timeout. Установить время ожидания скрипта перед сохранением каждой изменяемой страницы в timeout.
  • -lang:lng
  • -family:fml

login.py[править | править код]

Производит вход бота в проект, используя информацию из файла user-config.py

category.py[править | править код]

Скрипт для манипуляции категориями. Использование:

python category.py [global-arguments] action [-option]

Интерфейс[править | править код]

wikipedia[править | править код]

  • getSite(code = None, fam = None, user = None)
    
    переключиться на вики-проект с языком lang, типом family и используя учётную запись username
  • stopme()
    
  • input(question, colors = None)
    
    выведет строку текста и будет ожидать, что введет пользователь. Возвратит текст, введённый пользователем.
  • output(text, decoder = None, colors = [], newline = True, toStdout = False)
    
    выведет строку текста.

Page[править | править код]

Объекты Page представляют собой одну страницу в вики-проекте.


  • __init__(self, site, title, insite = None, defaultNamespace = 0)
    
    Конструктор класса Page. Возвращает страницу, находящуюся в проекте site с именем title.

  • title(self, underscore = False, savetitle = False)
    
    Получить имя страницы. Если передан аргумент underscore, равный True, метод возвращает имя страницы, в которой все пробелы заменены на символ «_».

  • urlname(self)
    
    Получить имя страницы, закодированное для URL.

  • titleWithoutNamespace(self, underscore = False)
    
    Получить имя страницы без пространства имён и якоря раздела.

  • section(self, underscore = False)
    
    Получить имя якоря раздела. Метод возвращает имя якоря раздела, если он существует; возвращает None в противном случае.

  • sectionFreeTitle(self, underscore = False)
    
    Получить имя страницы без якоря раздела. Если передан аргумент underscore, равный True, метод возвращает имя страницы, в которой все пробелы заменены на символ «_».

  • aslink(self, forceInterwiki = False)
    

  • site(self)
    

  • encoding(self)
    
    Получить кодировку страницы.

  • isAutoTitle(self)
    
  • autoFormat(self)
    
  • isCategory(self)
    
    Определить, является ли страница категорией. Метод возвращает True, если страница является категорией; возвращает False в обратном случае.

  • isImage(self)
    
    Проверить, является ли страница описанием изображения. Метод возвращает True, если страница является описанием изображения; возвращает False в обратном случае.

  • get(self, force = False, get_redirect = False, throttle = True, sysop = False, nofollow_redirects = False)
    
    Получить текст страницы.

  • exists(self)
    
    Проверить наличие страницы. Метод возвращает True, если страница существует; возвращает False в обратном случае.

  • isRedirectPage(self)
    
    Определить, является ли страница перенаправлением. Метод возвращает True, если страница существует и является перенаправлением; возвращает False в остальных случаях.

  • isEmpty(self)
    
    Определить, является ли страница пустой. Метод возвращает True, если размер страницы без ссылок на категории и interwiki меньше 4 символов; возвращает False в остальных случаях.

  • botMayEdit(self)
    
    Определить, может ли бот редактировать страницу. Метод возвращает True, если редактировать страницу возможно; возвращает False в обратном случае.

  • interwiki(self)
    

  • categories(self, nofollow_redirects = False)
    
    Получить категории. Метод возвращает список страниц, являющихся категориями для страницы.

  • linkedPages(self)
    
    Получить страницы, на которые ссылается данная страница. Метод возвращает список страниц, ссылки на которые содержатся в тексте данной страницы.

  • imagelinks(self, followRedirects = False, loose = False)
    
    Получить изображения, которые включены в страницу. Метод возвращает список изображений.

  • templates(self)
    
    Получить имена шаблонов, используемых на странице. Метод возвращает список, состоящий из строк, являющихся именами шаблонов.

  • getRedirectTarget(self)
    
    Получить имя страницы, на которую перенаправляет данная. Метод возвращает строку, являющуюся именем страницы, на которую перенаправляет данная.

  • isDisambig(self)
    

  • getReferences(self, follow_redirects = True, withTemplateInclusion = True, onlyTemplateInclusion = False, redirectsOnly = False)
    
    Получить страницы, которые ссылаются на данную. Метод возвращает список страниц, в которых есть ссылка на данную страницу.

  • namespace(self)
    

  • permalink(self)
    
    Получить постоянную ссылку на текущую версию страницы.

  • move(self, newtitle, reason = None, movetalkpage = True, sysop = False, throttle = False)
    
    Переименовать страницу. Метод переименует страницу, используя имя newtitle. Если передан аргумент reason, то его значение будет использовано как причина переименования. Метод возвращает True в случае, если переименование прошло успешно; возвращает False в обратном случае.

  • put(self, newtext, comment = None, watchArticle = None, minorEdit = True)
    
    Заменить содержимое страницы. Метод заменяет содержимое страницы значением аргумента newtext.
    Если передан аргумент comment, то его значение будет использовано для описания изменений.
    Если передан аргумент watchArticle, равный True, то страница будет добавлена в список наблюдения участника; если же аргумент равен False, то страница будет удалена из списка наблюдения.
    Если передан аргумент minorEdit, равный True, то изменение будет помечено как малое; если же аргумент равен False, то оно не будет помечено.

  • delete(self, reason = None, prompt = True, throttle = False)
    
  • getVersionHistory(self, forceReload = False, reverseOrder = False, getAll = False, revCount = 500)
    
    возвращает список кортежей, состоящих из четырёх элементов — oldid, даты правки, имени автора правки и комментария автора.
  • getVersionHistoryTable(self, forceReload = False, reverseOrder = False, getAll = False, revCount = 500)
    
    возвращает строку, представляющую из себя код на языке разметки MediaWiki таблицы с информацией о изменениях страницы.
  • fullVersionHistory(self, max = 50, comment = False, since = None)
    
    возвращает список кортежей, состоящих из трёх элементов — даты и времени правки, имени автора и текста этой версии страницы.
  • getPreviousVersion(self)
    
    возвращает текст предыдущей версии страницы.

Источники[править | править код]

Ссылки[править | править код]