B. *_*has 3 python twitter twython
我试图排除retweets并replies在我的Twython搜索中.
这是我的代码:
from twython import Twython, TwythonError
app_key = "xxxx"
app_secret = "xxxx"
oauth_token = "xxxx"
oauth_token_secret = "xxxx"
naughty_words = [" -RT"]
good_words = ["search phrase", "another search phrase"]
filter = " OR ".join(good_words)
blacklist = " -".join(naughty_words)
keywords = filter + blacklist
twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)
search_results = twitter.search(q=keywords, count=100)
Run Code Online (Sandbox Code Playgroud)
问题是该-RT功能并没有真正起作用.
编辑:
我已经尝试了@forge建议,虽然它打印了如果推文不是转推或回复,当我将它们合并到下面的代码中时,机器人仍然会发现推文,转推,引用和回复.
twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret) query = 'beer OR wine AND -filter:retweets AND -filter:replies'
response = twitter.search(q=query, count=100)
statuses = response['statuses']
try:
for tweet in statuses:
try:
twitter.retweet(id = tweet["id_str"])
except TwythonError as e:
print e
except TwythonError as e:
print e
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?有filter:quotes吗?
正确的语法是-filter:retweets.
如果您想搜索条款"search phrase"或"another search phrase"排除转推,那么query应该是:
query = "search_phrase OR another_search_phrase -filter:retweets"
Run Code Online (Sandbox Code Playgroud)
要排除回复,请添加-filter:replies如下:
query = "search_phrase OR another_search_phrase -filter:retweets AND -filter:replies"
Run Code Online (Sandbox Code Playgroud)
这应该是工作,你可以通过检查状态字段验证in_reply_to_status_id和retweeted_status:
in_reply_to_status_id为空,则状态不是回复retweeted_status用Twython:
import twython
twitter = twython.Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
query = 'wine OR beer -filter:retweets AND -filter:replies'
response = twitter.search(q=query, count=100)
statuses = response['statuses']
for status in statuses:
print status['in_reply_to_status_id'], status.has_key('retweeted_status')
# Output should be (None, False) to any status
Run Code Online (Sandbox Code Playgroud)