Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import simplejson
- import pywikibot
- import sys
- filename = unicode(sys.argv[1])
- instanceof = unicode(sys.argv[2])
- replace = None
- if len(sys.argv) == 4:
- replace = unicode(sys.argv[3])
- print 'loading', filename
- with open(filename) as f:
- a = simplejson.load(f)
- site=pywikibot.Site('de', 'wikipedia')
- repo=site.data_repository()
- for i,j in a.items():
- s = pywikibot.Page(site, i)
- item = pywikibot.ItemPage.fromPage(s)
- item.get()
- skip = False
- if u'P227' in item.claims:
- for c in item.claims[u'P227']:
- if c.target != j:
- print '* found gnd', c.target, 'instead of', j, 'for', i, item.getID()
- skip = True
- if not skip:
- c = pywikibot.Claim(repo, u'P227')
- c.setTarget(j)
- item.addClaim(c)
- skip = False
- if u'P31' in item.claims:
- deletes = []
- for c in item.claims[u'P31']:
- if replace and c.target.getID() == replace:
- print '* deleting type', c.target, 'of', i, item.getID()
- deletes.append(c)
- elif c.target.getID() != instanceof:
- print '* found type', c.target, 'of', i, item.getID()
- skip = True
- else:
- skip = True
- if deletes:
- item.removeClaims(deletes)
- if not skip:
- c2= pywikibot.Claim(repo, u'P31')
- b = pywikibot.ItemPage(repo, instanceof)
- c2.setTarget(b)
- item.addClaim(c2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement