jenkins-bot has submitted this change and it was merged.
Change subject: Use the language of the page, not necessarily the general site
......................................................................
Use the language of the page, not necessarily the general site
It's possible that the user specificies a generator like
-cat:zh:Category:Blah", in which case the value of
pywikibot.Site().language() may not be "zh", depending
on the user's config. It's also possible that in the future
a generator will yield pages on multiple projects, so this
guards against that as well.
Change-Id: Ic1f10118a2dff93b71861b7ea97f7da22908cb04
---
M scripts/claimit.py
M scripts/harvest_template.py
2 files changed, 46 insertions(+), 29 deletions(-)
Approvals:
Merlijn van Deen: Looks good to me, approved
jenkins-bot: Verified
diff --git a/scripts/claimit.py b/scripts/claimit.py
index 0f50db0..e72e804 100755
--- a/scripts/claimit.py
+++ b/scripts/claimit.py
@@ -33,23 +33,29 @@
self.generator = generator
self.claims = claims
self.repo = pywikibot.Site().data_repository()
- self.source = None
- self.setSource(pywikibot.Site().language())
+ self.cacheSources()
- def setSource(self, lang):
+ def getSource(self, lang):
"""
- Get the source
+ Get the source for the specified language,
+ if possible
"""
- page = pywikibot.Page(self.repo, 'Wikidata:List of wikis/python')
- source_values = json.loads(page.get())
- source_values = source_values['wikipedia']
- for source_lang in source_values:
- source_values[source_lang] = pywikibot.ItemPage(self.repo,
- source_values[source_lang])
+ if lang in self.source_values:
+ source = pywikibot.Claim(self.repo, 'p143')
+ source.setTarget(self.source_values.get(lang))
+ return source
- if lang in source_values:
- self.source = pywikibot.Claim(self.repo, 'p143')
- self.source.setTarget(source_values.get(lang))
+ def cacheSources(self):
+ """
+ Fetches the sources from the onwiki list
+ and stores it internally
+ """
+ page = pywikibot.Page(self.repo, u'Wikidata:List of wikis/python')
+ self.source_values = json.loads(page.get())
+ self.source_values = self.source_values['wikipedia']
+ for source_lang in self.source_values:
+ self.source_values[source_lang] = pywikibot.ItemPage(self.repo,
+ self.source_values[source_lang])
def run(self):
"""
@@ -72,8 +78,10 @@
pywikibot.output('Adding %s --> %s'
% (claim.getID(), claim.getTarget()))
item.addClaim(claim)
- if self.source:
- claim.addSource(self.source, bot=True)
+ # A generator might yield pages from multiple languages
+ source = self.getSource(page.site.language())
+ if source:
+ claim.addSource(source, bot=True)
# TODO FIXME: We need to check that we aren't adding a
# duplicate
diff --git a/scripts/harvest_template.py b/scripts/harvest_template.py
index 2bc5ace..40e43a3 100755
--- a/scripts/harvest_template.py
+++ b/scripts/harvest_template.py
@@ -45,22 +45,29 @@
# TODO: Make it a list which also includes the redirects to the template
self.fields = fields
self.repo = pywikibot.Site().data_repository()
- self.source = None
- self.setSource(pywikibot.Site().language())
+ self.cacheSources()
- def setSource(self, lang):
+ def getSource(self, lang):
"""
- Get the source
+ Get the source for the specified language,
+ if possible
"""
- page = pywikibot.Page(self.repo, 'Wikidata:List of wikis/python')
- source_values = json.loads(page.get())
- source_values = source_values['wikipedia']
- for source_lang in source_values:
- source_values[source_lang] = pywikibot.ItemPage(self.repo, source_values[source_lang])
+ if lang in self.source_values:
+ source = pywikibot.Claim(self.repo, 'p143')
+ source.setTarget(self.source_values.get(lang))
+ return source
- if lang in source_values:
- self.source = pywikibot.Claim(self.repo, 'p143')
- self.source.setTarget(source_values.get(lang))
+ def cacheSources(self):
+ """
+ Fetches the sources from the onwiki list
+ and stores it internally
+ """
+ page = pywikibot.Page(self.repo, u'Wikidata:List of wikis/python')
+ self.source_values = json.loads(page.get())
+ self.source_values = self.source_values['wikipedia']
+ for source_lang in self.source_values:
+ self.source_values[source_lang] = pywikibot.ItemPage(self.repo,
+ self.source_values[source_lang])
def run(self):
"""
@@ -135,8 +142,10 @@
pywikibot.output('Adding %s --> %s' % (claim.getID(), claim.getTarget()))
item.addClaim(claim)
- if self.source:
- claim.addSource(self.source, bot=True)
+ # A generator might yield pages from multiple sites
+ source = self.getSource(page.site.language())
+ if source:
+ claim.addSource(source, bot=True)
def main():
--
To view, visit https://gerrit.wikimedia.org/r/82263
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic1f10118a2dff93b71861b7ea97f7da22908cb04
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Legoktm <legoktm.wikipedia(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change and it was merged.
Change subject: Allow both upper- and lowercase wikibase IDs
......................................................................
Allow both upper- and lowercase wikibase IDs
Change-Id: Id7c29981e8dde7c041a16b43bcc2658faf7b0c94
---
M pywikibot/site.py
1 file changed, 10 insertions(+), 1 deletion(-)
Approvals:
Aude: Looks good to me, but someone else must approve
Legoktm: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 43ec1df..17566e9 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -3515,7 +3515,16 @@
#Store it for 100 years
req = api.CachedRequest(expiry, site=self, **params)
data = req.submit()
- dtype = data['entities'][prop.getID()]['datatype']
+
+ # the IDs returned from the API can be upper or lowercase, depending
+ # on the version. See for more information:
+ # https://bugzilla.wikimedia.org/show_bug.cgi?id=53894
+ # http://lists.wikimedia.org/pipermail/wikidata-tech/2013-September/000296.ht…
+ try:
+ dtype = data['entities'][prop.getID()]['datatype']
+ except KeyError:
+ dtype = data['entities'][prop.getID().lower()]['datatype']
+
if dtype == 'globe-coordinate':
dtype = 'globecoordinate'
#TODO Fix this
--
To view, visit https://gerrit.wikimedia.org/r/83661
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Id7c29981e8dde7c041a16b43bcc2658faf7b0c94
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Aude <aude.wiki(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Legoktm <legoktm.wikipedia(a)gmail.com>
Gerrit-Reviewer: jenkins-bot