tweepy的stream.filter()方法无法正常工作
我在使用tweepy这个API的时候遇到了一些问题。
我想写一个小程序,能够获取一个用户(或者多个用户)的推文流,但先从一个用户开始就可以了 ;-)
现在我的代码是这样的:
def main():
config = ConfigParser.ConfigParser()
config.read('twitter.cfg')
username = config.get('Twitter', 'username')
password = config.get('Twitter', 'password')
listener = StreamWatcherListener()
stream = tweepy.Stream(username, password, listener, timeout=None)
stream.filter('132897940')
在StreamWatcherListener里,我有一个叫“on_status”的方法,它会在每次收到新推文时打印出推文的内容(当我用stream.sample()而不是stream.filter()时,一切都正常)。
我用的ID是我的测试账号,所以每当我发推文时,控制台应该会有一些反应……但什么都没有发生。
当我在终端里尝试
curl -d @following http://stream.twitter.com/1/statuses/filter.json -uAnyTwitterUser:Password
根据我在Twitter API中找到的信息,一切都运行得很好。
所以可能是我对filter()方法的使用不对?
有什么建议吗?
-andy
2 个回答
0
class TweetListener(StreamListener):
def on_status(self,status):
print "TWEET ARRIVED!!!"
print "Tweet Text : %s" % status.text
print "Author's name : %s" % status.author.screen_name
print "Time of creation : %s" % status.created_at
print "Source of Tweet : %s" % status.source
time.sleep(10)
return True
def on_error(self, status):
print status
if status == 420:
print "Too soon reconnected, Exiting!!"
return False
sys.exit()
def search_tweets():
twitterStream = Stream(connect().auth, TweetListener())
twitterStream.filter(track=['Cricket','Maths','Army','Sports'],languages = ["en"],async=True)
在这里,我用了一个叫做async的参数,这样每个数据流就会在不同的线程上运行。想了解更多信息,可以参考这个链接。
8
我自己搞明白了
stream.filter()
这个方法需要一个数组
所以我不得不写了一些代码
stream.filter(['1234567'])
好了,问题解决了