@@ -25,7 +25,8 @@ class AtWikiAPI(object):
2525 def __init__ (self , uri , ** kwargs ):
2626 self ._uri = uri
2727 self ._user_agent = kwargs .get ('user_agent' , 'Mozilla/5.0 (AtWikiPython)' )
28- self ._sleep = kwargs .get ('sleep' , 10 )
28+ self ._sleep = kwargs .get ('sleep' , 10 ) # in seconds
29+ self ._last_request = 0.0 # epoch second last request has made
2930
3031 def get_list (self , tag = None , _start = 1 ):
3132 index = _start
@@ -50,7 +51,6 @@ def get_list(self, tag=None, _start=1):
5051 yield {'id' : page_id , 'name' : page_name }
5152 if count == 0 or is_end : break
5253 index += 1
53- time .sleep (self ._sleep )
5454
5555 def get_tags (self , sort = '' , _start = 1 ):
5656 index = _start
@@ -73,7 +73,6 @@ def get_tags(self, sort='', _start=1):
7373 if not pager :
7474 break
7575 index += 1
76- time .sleep (self ._sleep )
7776
7877 def get_source (self , page_id , generation = 0 ):
7978 soup = self ._request (self ._uri .backup_source (page_id , generation ))
@@ -103,4 +102,8 @@ def search(self, keyword, is_and=True, wiki_syntax=False, complete=True):
103102
104103 def _request (self , url , data = None ):
105104 req = Request (url , headers = {'User-Agent' : self ._user_agent }, data = data )
105+ sleep = self ._last_request + self ._sleep - time .time ()
106+ if 0 < sleep :
107+ time .sleep (sleep )
108+ self ._last_request = time .time ()
106109 return BeautifulSoup (urlopen (req ).read (), 'html5lib' )
0 commit comments