Revision: 5405
Author: filnik
Date: 2008-05-19 13:10:56 +0000 (Mon, 19 May 2008)
Log Message:
-----------
Some rewrite, adding a bit of documentation
Modified Paths:
--------------
trunk/pywikipedia/query.py
Modified: trunk/pywikipedia/query.py
===================================================================
--- trunk/pywikipedia/query.py 2008-05-19 09:37:01 UTC (rev 5404)
+++ trunk/pywikipedia/query.py 2008-05-19 13:10:56 UTC (rev 5405)
@@ -1,15 +1,50 @@
-""" Please describe your module here ;) """
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""
+This module allow you to use the API in a simple and easy way. Here there's an example:
+
+-- Example --
+--- Code ---
+try:
+ params = {
+ 'action' :'query',
+ 'prop' :'revisions',
+ 'titles' :'Test',
+ 'rvlimit' :'2',
+ 'rvprop' :'user|timestamp|content',
+ }
+
+ print query.GetData('en', params,
+ useAPI = True, encodeTitle = False)
+
+finally:
+ wikipedia.stopme()
+--- Output ---
+(It's a whole line, but I've put some brakets to make it clearer)
+{u'query-continue': {u'revisions': {u'rvstartid': 212496859}}, u'query': {u'pages': {u'11089416': {u'ns': 0, u'pageid': 11089416,
+u'revisions': [{u'timestamp': u'2008-05-16T02:24:54Z', u'anon': u'', u'*': u"TEXT HERE", u'user': u'69.221.252.225'},
+{u'timestamp': u'2008-05-16T02:23:49Z', u'anon': u'', u'*': u"TEXT TWO HERE", u'user': u'69.221.252.225'}], u'title': u'Test'}}}}
+
+-- To Do --
+Put a better documentation
+
+"""
+#
+# (C) Yurik, 2007
+# (C) Filnik, 2008
+#
+# Distributed under the terms of the MIT license.
+#
__version__ = '$Id$'
-import wikipedia
-import simplejson
-import urllib
-import time
+#
-def GetData( lang, params, verbose = False, useAPI = False, retryCount = 5, encodeTitle = True ):
+import wikipedia, simplejson, urllib, time
+
+def GetData(lang, params, verbose = False, useAPI = False, retryCount = 5, encodeTitle = True):
"""Get data from the query api, and convert it into a data object
"""
- site = wikipedia.getSite( lang )
+ site = wikipedia.getSite(lang)
for k,v in params.iteritems():
if not IsString(v):
@@ -30,19 +65,19 @@
if 'titles' in params:
titlecount = params['titles'].count('|')
if encodeTitle:
- data = urllib.urlencode( {'titles' : params['titles']} )
+ data = urllib.urlencode({'titles' : params['titles']})
del params['titles']
if useAPI:
- path = site.api_address() + urllib.urlencode( params.items() )
+ path = site.api_address() + urllib.urlencode(params.items())
else:
- path = site.query_address() + urllib.urlencode( params.items() )
+ path = site.query_address() + urllib.urlencode(params.items())
if verbose:
if titlecount > 0:
- wikipedia.output( u"Requesting %d titles from %s:%s" % (titlecount, lang, path) )
+ wikipedia.output(u"Requesting %d titles from %s:%s" % (titlecount, lang, path))
else:
- wikipedia.output( u"Request %s:%s" % (lang, path) )
+ wikipedia.output(u"Request %s:%s" % (lang, path))
lastError = None
retry_idle_time = 5
@@ -57,12 +92,12 @@
except ValueError, error:
retryCount -= 1
- wikipedia.output( u"Error downloading data: %s" % error )
- wikipedia.output( u"Request %s:%s" % (lang, path) )
- wikipedia.debugDump('ApiGetDataParse', site, str(error) + '\n' + path, jsontext)
+ wikipedia.output(u"Error downloading data: %s" % error)
+ wikipedia.output(u"Request %s:%s" % (lang, path))
+ wikipedia.debugDump('ApiGetDataParse', site, str(error) + '\n%s' % path, jsontext)
lastError = error
if retryCount >= 0:
- wikipedia.output( u"Retrying in %i seconds..." % retry_idle_time )
+ wikipedia.output(u"Retrying in %i seconds..." % retry_idle_time)
time.sleep(retry_idle_time)
# Next time wait longer, but not longer than half an hour
retry_idle_time *= 2
@@ -205,4 +240,4 @@
return s.encode('utf-8')
def IsString(s):
- return type( s ) in [type( '' ), type( u'' )]
\ No newline at end of file
+ return type( s ) in [type( '' ), type( u'' )]