Manual:Pywikibot/Compat/Wikidata
< Manual:Pywikibot‎ | Compat
This page is a translated version of the page Manual:Pywikibot/Compat/Wikidata and the translation is 100% complete.
Other languages:
English español français polskičeština 中文 日本語
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-wikisite = pywikibot​.​getSite​(​'en'​)​# get the data repository site for the given siterepo = 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-wikisite = pywikibot​.​getSite​(​'en'​)​# create a Page object for en-wikipage = 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 pagedictionary = 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:
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 wikipediasite = 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")
Last edited on 24 August 2019, at 12:01
MediaWiki
Content is available under CC BY-SA 3.0 unless otherwise noted.
Privacy policy
Terms of Use
Desktop
 Home Random Log in  Settings  Donate  About MediaWiki.org  Disclaimers
WatchEdit