Как я могу использовать Twython для получения всех твитов, в которых упоминается, например, «#Accounting», скажем, в Нью-Йорке?
Я использовал API поиска Twitter, но мне было разрешено получить только 100 твитов.
Затем я попытался использовать API фильтра потоковой передачи Twitter, но не смог сузить геолокацию, и казалось, что это займет целую вечность. Я читал, что мы должны помещать все эти твиты в базу данных, а затем выполнять там агрегацию, но мне было интересно, есть ли какой-либо другой способ сделать что-то быстро.
Вот мой код:
from twython import Twython
TWITTER_APP_KEY = 'XXXX'
TWITTER_APP_KEY_SECRET = 'XXXX'
TWITTER_ACCESS_TOKEN = 'XXXX'
TWITTER_ACCESS_TOKEN_SECRET = 'XXXX'
t = Twython(app_key=TWITTER_APP_KEY,
app_secret=TWITTER_APP_KEY_SECRET,
oauth_token=TWITTER_ACCESS_TOKEN,
oauth_token_secret=TWITTER_ACCESS_TOKEN_SECRET)
search = t.search(q='#Accounting',
geocode='-74,40,-73,41',
since_id='1',
max_id='504082008759488512'
)
tweets = search['statuses']
count=0
for tweet in tweets:
count+=1
print tweet['id_str'], '\n', tweet['text'], '\n\n\n'
print count
А вот мой код для Streaming API:
from twython import TwythonStreamer
APP_KEY = 'XXXX'
APP_SECRET = 'XXXX'
OAUTH_TOKEN = 'XXXX'
OAUTH_TOKEN_SECRET = 'XXXX'
class MyStreamer(TwythonStreamer):
tweets=[]
def on_success(self, data):
if 'text' in data:
tweet= data['text'].encode('utf-8')
if 'Accounting' in tweet:
tweets.append(tweet)
print tweet
def on_error(self, status_code, data):
print status_code
self.disconnect()
stream = MyStreamer(APP_KEY, APP_SECRET,
OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
stream.statuses.filter(location=['-74,40,-73,41'])
Спасибо