[英]Retweeting only tweets with media with tweepy in python
最近我一直在努力开发一个机器人。 但我因为只转发媒体推文而不转发文本而陷入困境。 那么有没有办法过滤掉它们呢? 这是我喜欢和转发的代码部分。
for tweet in tweepy.Cursor(api.search, search).items(nrTweets):
try:
i += 1
print(str(i) + '. Tweet Liked')
tweet.favorite()
time.sleep(30)
print(str(i) + '. Retweeted')
tweet.retweet()
os.system('cls')
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break
要检查推文是否附加了媒体,您可以使用实体 object。 您将访问实体 object,然后检查其下是否有“媒体”键。 当您收到推文时,您可以尝试tweet.entities["media"]
。 如果有媒体附有推文,它将返回有关媒体的信息,如果没有,它将抛出 KeyError。
对于您的场景,您可以将tweet.entities["media"]
放在您的 try 语句下,因此如果没有发生错误,则意味着媒体确实存在,您可以继续喜欢/转发该推文。 对于 KeyError,您应该添加另一个捕获错误的 except 语句以跳过喜欢/转发该推文。
try:
media = tweet.entities["media"]
# like & retweet the tweet
except KeyError:
print("Skipping tweet -- no media.")
# your other except statements
Here's the docs on the Twitter API's entities object: https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/entities#entitiesobject
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.