Manual:Pywikibot/Compat/Wikidata

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

Créer un objet DataPage (Page de donnée)

Il existe plusieurs manière de créer un objet DataPage et un objet Page pour Wikidata: Le premier est de créer un data_repo. À utiliser quand on connaît l'id de l'élément (Q###)

import pywikibot
# create a site object, here for en-wiki
site = pywikibot.getSite('en')

# get the data repository site for the given site
repo = 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)
  • Le second:
import pywikibot
# create a site object, here for en-wiki
site = pywikibot.getSite('en')

# create a Page object for en-wiki
page = 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
Vous ne pouvez pas modifier d'item, de valeur ou d'intitulé sans d'abord récupérer les données.

Récupérer les données

Le moyen simple

# get an entity of that page
dictionary = data.get()

# get interwiki links as page objects
language_links = data.interwiki()

Changer les intitulés

data.setitem(summary=u"BOT SUMMARY",
         items={'type': u'item', 'label': 'fa', 'value': 'هلیم'})

Changer les descriptions

page.setitem(summary=u"BOT SUMMARY",
         items={'type': u'description', 'language': 'en', 'value': 'noble gas'})

Déplacer les liens de sites

data.setitem(summary=u"BOT SUMMARY",
         items={'type': u'sitelink', 'site': 'de', 'title': 'OK'})

Modifier ou créer des déclarations/affirmations

data.editclaim(property, value ,refs={("ref1","value1"),("ref2","value2")})
Propriété peut être une chaîne, comme:
  • "capitale"
  • "P36"
  • "p36", "36"
  • un nombre comme 36
La valeur peut être une chaîne comme "Moscou", "Q649", "q649" ou "649" ou un nombre comme 649
refs est optionnel:
ref1 est rentré comme une propriété
value1 comme un élément
les autres refs sont optionnelles également
Souvenez vous
Important:la langue des valeurs doit être la même que celle de la page Wikipédia que vous chargez en premier. Par exemple, si vous charger l'élément Russie depuis la Wikipédia en allemand, vos valeurs devraient être:
data.editclaim("Hauptstadt", "Moskau" ,refs={("Datenvorlage","Englischsprachige Wikipedia ")})

Si vous donner les valeurs en anglais à votre robot, ça ne va pas fonctionner.

Si il existant déja une déclaration, le code la modifie, sinon le robot ajoute une nouvelle déclaration.

Récupérer toutes les entités d'un élément

dictionary = data.get()

Supprimer une ou plusieurs déclarations

data.removeclaim(property, value)

Il est possible d'utiliser la propriété de la manière décrite ci dessus, la valeur est optionnelle et il est préférable de l'utiliser quand il existe de multiples déclaration pour une affirmation. Si vous n'utiliser pas "valeur", claque déclaration qui contient la propriété sera supprimée.

Créer un nouvel élément

data.createitem('summary')

Exemple

Exemple simple de création de nouveaux éléments

  Attention : Utiliser ce bout de code avec précaution. Il ne teste pas la préexistence d'un élément, seulement si il existe un élément qui correspond à une page du site donné. Il est possible qu'une page d'un site n'ait pas de lien de langue sur la page d'un dépot donné. Tout celà devrait être vérifié avant de créer l'élément.
# -*- coding: utf-8  -*-
import wikipedia
site = 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")