This e-mail was sent by Maarten to the pywikipedia-svn mailing list.
---------- Forwarded message ---------- From: Maarten Dammers maarten@mdammers.nl To: pywikipedia-svn@lists.wikimedia.org Date: Mon, 03 May 2010 23:15:47 +0200 Subject: Re: [Pywikipedia-svn] SVN: [8136] trunk/pywikipedia/wikipedia.py
This change is incorrect. Categories() should return Page objects, not Unicode objects. Could you please fix this?
Maarten
Op 28-4-2010 22:29, shizhao@svn.wikimedia.org schreef:
Revision: 8136 Author: shizhao Date: 2010-04-28 20:29:31 +0000 (Wed, 28 Apr 2010)
Log Message:
categories() new add API query.
Modified Paths:
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
--- trunk/pywikipedia/wikipedia.py 2010-04-28 14:33:06 UTC (rev 8135) +++ trunk/pywikipedia/wikipedia.py 2010-04-28 20:29:31 UTC (rev 8136) @@ -2173,12 +2173,50 @@ category links in the page text.
"""
try:
category_links_to_return =
getCategoryLinks(self.get(get_redirect=get_redirect), self.site())
except NoPage:
category_links_to_return = []
return category_links_to_return
+# New add API query.
+# api.php?action=query&prop=categories&titles=Albert%20Einstein
+#
if not self.site().has_api():
try:
category_links_to_return =
getCategoryLinks(self.get(get_redirect=get_redirect), self.site())
except NoPage:
category_links_to_return = []
return category_links_to_return
params = {
'action': 'query',
'prop' : 'categories',
'titles' : self.title(),
}
if not self.site().isAllowed('apihighlimits') and
config.special_page_limit> 500:
params['cllimit'] = 500
allDone = False
cats=[]
while not allDone:
output(u'Getting categories in %s via API...' % self.aslink())
datas = query.GetData(params, self.site())
data=datas['query']['pages'].values()[0]
if "categories" in data:
for c in data['categories']:
cats.append(c['title'])
+# if len(data) == 2: +# data = data[0] + data[1] +# else: +# data = data[0]
if 'query-continue' in datas:
if 'categories' in datas['query-continue']:
params['clcontinue'] =
datas['query-continue']['categories']['clcontinue']
else:
allDone = True
return cats
- def __cmp__(self, other): """Test for equality and inequality of Page objects""" if not isinstance(other, Page):
Pywikipedia-svn mailing list Pywikipedia-svn@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn
---------- Forwarded message ---------- From: pywikipedia-svn-request@lists.wikimedia.org To: Date: Subject: confirm 5757ba7a08bb8766eda2b6838461d7dd08516048 If you reply to this message, keeping the Subject: header intact, Mailman will discard the held message. Do this if the message is spam. If you reply to this message and include an Approved: header with the list password in it, the message will be approved for posting to the list. The Approved: header can also appear in the first line of the body of the reply.
Additionally, please do not commit commented code: +# if len(data) == 2: +# data = data[0] + data[1] +# else: +# data = data[0]
as it is unclear what the purpose is (testing?)
However, thanks for your efforts. Consider switching to the rewrite branch, though. There is no need to add API queries to the main framework.
Best regards, Merlijn 'valhallasw' van Deen
On 4 May 2010 00:08, Merlijn van Deen valhallasw@arctus.nl wrote:
This e-mail was sent by Maarten to the pywikipedia-svn mailing list.
---------- Forwarded message ---------- From: Maarten Dammers maarten@mdammers.nl To: pywikipedia-svn@lists.wikimedia.org Date: Mon, 03 May 2010 23:15:47 +0200 Subject: Re: [Pywikipedia-svn] SVN: [8136] trunk/pywikipedia/wikipedia.py
This change is incorrect. Categories() should return Page objects, not Unicode objects. Could you please fix this?
Maarten
Op 28-4-2010 22:29, shizhao@svn.wikimedia.org schreef:
Revision: 8136
Author: shizhao Date: 2010-04-28 20:29:31 +0000 (Wed, 28 Apr 2010)
Log Message:
categories() new add API query.
Modified Paths:
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
--- trunk/pywikipedia/wikipedia.py 2010-04-28 14:33:06 UTC (rev 8135) +++ trunk/pywikipedia/wikipedia.py 2010-04-28 20:29:31 UTC (rev 8136) @@ -2173,12 +2173,50 @@ category links in the page text.
"""
try:
category_links_to_return =
getCategoryLinks(self.get(get_redirect=get_redirect), self.site())
except NoPage:
category_links_to_return = []
return category_links_to_return
+# New add API query.
+# api.php?action=query&prop=categories&titles=Albert%20Einstein
+#
if not self.site().has_api():
try:
category_links_to_return =
getCategoryLinks(self.get(get_redirect=get_redirect), self.site())
except NoPage:
category_links_to_return = []
return category_links_to_return
params = {
'action': 'query',
'prop' : 'categories',
'titles' : self.title(),
}
if not self.site().isAllowed('apihighlimits') and
config.special_page_limit> 500:
params['cllimit'] = 500
allDone = False
cats=[]
while not allDone:
output(u'Getting categories in %s via API...' %
self.aslink())
datas = query.GetData(params, self.site())
data=datas['query']['pages'].values()[0]
if "categories" in data:
for c in data['categories']:
cats.append(c['title'])
+# if len(data) == 2: +# data = data[0] + data[1] +# else: +# data = data[0]
if 'query-continue' in datas:
if 'categories' in datas['query-continue']:
params['clcontinue'] =
datas['query-continue']['categories']['clcontinue']
else:
allDone = True
return cats
- def __cmp__(self, other): """Test for equality and inequality of Page objects""" if not isinstance(other, Page):
Pywikipedia-svn mailing list Pywikipedia-svn@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn
---------- Forwarded message ---------- From: pywikipedia-svn-request@lists.wikimedia.org To: Date: Subject: confirm 5757ba7a08bb8766eda2b6838461d7dd08516048 If you reply to this message, keeping the Subject: header intact, Mailman will discard the held message. Do this if the message is spam. If you reply to this message and include an Approved: header with the list password in it, the message will be approved for posting to the list. The Approved: header can also appear in the first line of the body of the reply.
Op 4-5-2010 0:08, Merlijn van Deen schreef:
This e-mail was sent by Maarten to the pywikipedia-svn mailing list.
Sorry about that. Probably pressed the wrong reply button. Looks like the behavior was changed. Categories() should only return categories directly included in the page and not categories transcluded by templates. This is not the way how you should change a library. Please change api=True to api=False in the trunk otherwise a lot of bots will break.
Maarten
---------- Forwarded message ---------- From: Maarten Dammers <maarten@mdammers.nl mailto:maarten@mdammers.nl> To: pywikipedia-svn@lists.wikimedia.org mailto:pywikipedia-svn@lists.wikimedia.org Date: Mon, 03 May 2010 23:15:47 +0200 Subject: Re: [Pywikipedia-svn] SVN: [8136] trunk/pywikipedia/wikipedia.py
This change is incorrect. Categories() should return Page objects, not Unicode objects. Could you please fix this?
Maarten
Op 28-4-2010 22:29, shizhao@svn.wikimedia.org mailto:shizhao@svn.wikimedia.org schreef:
Revision: 8136 Author: shizhao Date: 2010-04-28 20:29:31 +0000 (Wed, 28 Apr 2010) Log Message: ----------- categories() new add API query. Modified Paths: -------------- trunk/pywikipedia/wikipedia.py Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2010-04-28 14:33:06 UTC (rev 8135) +++ trunk/pywikipedia/wikipedia.py 2010-04-28 20:29:31 UTC (rev 8136) @@ -2173,12 +2173,50 @@ category links in the page text. """ - try: - category_links_to_return = getCategoryLinks(self.get(get_redirect=get_redirect), self.site()) - except NoPage: - category_links_to_return = [] - return category_links_to_return +# New add API query. +# api.php?action=query&prop=categories&titles=Albert%20Einstein + +# + if not self.site().has_api(): + try: + category_links_to_return = getCategoryLinks(self.get(get_redirect=get_redirect), self.site()) + except NoPage: + category_links_to_return = [] + return category_links_to_return + + params = { + 'action': 'query', + 'prop' : 'categories', + 'titles' : self.title(), + } + if not self.site().isAllowed('apihighlimits') and config.special_page_limit> 500: + params['cllimit'] = 500 + + + allDone = False + cats=[] + while not allDone: + output(u'Getting categories in %s via API...' % self.aslink()) + + datas = query.GetData(params, self.site()) + data=datas['query']['pages'].values()[0] + if "categories" in data: + for c in data['categories']: + cats.append(c['title']) +# if len(data) == 2: +# data = data[0] + data[1] +# else: +# data = data[0] + + if 'query-continue' in datas: + if 'categories' in datas['query-continue']: + params['clcontinue'] = datas['query-continue']['categories']['clcontinue'] + + else: + allDone = True + return cats + def __cmp__(self, other): """Test for equality and inequality of Page objects""" if not isinstance(other, Page): _______________________________________________ Pywikipedia-svn mailing list Pywikipedia-svn@lists.wikimedia.org <mailto:Pywikipedia-svn@lists.wikimedia.org> https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn
---------- Forwarded message ---------- From: pywikipedia-svn-request@lists.wikimedia.org mailto:pywikipedia-svn-request@lists.wikimedia.org To: Date: Subject: confirm 5757ba7a08bb8766eda2b6838461d7dd08516048 If you reply to this message, keeping the Subject: header intact, Mailman will discard the held message. Do this if the message is spam. If you reply to this message and include an Approved: header with the list password in it, the message will be approved for posting to the list. The Approved: header can also appear in the first line of the body of the reply.
Pywikipedia-l mailing list Pywikipedia-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/pywikipedia-l
Op 12-5-2010 14:40, Maarten Dammers schreef:
Op 4-5-2010 0:08, Merlijn van Deen schreef:
This e-mail was sent by Maarten to the pywikipedia-svn mailing list.
Sorry about that. Probably pressed the wrong reply button. Looks like the behavior was changed. Categories() should only return categories directly included in the page and not categories transcluded by templates. This is not the way how you should change a library. Please change api=True to api=False in the trunk otherwise a lot of bots will break.
Since it wasn't reverted and a lot of bots broke, I restored behavior in 8182
Maarten
Maarten
---------- Forwarded message ---------- From: Maarten Dammers <maarten@mdammers.nl mailto:maarten@mdammers.nl> To: pywikipedia-svn@lists.wikimedia.org mailto:pywikipedia-svn@lists.wikimedia.org Date: Mon, 03 May 2010 23:15:47 +0200 Subject: Re: [Pywikipedia-svn] SVN: [8136] trunk/pywikipedia/wikipedia.py
This change is incorrect. Categories() should return Page objects, not Unicode objects. Could you please fix this?
Maarten
Op 28-4-2010 22:29, shizhao@svn.wikimedia.org mailto:shizhao@svn.wikimedia.org schreef:
Revision: 8136 Author: shizhao Date: 2010-04-28 20:29:31 +0000 (Wed, 28 Apr 2010) Log Message: ----------- categories() new add API query. Modified Paths: -------------- trunk/pywikipedia/wikipedia.py Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2010-04-28 14:33:06 UTC (rev 8135) +++ trunk/pywikipedia/wikipedia.py 2010-04-28 20:29:31 UTC (rev 8136) @@ -2173,12 +2173,50 @@ category links in the page text. """ - try: - category_links_to_return = getCategoryLinks(self.get(get_redirect=get_redirect), self.site()) - except NoPage: - category_links_to_return = [] - return category_links_to_return +# New add API query. +# api.php?action=query&prop=categories&titles=Albert%20Einstein + +# + if not self.site().has_api(): + try: + category_links_to_return = getCategoryLinks(self.get(get_redirect=get_redirect), self.site()) + except NoPage: + category_links_to_return = [] + return category_links_to_return + + params = { + 'action': 'query', + 'prop' : 'categories', + 'titles' : self.title(), + } + if not self.site().isAllowed('apihighlimits') and config.special_page_limit> 500: + params['cllimit'] = 500 + + + allDone = False + cats=[] + while not allDone: + output(u'Getting categories in %s via API...' % self.aslink()) + + datas = query.GetData(params, self.site()) + data=datas['query']['pages'].values()[0] + if "categories" in data: + for c in data['categories']: + cats.append(c['title']) +# if len(data) == 2: +# data = data[0] + data[1] +# else: +# data = data[0] + + if 'query-continue' in datas: + if 'categories' in datas['query-continue']: + params['clcontinue'] = datas['query-continue']['categories']['clcontinue'] + + else: + allDone = True + return cats + def __cmp__(self, other): """Test for equality and inequality of Page objects""" if not isinstance(other, Page): _______________________________________________ Pywikipedia-svn mailing list Pywikipedia-svn@lists.wikimedia.org <mailto:Pywikipedia-svn@lists.wikimedia.org> https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn
---------- Forwarded message ---------- From: pywikipedia-svn-request@lists.wikimedia.org mailto:pywikipedia-svn-request@lists.wikimedia.org To: Date: Subject: confirm 5757ba7a08bb8766eda2b6838461d7dd08516048 If you reply to this message, keeping the Subject: header intact, Mailman will discard the held message. Do this if the message is spam. If you reply to this message and include an Approved: header with the list password in it, the message will be approved for posting to the list. The Approved: header can also appear in the first line of the body of the reply.
Pywikipedia-l mailing list Pywikipedia-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/pywikipedia-l
Pywikipedia-l mailing list Pywikipedia-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/pywikipedia-l