Guest User

Untitled

a guest
Jul 19th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. """
  4. Quick pywikibot wrapper for statement addition.
  5. """
  6. import pywikibot
  7.  
  8. PROP = 'P5008'
  9. TARGET_Q = 'Q123'
  10. REF_PROP = 'P248'
  11. REF_TARGET_Q = 'Q321'
  12. SITE = pywikibot.Site('wikidata', 'wikidata')
  13. SUMMARY = 'some edit summary'
  14.  
  15.  
  16. def run(list_of_qids):
  17. target_item = pywikibot.ItemPage(SITE, TARGET_Q)
  18. ref_item = pywikibot.ItemPage(SITE, REF_TARGET_Q)
  19. for qid in list_of_qids:
  20. item = pywikibot.ItemPage(SITE, qid)
  21. update_single(item, target_item, ref_item)
  22.  
  23.  
  24. def update_single(item, target_item, ref_item):
  25. item.exists() # load data
  26. found = False
  27.  
  28. for claim in item.claims.get(PROP, []):
  29. if claim.getTarget() == target_item:
  30. found = True
  31. add_ref(claim, ref_item)
  32. if not found:
  33. add_claim(item, target_item, ref_item)
  34.  
  35.  
  36. def add_claim(item, target_item, ref_item):
  37. claim = pywikibot.Claim(SITE, PROP)
  38. claim.setTarget(target_item)
  39. item.addClaim(claim, summary=SUMMARY)
  40. add_ref(claim, ref_item)
  41.  
  42.  
  43. def add_ref(claim, ref_item):
  44. ref_claim = pywikibot.Claim(SITE, REF_PROP)
  45. ref_claim.setTarget(ref_item)
  46. if not has_ref(claim, ref_item):
  47. claim.addSource(ref_claim, summary=SUMMARY)
  48.  
  49.  
  50. def has_ref(claim, ref_item):
  51. for source in claim.sources:
  52. for s in source.get(REF_PROP, []):
  53. if s.getTarget() == ref_item:
  54. return True
  55. return False
Add Comment
Please, Sign In to add comment