Manual:Pywikibot/Compat/Wikidata
Cette page fait partie de la documentation de Pywikipedia Compact, qui n'est plus supporté. Cette page est conservée pour son intérêt historique. Elle contient de nombreux scripts et options qui sont périmées ou qui ne sont plus supportées. Il n'est pas nécessaire de modifier les informations incorrectes. |
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
# -*- 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")