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)