我试图通过Tweepy流式传输与即将到来的世界杯的特定比赛相关的标签。我假设,例如,第一个游戏将伴随以下主题标签:#RUSEGY
,#EGYRUS
,#RUSvsEGY
,#EGYvsRUS
。因为同时我想流式传输所有游戏中会出现的主题标签,例如#WorldCup
,#WorldCup2018
,#Russia2018
我对此类流媒体的“带宽”有严重担忧,即Twitter API的过滤参数不是太多了吗?特别是可以预期它将成为推特上的“热门时期”。
所以我认为特定游戏的标签集可以在游戏开始前24小时播放,在开始播放后24小时播放。我创建了一个字典列表,其中包含搜索参数以及流媒体开始和结束的日期。这是前5个(整个有48个项目):
hashtags_dicts = [
{ 'keywords': ['#RUSKSA', '#KSARUS', '#RUSvsKSA', '#KSAvsRUS'],
'start_streaming': datetime.datetime(2018, 6, 8, 17, 0),
'stop_streaming': datetime.datetime(2018, 6, 15, 17, 0)
},
{ 'keywords': ['#EGYURU', '#URUEGY', '#EGYvsURU', '#URUvsEGY'],
'start_streaming': datetime.datetime(2018, 6, 14, 14, 0),
'stop_streaming': datetime.datetime(2018, 6, 16, 14, 0)
},
{ 'keywords': ['#MARIRN', '#IRNMAR', '#MARvsIRN', '#IRNvsMAR'],
'start_streaming': datetime.datetime(2018, 6, 14, 17, 0),
'stop_streaming': datetime.datetime(2018, 6, 16, 17, 0)
},
{ 'keywords': ['#PORESP', '#ESPPOR', '#PORvsESP', '#ESPvsPOR'],
'start_streaming': datetime.datetime(2018, 6, 14, 20, 0),
'stop_streaming': datetime.datetime(2018, 6, 16, 20, 0)
},
{ 'keywords': ['#FRAAUS', '#AUSFRA', '#FRAvsAUS', '#AUSvsFRA'],
'start_streaming': datetime.datetime(2018, 6, 15, 12, 0),
'stop_streaming': datetime.datetime(2018, 6, 17, 12, 0)
}]
我还创建了一个控制查询参数流的函数:
def get_hashtags(hashtags_dicts):
keywords = []
for item in hashtags_dicts:
now = datetime.datetime.now()
if now > item['start_streaming'] and now < item['stop_streaming']:
keywords.extend(item['keywords'])
else:
pass
return keywords
我被卡住了。我不知道应该把它放在哪里。我试图把它放在一个包含while
的{{1}}循环中,但它显然不起作用:
TwitterStreamClass()
我应该在哪里放置函数import datetime
from time import sleep
from tweepy import Stream
from tweepy.streaming import StreamListener
from twitter_client import get_twitter_client
class TweetStreamListener(StreamListener):
def on_status(self, status):
print(status.created_at, status.text)
print(keywords)
return True
def on_error(self, status_code):
print('An error has occured! Status code = {}'.format(str(status_code)))
return True
#Authorization
api = get_twitter_client()
while True:
listener = TweetStreamListener()
stream = Stream(api.auth, listener)
try:
queries = get_hashtags(hashtags_dicts)
stream.filter(track = queries)
except:
sleep(5)
pass
?我正在做什么?我是初学者,所以每一个提示都会受到赞赏。