http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11362
Revision: 11362 Author: legoktm Date: 2013-04-08 20:07:32 +0000 (Mon, 08 Apr 2013) Log Message: ----------- New script which adds properties to pages yielded by a pagegenerator
Added Paths: ----------- branches/rewrite/scripts/claimit.py
Added: branches/rewrite/scripts/claimit.py =================================================================== --- branches/rewrite/scripts/claimit.py (rev 0) +++ branches/rewrite/scripts/claimit.py 2013-04-08 20:07:32 UTC (rev 11362) @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +""" +Copyright (C) 2013 Legoktm +Copyright (C) 2013 Pywikipediabot team + +Distributed under the MIT License + +Usage: + +python claimit.py [pagegenerators] P1 Q2 P123 Q456 + +You can use any typical pagegenerator to provide with a list of pages + +Then list the property-->target pairs to add. +""" +import pywikibot +from pywikibot import pagegenerators +repo = pywikibot.Site().data_repository() + + +def main(): + gen = pagegenerators.GeneratorFactory() + claims = list() + for arg in pywikibot.handleArgs(): + if gen.handleArg(arg): + continue + claims.append(arg) + if len(claims) % 2 != 0: + raise ValueError # or something. + real_claims = list() + c = 0 + while c != len(claims): + claim = pywikibot.Claim(repo, claims[c]) + claim.setTarget(pywikibot.ItemPage(repo, claims[c+1])) + real_claims.append(claim) + c += 2 + + generator = gen.getCombinedGenerator() + + for page in generator: + item = pywikibot.ItemPage.fromPage(page) + pywikibot.output('Processing %s' % page) + if not item.exists(): + pywikibot.output('%s doesn't have a wikidata item :(' % page) + #TODO FIXME: We should provide an option to create the page + continue + + for claim in real_claims: + pywikibot.output('Adding %s --> %s' % (claim.getID(), claim.getTarget().getID())) + item.addClaim(claim) + #TODO FIXME: We should add a source for each claim that is added + #TODO FIXME: We need to check that we aren't adding a duplicate + +