[Pywikipedia-l] SVN: [5438] trunk/pywikipedia/wikipedia.py
btongminh at svn.wikimedia.org
btongminh at svn.wikimedia.org
Sun May 25 18:23:31 UTC 2008
Revision: 5438
Author: btongminh
Date: 2008-05-25 18:23:31 +0000 (Sun, 25 May 2008)
Log Message:
-----------
Use BeautifulSoup to parse MediaWiki messages. No need to add more external dependencies. Also if you do add an external dependency, commit it as well or add it as svn:external. Also doing sys.exit() is not really a sane thing to do. If you really need to exit, you should raise an error when wikipedia is imported. TODO: Fix this for MediaWiki 1.11.
Modified Paths:
--------------
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2008-05-24 00:55:14 UTC (rev 5437)
+++ trunk/pywikipedia/wikipedia.py 2008-05-25 18:23:31 UTC (rev 5438)
@@ -4458,22 +4458,6 @@
def mediawiki_message(self, key):
"""Return the MediaWiki message text for key "key" """
- try:
- from xml.etree.cElementTree import XML # 2.5
- except ImportError:
- try:
- from cElementTree import XML
- except ImportError:
- output('Module cElementTree not found, using instead the slower ElementTree')
- try:
- from xml.etree.ElementTree import XML # 2.5
- except ImportError:
- try:
- from elementtree.ElementTree import XML
- except ImportError:
- output('ERROR: One of the cElementTree, or the ElementTree module is now needed to be able to parse mediawiki messages. Please install (c)ElementTree. (Note that python 2.5 natively includes these librairies : upgrading to python 2.5 will solve this issue.)')
- stopme()
- sys.exit(1)
# Allmessages is retrieved once for all in a session
if not self._mediawiki_messages:
if verbose:
@@ -4484,15 +4468,15 @@
get_throttle()
xml = self.getUrl(self.get_address("Special:Allmessages")
+ "&ot=xml")
- decode = xml.encode(self.encoding())
- tree = XML(decode)
+ tree = BeautifulStoneSoup(xml)
# xml structure is :
# <messages lang="fr">
# <message name="about">À propos</message>
# ...
# </messages>
- for msg in tree.getiterator('message'):
- self._mediawiki_messages[msg.get('name').lower()] = msg.text
+ self._mediawiki_messages = dict([(tag.get('name').lower(), tag.string)
+ for tag in tree.findAll('message')])
+
if not self._mediawiki_messages:
# No messages could be added.
# We assume that the server is down.
More information about the Pywikipedia-l
mailing list