Manuel:Pywikibot/Wikidata

This page is a translated version of the page Manual:Pywikibot/Wikidata and the translation is 100% complete.

Cette page montre comment créer un bot python pour Wikidata en utilisant la biliothèque de base de pywikibot.

Si vous voulez seulement lancer quelques scripts sans écrire une ligne Python, voir les scripts Wikidata inclus.

Attention ! Attention : Les méthodes et les résultats des appels pourraient changer dans le futur pour suivre l'évolution de Wikibase.
Pywikibot prend en charge les objets de données lexicales tels que les Lexemes, à partir de la version 7.2 et supérieures.

Configuration

Pour commencer à contribuer ou à tester l'utilisation de votre compte utilisateur robot, vous devez ajouter ce qui suit à votre user-config.py  :

Site de production
usernames['wikidata']['wikidata'] = 'YourBot'
Site de test
usernames['wikidata']['test'] = 'YourBot'

Exemple

Voir Créer un bot pour une documentation étendue. Le noyau pywikibot prend en charge la plupart des fonctionnalités de Wikibase, par exemple les qualificatifs, les sources, les propriétés avec les éléments, les types coordonnées, dates et chaîne.

import pwb  # nécessaire seulement si vous n'avez pas installé le framework en tant que package additionnel
import pywikibot
site = pywikibot.Site('wikipedia:en')  # n'importe quel site fonctionnera, ceci est juste un exemple
page = pywikibot.Page(site, 'Douglas Adams')
item = pywikibot.ItemPage.fromPage(page)  # ceci peut être utilisé pour n'importe quel objet de page
# vous pouvez aussi définir un élément comme cela
repo = site.data_repository()  # ceci est un objet DataSite
item = pywikibot.ItemPage(repo, 'Q42')  # Cela sera la même chose fonctionnellement que l'autre élément que nous avons défini

item.get()  # vous avez besoin d'y faire appel pour accéder à n'importe quelle donnée.
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])  # supposons juste que les sources existent.

# Modifier un élément existant
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')

# Vous pouvez faire aussi tout cela en une fois :
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')


Voir aussi

Quelques exemples de robots


Si vous avez besoin de plus d'aide pour configurer votre Pywikibot, consultez le canal IRC #pywikibot connecter ou la liste de diffusion pywikibot@.