如何转发用户' Python中的推文(而不是他们的粉丝' tweets / RTs)

时间:2017-03-30 13:47:51

标签: python twitter bots

我正在建立一个机器人,可以复制和粘贴几个用户的推文(候选人参加总统选举)。 当我运行代码时,我的机器人实际上正在复制支持者' 推文和转发,从而在我的页面上创建疯狂的流量 - 我想要复制的就是候选人自己来自他们帐户的推文。

任何人都知道该怎么做?

我想到了这个: if tweetText.startswith('RT @'): pass 会解决RT问题,但显然不是......

这是我的代码:

import twitter, sys, json, csv, time

# this app is being run by cast laboratory..@CASTlaboratory (4003669463)
consumer_key=""
consumer_secret=""
access_token=""
access_token_secret=""

auth = twitter.oauth.OAuth(access_token, access_token_secret,consumer_key, consumer_secret)
twitter_api = twitter.Twitter(auth=auth)

#Users we are following: Nicolas Dupont-Aignan, Francois Asselineau, Francois Fillon, Philippe Poutou, Jacques Cheminade, Emmanuel Macron, Nathalie Arthaud, Marine le Pen, Benoit Hamon, Jean Lassalle, Jean Luc Melenchon.

u = "38170599, 200659061, 551669623, 374392774, 150201042, 1976143068, 1003575248, 217749896, 14389177, 102722347, 80820758"

print >>sys.stderr, 'Retweeting everything for users="%s"' % (u)
twitter_stream = twitter.TwitterStream(auth=twitter_api.auth)
stream = twitter_stream.statuses.filter(follow=u)

for tweet in stream:

    tweetText = tweet['text'].encode('utf-8')
    print tweetText
    user = tweet['user']['screen_name']

    if tweetText.startswith('RT @'):
        pass

    else:

        print tweetText
        twitter_api.statuses.update(status = tweetText)
        time.sleep(60)

谢谢!

1 个答案:

答案 0 :(得分:0)

要过滤推文以仅匹配来自您正在查看的用户的推文,您应该可以执行以下操作:

for tweet in stream:
    tweet_text = tweet['text'].encode('utf-8')
    user_id = tweet['user']['id']
    user_name = tweet['user']['screen_name']

    if user_id in u:
        print '@{}: {}'.format(user_name, tweet_text)
        time.sleep(60)
    else:
        pass

正如评论中所讨论的那样,您不应该从不同的帐户中重新发布推文。如果你在作业中明确要求这样做,也许你应该在答案中强调这一点。