Как передать twitter упоминания с tweepy?

В настоящее время я использую следующий код, это получает твит, а затем передает его функции, которая обрабатывает. Однако это не в реальном времени.

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
mentions = api.mentions_timeline(count=1)
for mention in mentions:
   processText()

Я также посмотрел на потоковые твиты, но мне еще не удалось найти способ передать упоминания.

Ответ 1

Вы можете использовать Streaming API для фильтрации твитов, содержащих @mentions. Когда вы фильтруете поток с помощью параметра трека, отфильтруйте имя пользователя, которое вас интересует, включив имя пользователя в свой параметр track, например:

stream.filter(track=['twitterapi'])

Это вернет вам все твиты, содержащие строку "twitterapi" в режиме реального времени, включая @mentions (т.е. "@twitterapi"). Подробнее о том, как это работает, см. В Twitter Streaming API track параметр. Затем вы можете использовать результат JSON, чтобы использовать только те твиты, которые на самом деле представляют собой пользователя, который вас интересует. Результат JSON выглядит следующим образом:

{"retweet_count":0,"text":"Man I like me some @twitterapi","entities":{"urls":[],"hashtags":[],"user_mentions":[{"indices":[19,30],"name":"Twitter API","id":6253282,"screen_name":"twitterapi","id_str":"6253282"}]},"retweeted":false,"in_reply_to_status_id_str":null,"place":null,"in_reply_to_user_id_str":null,"coordinates":null,"source":"web","in_reply_to_screen_name":null,"in_reply_to_user_id":null,"in_reply_to_status_id":null,"favorited":false,"contributors":null,"geo":null,"truncated":false,"created_at":"Wed Feb 29 19:42:02 +0000 2012","user":{"is_translator":false,"follow_request_sent":null,"statuses_count":142,"profile_background_color":"C0DEED","default_profile":false,"lang":"en","notifications":null,"profile_background_tile":true,"location":"","profile_sidebar_fill_color":"ffffff","followers_count":8,"profile_image_url":"http:\/\/a1.twimg.com\/profile_images\/1540298033\/phatkicks_normal.jpg","contributors_enabled":false,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/365782739\/doof.jpg","description":"I am just a testing account, following me probably won't gain you very much","following":null,"profile_sidebar_border_color":"C0DEED","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1540298033\/phatkicks_normal.jpg","default_profile_image":false,"show_all_inline_media":false,"verified":false,"profile_use_background_image":true,"favourites_count":1,"friends_count":5,"profile_text_color":"333333","protected":false,"profile_background_image_url":"http:\/\/a3.twimg.com\/profile_background_images\/365782739\/doof.jpg","time_zone":"Pacific Time (US & Canada)","created_at":"Fri Sep 09 16:13:20 +0000 2011","name":"fakekurrik","geo_enabled":true,"profile_link_color":"0084B4","url":"http:\/\/blog.roomanna.com","id":370773112,"id_str":"370773112","listed_count":0,"utc_offset":-28800,"screen_name":"fakekurrik"},"id":174942523154894848,"id_str":"174942523154894848"}

Это беспорядок, но если вы посмотрите в объекте "entities", вы увидите "user_mentions":

"user_mentions":[{"indices":[19,30],"name":"Twitter API","id":6253282,"screen_name":"twitterapi","id_str":"6253282"}]

Затем под "screen_name" вы видите "twitterapi", показывая, что пользователь @twitterapi был @mentioned.