Phabricator のプロジェクト名 #Pywikibot-Wikidata

Manual:Pywikibot/ウィキデータ

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 • ‎Nederlands • ‎Tagalog • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎Ελληνικά • ‎български • ‎русский • ‎українська • ‎العربية • ‎中文 • ‎日本語 • ‎한국어

このページでは基本的なpywikibotライブラリを使用してWikidata上でpythonで書かれたbotを作成する方法について説明しています。

Pythonのコードを書かずに、単に既存のスクリプトを実行したいという場合は、同梱のWikidataスクリプトを御覧ください。

警告! 警告: Wikibaseの発展に伴って、将来的に方法やその結果は変わり得ます。

設定

あなたのBotアカウントを使って、テストや貢献を開始するには、まず以下の行をあなたのuser-config.pyに加える必要があります。

本番サイト
usernames['wikidata']['wikidata'] = u'YourBot'
テスト用サイト
usernames['wikidata']['test'] = u'YourBot'

詳しい説明については、Botを作成するを御覧ください。すでにpywikibotのcoreは、(qualifiers, sources, properties with item, coordinate, time, and string type)といった、Wikibaseの機能のほとんどをサポートしています。

import pwb  # side-packageの形でpywikibotフレームワークをインストールしていない場合のみ
import pywikibot
site = pywikibot.Site('en', 'wikipedia')  # これはあくまで例にすぎません。どのサイトでも動作するはずです。
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page)  # このメソッドはどんなページオブジェクトにも使用できます
# itemをこのように定義することもできます
repo = site.data_repository()  # これはDataSiteオブジェクトです
item = pywikibot.ItemPage(repo, 'Q42')  # これは私達が定義した他のitemと機能的に同じです
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にはsourceがあるとしましょう

# 既存の項目を編集
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


ご使用の Pywikibot のセットアップにさらなるヘルプが必要な場合は、IRC チャンネル #pywikibot 接続する または pywikibot@ メーリング リストにお問い合わせください。