http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11373
Revision: 11373
Author: multichill
Date: 2013-04-16 18:54:08 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
Added crude dupe checking so we're not causing a big mess.
Modified Paths:
--------------
branches/rewrite/scripts/claimit.py
Modified: branches/rewrite/scripts/claimit.py
===================================================================
--- branches/rewrite/scripts/claimit.py 2013-04-16 18:22:45 UTC (rev 11372)
+++ branches/rewrite/scripts/claimit.py 2013-04-16 18:54:08 UTC (rev 11373)
@@ -30,10 +30,14 @@
return False
for claim in 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
+ if claim.getID() in item.get().get('claims'):
+ pywikibot.output(u'A claim for %s already exists. Skipping' % (claim.getID(),))
+ #TODO FIXME: This is a very crude way of dupe checking
+ else:
+ 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
def main():
@@ -52,7 +56,6 @@
claim.setTarget(pywikibot.ItemPage(repo, commandline_claims[i+1]))
claims.append(claim)
-
generator = gen.getCombinedGenerator()
if generator:
http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11372
Revision: 11372
Author: multichill
Date: 2013-04-16 18:22:45 +0000 (Tue, 16 Apr 2013)
Log Message:
-----------
Split up and more python way of doing it.
Modified Paths:
--------------
branches/rewrite/scripts/claimit.py
Modified: branches/rewrite/scripts/claimit.py
===================================================================
--- branches/rewrite/scripts/claimit.py 2013-04-16 16:37:10 UTC (rev 11371)
+++ branches/rewrite/scripts/claimit.py 2013-04-16 18:22:45 UTC (rev 11372)
@@ -18,38 +18,46 @@
repo = pywikibot.Site().data_repository()
+def addClaims(page, claims):
+ '''
+ The function will add the claims to the wikibase page
+ '''
+ 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
+ return False
+
+ for claim in 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
+
+
def main():
gen = pagegenerators.GeneratorFactory()
- claims = list()
+ commandline_claims = list()
for arg in pywikibot.handleArgs():
if gen.handleArg(arg):
continue
- claims.append(arg)
- if len(claims) % 2 != 0:
+ commandline_claims.append(arg)
+ if len(commandline_claims) % 2:
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
+ claims = list()
+ for i in xrange (0, len(commandline_claims), 2):
+ claim = pywikibot.Claim(repo, commandline_claims[i])
+ claim.setTarget(pywikibot.ItemPage(repo, commandline_claims[i+1]))
+ claims.append(claim)
+
+
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
+ if generator:
+ for page in generator:
+ addClaims(page, claims)
- 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
-
if __name__ == "__main__":
- main()
\ No newline at end of file
+ main()