Manuel:Pywikibot/Wikidata
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 : | 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
- Scripts Wikidata
- Wikidata:Creating a bot
- Wikidata:Pywikibot - Python 3 Tutorial
- Comment interagir avec Wikidata via Pywikibot - atelier par User:Mike Peel
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@.