我正在使用Twython来获取推文流。我使用了这个教程,希望我没有使用GPIO。
我的代码如下:
import time
from twython import TwythonStreamer
TERMS='#stackoverflow'
APP_KEY='MY APP KEY'
APP_SECRET='MY APP SECRET'
OAUTH_TOKEN='MY OATH TOKEN'
OAUTH_TOKEN_SECRET='MY OATH TOKEN SECRET'
class BlinkyStreamer(TwythonStreamer):
def on_success(self, data):
if 'text' in data:
print data['text'].encode('utf-8')
try:
stream = BlinkyStreamer(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
stream.statuses.filter(track=TERMS)
except KeyboardInterrupt
它输出一个包含#stackoverflow
的所有推文流。但如果推文来自某个用户,例如@StackStatus,我想输出它。
我在树莓派上运行这个。
我该怎么做?感谢您的帮助!
编辑:当某个用户发布新推文时,如果有其他或更简单的方法来执行某些脚本,请告诉我,这也会解决我的问题
"follow"参数不能像teknoboy上面所说的那样工作。正确的用法是使用用户的ID,而不是他们的屏幕名称。您可以使用获取用户IDhttp://gettwitterid.com/.
第三个可用参数是位置-您可以根据需要使用其中的1、2或3。它们与"OR"而非"AND"联系在一起。
示例用法:
SearchTerm='abracadara'#如果包含空格,则它们为'OR',即查找包含任意一个单词而非整个字符串的推文
推特='25073877'#这是唐纳德·特朗普,找到他的推特或提到他
Place='"47.405,-177.296,1mi"'#从Lat,Long 1英里以内发送stream.status.filter(track=SearchTerm,follow=Tweeter,location=Place)
您应该为过滤器提供follow
参数,以流式传输特定用户的推文。如果希望只关注一个用户,则可以定义FOLLOW='StackStatus'
并将相应的行更改为stream.statuses.filter(track=TERMS, follow=FOLLOW)
如果您希望查看所有用户的推文,而不考虑关键字,则可以省略track
参数:stream.statuses.filter(follow=FOLLOW)