Manual:Pywikibot/Wikidata

This page explains how to create python bots on Wikidata using the basic pywikibot library.

If you just want to run some scripts without writing a line of python, see the included Wikidata scripts.

CAUTION: The methods and results may be changed in the future, as Wikibase evolves.

Configuration
To start contributing/testing using your bot's account you must add the following to your user-config.py:


 * Production site


 * Testing site

Creating a DataPage object
Different ways to create a DataPage and Page object for Wikidata: First way is creating a data_repo first, use this way only when you have ID of the item (Q####)

the second way is:

REMEMBER: You cannot change any item, value, or label without getting data first

Getting data
Get the data in a simple way

Changing or creating claims/statements

 * property can be a string like "capital" or "p36" or "P36" or "36" or 36
 * value can be a string like "Moscow" or "Q649" or "q649" or "649" or 649
 * refs is optional and if you don't add any references the bot will change either:
 * ref1 can be a string like "imported from" or "p143" or etc
 * value1 can be a string like "English Wikipedia" or "q328" or etc
 * other refs are optional too


 * Remember:Important:language of values must the same as the Wikipedia page you load at first. For example, if you load Russia from Deutsch Wikipedia your values must be:

and if you run your bot on English values, the bot won't work

If there was a claim already the code changes the claim, and if not the code adds the claim.

Removing claim or claims
you can add the property in the way shown above, value is optional and it's better to use when we have multiple claims for a statement if you don't use value, every claim that uses the property will be removed

Example
Simple example for creating new items.

Caution: Use this code snippet with care. It does not test whether a data repository item already exists. It only test whether it exists for a given site page. This could also mean that a given site page has no language link on a given repository page. This should be checked before a page is created.

Working with pywikibot/core (former rewrite branch)
see d:Wikidata:Creating a bot for an extended documentation. pywikibot core supports most Wikibase features already, e.g., qualifiers, sources, properties with item, coordinate, time, and string type.