Revision: 7919
Author:   xqt
Date:     2010-02-08 15:37:02 +0000 (Mon, 08 Feb 2010)

Log Message:
-----------
read magic word aliases for DEFAULTSORT via API (Bugfix for #2827630)

Modified Paths:
--------------
    trunk/pywikipedia/wikipedia.py

Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py      2010-02-08 11:24:22 UTC (rev 7918)
+++ trunk/pywikipedia/wikipedia.py      2010-02-08 15:37:02 UTC (rev 7919)
@@ -2427,9 +2427,17 @@
                 if self.site().isInterwikiLink(name):
                     continue
 
+                # {{#if: }}
+                if name.startswith('#'):
+                    continue
                 # {{DEFAULTSORT:...}} or {{#if: }}
-                if name.startswith('DEFAULTSORT:') or name.startswith('#'):
-                    continue
+                defaultKeys = self.site().siteinfo('magicwords')['defaultsort']
+                found = False
+                for key in defaultKeys:
+                    if name.startswith(key):
+                        found = True
+                        break
+                if found: continue
 
                 try:
                     name = Page(self.site(), name).title()
@@ -4210,12 +4218,12 @@
         self.lock = threading.RLock()
         self.mindelay = mindelay
         self.maxdelay = maxdelay
+        self.now = 0
         self.pid = False # If self.pid remains False, we're not checking for 
multiple processes
-        self.now = 0
         self.next_multiplicity = 1.0
         self.checkdelay = 240 # Check the file with processes again after this 
many seconds
         self.dropdelay = 360 # Drop processes from the list that have not made 
a check in this many seconds
-        self.releasepid = 100000 # Free the process id
+        self.releasepid = 1200 # Free the process id
         self.lastwait = 0.0
         self.delay = 0
         if multiplydelay:
@@ -6328,8 +6336,13 @@
         if not hasattr(self, '_info'):
             self._info = data
         else:
-            for k, v in data.iteritems():
-                self._info[k] = v 
+            if key == 'magicwords':
+                self._info[key]={}
+                for entry in data[key]:
+                    self._info[key][entry['name']] = entry['aliases']
+            else:
+                for k, v in data.iteritems():
+                    self._info[k] = v 
         #data pre-process
         try:
             if dump:
@@ -6527,10 +6540,16 @@
         Use API when enabled use_api and version >= 1.11,
         or use Special:Search.
         """
-        if config.use_api and self.versionnumber() >= 11:
+        try:
+            if config.use_api and self.versionnumber() >= 11:
+                apiUrl = self.site().api_address()
+                del apiUrl
+            else:
+                raise NotImplementedError
+        except NotImplementedError:
+            _search = self._search_without_api
+        else:
             _search = self._search_with_api
-        else:
-            _search = self._search_without_api
         return _search(query, number, namespaces)
 
     def _search_with_api(self, q, number, namespaces):



_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to