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.