Hi I am still quite new to pywikipediabot framework, so excuse me if my issue is trivial. I am writing some code for maintenance of pages in Creator namespace on Commons and I run into a weird problem with Page.templatesWithParams function. The function is apparently not able to handle template parameters, like "{{{1|}}}". For example I run the following code:
#!/usr/bin/python # -*- coding: utf-8 -*-
import sys, string sys.path.append("C:/Programs/pywikipedia/") import wikipedia
if __name__ == "__main__": site = wikipedia.getSite(u'commons', u'commons') page = wikipedia.Page(site, u'Creator:Ansel Adams') wikipedia.output(u'Original page text:\n'+page.get()+u'\n\nTemplates detected by templatesWithParams:') for template in page.templatesWithParams(): wikipedia.output(u'template[0]="%s"' % template[0])
thistxt = string.replace(page.get(), '{{{1|}}}', '') wikipedia.output(u'\nModified page text:\n'+thistxt+u'\n\nTemplates detected by templatesWithParams:') for template in page.templatesWithParams(thistxt): wikipedia.output(u'template[0]="%s"' % template[0])
and got the following output: Original page text: {{Creator | Image = Ansel_Adams_and_camera.jpg | ImgWidth = 120 | Name = Ansel Adams | Alternative names = Ansel Easton Adams | Sortkey = Adams, Ansel | Nationality = US | Gender = male | Occupation = photographer | Description = | Birthdate = 1902-02-20 | Birthloc = {{San Francisco}} | Deathdate = 1984-04-22 | Deathloc = Monterey | Workperiod = | Workloc = American West | Homecat = Ansel Adams | Option = {{{1|}}} | Authority = {{Authority control|PND=11881303X|LCCN=n/79/56359|VIAF=61625857|ARC=1332556|bare=1}} }}
Templates detected by templatesWithParams: template[0]="San Francisco" template[0]="1" template[0]="Authority control"
Modified page text: {{Creator | Image = Ansel_Adams_and_camera.jpg | ImgWidth = 120 | Name = Ansel Adams | Alternative names = Ansel Easton Adams | Sortkey = Adams, Ansel | Nationality = US | Gender = male | Occupation = photographer | Description = | Birthdate = 1902-02-20 | Birthloc = {{San Francisco}} | Deathdate = 1984-04-22 | Deathloc = Monterey | Workperiod = | Workloc = American West | Homecat = Ansel Adams | Option = | Authority = {{Authority control|PND=11881303X|LCCN=n/79/56359|VIAF=61625857|ARC=1332556|bare=1}} }}
Templates detected by templatesWithParams: template[0]="San Francisco" template[0]="Authority control" template[0]="Creator"
As one can see in the first case the function was not able to find "Creator" template, and was only able to do so after deletion of "{{{1|}}}".
Is this a feature or a bug? Or in other words, am I misusing the function somehow and there is some way to get it to work correctly, or is it a bug that should be reported somewhere, so it can be fixed?
Jarek T. (user:jarekt)