m.mediawiki.org
Manual:Pywikibot/Compat/Wikidata
< Manual:Pywikibot‎ | Compat
Other languages:
English • ‎español • ‎français • ‎polski • ‎čeština • ‎中文 • ‎日本語
This page is documentation for Pywikipedia Compat, which is no longer supported. This page is kept for historical interest. It may document scripts and features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date.
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####)
import pywikibot# create a site object, here for en-wikisite = pywikibot​.​getSite​(​'en'​)​# get the data repository site for the given siterepo = site​.​data_repository​()​# OR you may also get the site by language code/family:# repo = pywikibot.getSite('wikidata', 'wikidata')# We also can create a DataPage by its ID in two ways# First by site and title:data = pywikibot​.​DataPage​(​repo​, "Q42")#OR the second way by the ID number:data = pywikibot​.​DataPage​(​42​)
the second way is:
import pywikibot# create a site object, here for en-wikisite = pywikibot​.​getSite​(​'en'​)​# create a Page object for en-wikipage = pywikibot.Page(site, "Helium")# Now we create the corresponding DataPage:data = pywikibot​.​DataPage​(​page​)​# Warning: This page does not have a valid title until you get its content
You cannot change any item, value, or label without getting data first.
Getting data
Get the data in a simple way
# get an entity of that pagedictionary = data.get()# get interwiki links as page objects​language_links = data.interwiki()
Changing labels
data​.​setitem​(​summary​=​u​"BOT SUMMARY", items={'type': u'item', 'label': 'fa', 'value': 'هلیم'})
Changing descriptions
page​.​setitem​(​summary​=​u​"BOT SUMMARY", items={'type': u'description', 'language': 'en', 'value': 'noble gas'})
Changing sitelinks
data​.​setitem​(​summary​=​u​"BOT SUMMARY", items={'type': u'sitelink', 'site': 'de', 'title': 'OK'})
Changing or creating claims/statements
data​.​editclaim​(​property​, value ,​refs​=​{(​"ref1"​,​"value1"​),(​"ref2"​,​"value2"​)})
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:
data​.​editclaim​(​"Hauptstadt"​, "Moskau" ,​refs​=​{(​"Datenvorlage"​,​"Englischsprachige Wikipedia ")})
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.
Getting all entities (of an item)
dictionary = data.get()
Removing claim or claims
data​.​removeclaim​(​property​, value)
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
Creating an item
data​.​createitem​(​'summary'​)
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.
# -*- coding: utf-8 -*-import wikipediasite = wikipedia.getSite('fa') # add parameter fam='wikipedia' if you haven't declared family = 'wikipedia' in your user-config.py​list_of_articles​=​[​u​"دهستان جونقان", u"قنات_بزل_وار", u"قنات_بسک", u"قنات_بشرآباد"]for name in list_of_articles: # create a Page object of a site page = wikipedia.Page(site, name) # create the corresponding data repository object data = wikipedia​.​DataPage​(​page​) if data.exists(): wikipedia​.​output​(​u​"​%s already exists. Skipping..." % name) else: wikipedia​.​output​(​u​"​%s is missing. Creating..." % name) data.createitem(u"Bot: Importing article from Persian wikipedia")
Last edited on 24 August 2019, at 12:01
Content is available under CC BY-SA 3.0 unless otherwise noted.
Privacy policy
Terms of Use
Desktop
HomeRandomLog inSettingsDonateAbout MediaWiki.orgDisclaimers
WatchEdit