python 2.7 - Tweepy location on Twitter API filter always throws 406 error -
i'm using following code (from django management commands) listen twitter stream - i've used same code on seperate command track keywords - i've branched out use location, , (apparently rightly) wanted test out without disrupting existing analysis that's running.
i've followed docs , have made sure box in long/lat format (in fact, i'm using example long/lat twitter docs now). looks broadly same as question here, , tried using version of code answer - same error. if switch using 'track=...', same code works, it's problem location filter.
adding print debug inside streaming.py in tweepy can see what's happening, print out self.parameters
self.url
, self.headers
_run
, , get:
{'track': 't,w,i,t,t,e,r', 'delimited': 'length', 'locations': '-121.7500,36.8000,-122.7500,37.8000'}
/1.1/statuses/filter.json?delimited=length
, {'content-type': 'application/x-www-form-urlencoded'}
respectively - seems me missing search location in way shape or form. don't believe i'm/i'm not 1 using tweepy location search, think it's more problem in use of bug in tweepy (i'm on 2.3.0), implementation looks right afaict.
my stream handling code here:
consumer_key = 'stuff' consumer_secret = 'stuff' access_token='stuff' access_token_secret_var='stuff' import tweepy import json # listener, resposible receiving data class stdoutlistener(tweepy.streamlistener): def on_data(self, data): # twitter returns data in json format - need decode first decoded = json.loads(data) #print type(decoded), decoded # also, convert utf-8 ascii ignoring bad characters sent users try: user, created = read_user(decoded) print "debug user", user, created if decoded['lang'] == 'en': tweet, created = read_tweet(decoded, user) print "debug tweet", tweet, created else: pass except keyerror,e: print "error on key", e pass except dataerror, e: print "dataerror", e pass #print user, created print '' return true def on_error(self, status): print status l = stdoutlistener() auth = tweepy.oauthhandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret_var) stream = tweepy.stream(auth, l) #locations must long, lat stream.filter(locations=[-121.75,36.8,-122.75,37.8], track='twitter')
the issue here order of coordinates.
correct format is: southwest corner(long, lat), northeast corner(long, lat). had them transposed. :(
Comments
Post a Comment