API 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)

Проблема в том, что -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

Есть идеи? Есть ли filter:quotes?

1 ответ

Правильный синтаксис -filter:retweets,

Если вы хотите искать на условиях "search phrase" или же "another search phrase" и исключить ретвиты, то query должно быть:

query = "search_phrase OR another_search_phrase -filter:retweets"

Чтобы исключить ответы, добавьте -filter:replies как это:

query = "search_phrase OR another_search_phrase -filter:retweets AND -filter:replies"

Это должно работать, вы можете проверить это, проверив поля состояния 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
Другие вопросы по тегам