Handboek:Pywikibot/Wikidata
Deze pagina laat zien hoe je een python-bot op Wikidata maakt, met de standaard pywikibot bibliotheek.
Als je gewoon wat scripts wilt draaien zonder een regel code te schrijven, bekijk dan de meegeleverde Wikidata scripts.
Let op: | De methoden en de resultaten kunnen in de toekomst wijzigen, omdat Wikibase zich continue ontwikkelt. |
Pywikibot ondersteund lexical gegevensobjecten als Lexemes vanaf release 7.2.
Configuratie
Om met het bijdragen/testen met je bot-account te beginnen, moet je het volgende toevoegen in je user-config.py :
- Productie website
usernames['wikidata']['wikidata'] = 'YourBot'
- Test website
usernames['wikidata']['test'] = 'YourBot'
Voorbeeld
zie Een bot maken voor uitgebreide documentatie. pywikibot core ondersteunt al de meeste Wikibase functies, zoals qualifiers, bronnen, eigenschappen met item, coördinatie, tijd en tekst-type.
import pwb # alleen nodig als het framework niet als side-package is geïnstalleerd
import pywikibot
site = pywikibot.Site('wikipedia:en') # elke website zal werken, dit is maar een voorbeeld
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page) # dit kan gebruikt worden voor een object van het type page
# je kunt ook zo een item definiëren
repo = site.data_repository() # dit is een object van het type DataSite
item = pywikibot.ItemPage(repo, 'Q42') # Dit is functioneel gezien gelijk aan het andere gedefinieerde item
item.get() # je moet dit aanroepen om gegevens te benaderen
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]) # er zijn vast wel bronnen.
# Bestaand item wijzigen
item.editLabels(labels={'en': 'Douglas Adams'}, summary='Edit label')
item.editDescriptions(descriptions={'en': 'English writer'}, summary='Edit description')
item.editAliases(aliases={'en': ['Douglas Noel Adams', 'another alias']})
item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Douglas Adams'}, summary='Set sitelink')
item.removeSitelink(site='enwiki', summary='Remove sitelink')
# Dit kan ook in één keer:
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='Edit item')
Zie ook
- Wikidata scripts
- Wikidata:Creating a bot
- Wikidata:Pywikibot - Python 3 Tutorial
- Hoe te communiceren met Wikidata via Pywikibot - een werkshop door User:Mike Peel
Voorbeelden met bot
- Als u meer ondersteuning nodig heeft bij het instellen van uw Pywikibot, bezoek dan het #pywikibot IRC channel verbinden of gebruik de pywikibot@ mailinglijst.