1.3 -> 1.4 [Future release]
===========================
+ Added people search API method. API.search_users()
++ Streaming API
+ - Moved parameters into POST body to prevent "head too big" errors.
+ - Stream can be run either asynchronously (threaded) or synchronously (blocks main thread).
+ By default Stream will run in sync. mode. To change this pass into the stream
+ method 'async=True'. Example:
+ s = Stream('test', 'password', MyListener())
+ s.sample(async=True) # threaded mode
+ s.filter(track=['pizza']) # synch./blocking mode
1.2 -> 1.3 [Current release]
=====================
if self.listener.on_limit(json.loads(data)['limit']['track']) == False:
self.running = False
- def firehose(self, count=None):
+ def _start(self, async):
+ self.running = True
+ if async:
+ Thread(target=self._run).start()
+ else:
+ self._run()
+
+ def firehose(self, count=None, async=False):
if self.running:
raise TweepError('Stream object already connected!')
self.url = '/%i/statuses/firehose.json?delimited=length' % STREAM_VERSION
if count:
self.url += '&count=%s' % count
- self.running = True
- Thread(target=self._run).start()
+ self._start(async)
- def retweet(self):
+ def retweet(self, async=False):
if self.running:
raise TweepError('Stream object already connected!')
self.url = '/%i/statuses/retweet.json?delimited=length' % STREAM_VERSION
- self.running = True
- Thread(target=self._run).start()
+ self._start(async)
- def sample(self, count=None):
+ def sample(self, count=None, async=False):
if self.running:
raise TweepError('Stream object already connected!')
self.url = '/%i/statuses/sample.json?delimited=length' % STREAM_VERSION
if count:
self.url += '&count=%s' % count
- self.running = True
- Thread(target=self._run).start()
+ self._start(async)
- def filter(self, follow=None, track=None):
+ def filter(self, follow=None, track=None, async=False):
params = {}
self.headers['Content-type'] = "application/x-www-form-urlencoded"
if self.running:
if track:
params['track'] = ','.join(map(str, track))
self.body = urllib.urlencode(params)
- self.running = True
- Thread(target=self._run).start()
+ self._start(async)
def disconnect(self):
if self.running is False: