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

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

Other languages:
English • ‎Lëtzebuergesch • ‎Nederlands • ‎Tagalog • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎Ελληνικά • ‎български • ‎русский • ‎українська • ‎中文 • ‎日本語 • ‎한국어

В этом разделе объясняется, как создать ботов на языке Python m:Wikidata/Wikidata используя основные библиотеки pywikibot.

Если вы просто хотите запустить некоторые скрипты не написав строки в Python, см. включение скриптов Wikidata.

Осторожно! Предупреждение: Методы и результаты могут быть изменены в будущем, как Wikibase постоянно изменяется.

Настройка

Для начала вклада/тестирования с помощью учётной записи Вашего бота, Вы должны добавить следующие строки в Ваш user-config.py:

Работающий сайт
usernames['wikidata']['wikidata'] = u'YourBot'
Тестовый сайт
usernames['wikidata']['test'] = u'YourBot'

Пример

См. Создание бота для получения дополнительной информации. pywikibot ядро уже поддерживает большинство функций Wikibase, например, квалификаторы, источники, свойства элемента, координат, времени, и строковый тип.

import pwb  # нужно только если вы не установили фреймворк в качестве стороннего пакета
import pywikibot
site = pywikibot.Site('en', 'wikipedia')  # какой-нибудь другой сайт будет работать, это лишь пример
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page)  # это может быть использовано для какой-либо страницы-объекта
# вы также можете обозначить элемент так
repo = site.data_repository()  # это объект ''DataSite''
item = pywikibot.ItemPage(repo, 'Q42')  # Это будет функционировать так же, как и другой предмет, который мы определили
item.get()  # вам нужно вызвать его для доступа к каким-либо данным
sitelinks = item.sitelinks
aliases = item.aliases
if 'en' in item.labels:
    print('The label in English is: ' + item.labels['en'])
if item.claims:
    if 'P31' in item.claims: # instance of
        print(item.claims['P31'][0].getTarget())
        print(item.claims['P31'][0].sources[0])  # давайте удостоверимся, что это имеет источники

# Измените существующий элемент
item.editLabels(labels={'en': 'Douglas Adams'}, summary=u'Edit label')
item.editDescriptions(descriptions={'en': 'English writer'}, summary=u'Edit description')
item.editAliases(aliases={'en':['Douglas Noel Adams', 'another alias']})
item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Douglas Adams'}, summary=u'Set sitelink')
item.removeSitelink(site='enwiki', summary=u'Remove sitelink')

# Вы также можете сделать всё это в одно и то же время:
data = {'labels': {'en': 'Douglas Adams'},
  'descriptions': {'en': 'English writer'},
       'aliases': {'en': ['Douglas Noel Adams', 'another alias'], 'de': ['Douglas Noel Adams']},
     'sitelinks': [{'site': 'enwiki', 'title': 'Douglas Adams'}]}
item.editEntity(data, summary=u'Edit item')


См. также

Some bot examples


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