Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- """
- Quick pywikibot wrapper for statement addition.
- """
- import pywikibot
- PROP = 'P5008'
- TARGET_Q = 'Q123'
- REF_PROP = 'P248'
- REF_TARGET_Q = 'Q321'
- SITE = pywikibot.Site('wikidata', 'wikidata')
- SUMMARY = 'some edit summary'
- def run(list_of_qids):
- target_item = pywikibot.ItemPage(SITE, TARGET_Q)
- ref_item = pywikibot.ItemPage(SITE, REF_TARGET_Q)
- for qid in list_of_qids:
- item = pywikibot.ItemPage(SITE, qid)
- update_single(item, target_item, ref_item)
- def update_single(item, target_item, ref_item):
- item.exists() # load data
- found = False
- for claim in item.claims.get(PROP, []):
- if claim.getTarget() == target_item:
- found = True
- add_ref(claim, ref_item)
- if not found:
- add_claim(item, target_item, ref_item)
- def add_claim(item, target_item, ref_item):
- claim = pywikibot.Claim(SITE, PROP)
- claim.setTarget(target_item)
- item.addClaim(claim, summary=SUMMARY)
- add_ref(claim, ref_item)
- def add_ref(claim, ref_item):
- ref_claim = pywikibot.Claim(SITE, REF_PROP)
- ref_claim.setTarget(ref_item)
- if not has_ref(claim, ref_item):
- claim.addSource(ref_claim, summary=SUMMARY)
- def has_ref(claim, ref_item):
- for source in claim.sources:
- for s in source.get(REF_PROP, []):
- if s.getTarget() == ref_item:
- return True
- return False
Add Comment
Please, Sign In to add comment