Advertisement
Guest User

gnd json

a guest
Apr 17th, 2014
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. import simplejson
  2. import pywikibot
  3. import sys
  4.  
  5. filename = unicode(sys.argv[1])
  6. instanceof = unicode(sys.argv[2])
  7. replace = None
  8. if len(sys.argv) == 4:
  9.     replace = unicode(sys.argv[3])
  10.  
  11. print 'loading', filename
  12. with open(filename) as f:
  13.         a = simplejson.load(f)
  14.  
  15. site=pywikibot.Site('de', 'wikipedia')
  16. repo=site.data_repository()
  17. for i,j in a.items():
  18.         s = pywikibot.Page(site, i)
  19.         item = pywikibot.ItemPage.fromPage(s)
  20.         item.get()
  21.         skip = False
  22.         if u'P227' in item.claims:
  23.                 for c in item.claims[u'P227']:
  24.                     if c.target != j:
  25.                         print '* found gnd', c.target, 'instead of', j, 'for', i, item.getID()
  26.                 skip = True
  27.         if not skip:
  28.                 c = pywikibot.Claim(repo, u'P227')
  29.                 c.setTarget(j)
  30.                 item.addClaim(c)
  31.         skip = False
  32.         if u'P31' in item.claims:
  33.                 deletes = []
  34.                 for c in item.claims[u'P31']:
  35.                     if replace and c.target.getID() == replace:
  36.                         print '* deleting type', c.target, 'of', i, item.getID()
  37.                         deletes.append(c)
  38.                     elif c.target.getID() != instanceof:
  39.                         print '* found type', c.target, 'of', i, item.getID()
  40.                         skip = True
  41.                     else:
  42.                         skip = True
  43.                 if deletes:
  44.                     item.removeClaims(deletes)
  45.         if not skip:
  46.                 c2= pywikibot.Claim(repo, u'P31')
  47.                 b = pywikibot.ItemPage(repo, instanceof)
  48.                 c2.setTarget(b)
  49.                 item.addClaim(c2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement