Skip to content

Instantly share code, notes, and snippets.

@symac

symac/addIdRef.py

Created Feb 5, 2018
Embed
What would you like to do?
# -*- coding: utf-8 -*-
#!/usr/bin/python
import pywikibot
import sys
site = pywikibot.Site("fr", "wikipedia")
repo = site.data_repository()
# Création de l'affirmation qui sera utilisée pour sourcer les informatiosn ajoutées
# => importé de : idref ( https://www.wikidata.org/wiki/Q47757534 )
importedIdref = pywikibot.Claim(repo, u'P143')
Qidref = pywikibot.ItemPage(repo, "Q47757534")
importedIdref.setTarget(Qidref)
pywikibot.config.put_throttle = 1
with open("équivalences.csv", "r") as f:
for line in f.readlines():
[titreWikipedia, idref_id] = line.rstrip().split("\t")
# On récupère la page de wikipédia en français à partir du titre qu'on a dans notre fichier de correspondance
page=pywikibot.Page(site, titreWikipedia.decode("utf-8"))
# On récupère l'item wikidata associé à cette page
item = pywikibot.ItemPage.fromPage(page)
item.get()
# On regarde si on a déjà un P269 ("idref") dans les propriétés disponibles dans la page
if "P269" in item.claims:
# Si propriété déjà présente, on abandonne pour l'item mais on pourrait imaginer aller
# plus loin et identifier si c'est le même idref ou un autre et ainsi identifier les doublons
print "P269 already there"
else:
# On créer une affirmation pour la propriété P269 (idref)
claim = pywikibot.Claim(repo, u'P269')
# On définit qu'elle "pointe" vers l'id idref qu'on a identifié
claim.setTarget(idref_id.replace("\n", ""))
# On l'ajoute à l'item wikidata qu'on avait trouvé à partir du titre de la page wikipédia
item.addClaim(claim)
# On ajoute une référence (optionnel)
claim.addSource(importedIdref)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.