как прослушивать новые твиты для @ упоминаний с помощью tweepy? - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в tweepy. И попытался реализовать api, который может прослушивать новые твиты для @ упоминания или экранного имени.

tweets = api.user_timeline(screen_name=username)

Но он не слушает новые твиты. Не могли бы вы помочь мне понять, как это можно реализовать, чтобы каждый твит сопровождался «@mention». api должен немедленно слушать

Ответы [ 3 ]

2 голосов
/ 09 мая 2020
def on_data( self, status ):
    print("Entered on_data()")
    print(status.text, flush = True)
    return True
...
user = api.verify_credentials()
# this is just for getting user. without this also connection can be established
if user:
    print(user.id)
    print('started')
twitter_stream=Stream(auth,StdOutListener())
print('Stream created...')
twitter_stream.filter(follow=[user.id_str], is_async=True)
1 голос
/ 07 мая 2020

Создание StreamListener

Метод on_data в StreamListener Tweepy удобно передает данные из статусов в метод on_status. Создайте класс MyStreamListener, наследующий от StreamListener и переопределяющий on_status.

import tweepy

переопределите tweepy.StreamListener, чтобы добавить logi c в on_status

class MyStreamListener(tweepy.StreamListener):

    def on_status(self, status):
        print(status.text)

Создание потока

Потребность API для потоковой передачи с правильными учетными данными для аутентификации. Когда у нас есть API и прослушиватель состояния, мы можем создать наш объект потока.

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)

start stream

myStream.filter(track=['python'])

myStream.filter(follow=["2211149702"])

Asyn c stream

myStream.filter(track=['python'], is_async=True)

ошибки обработки

class MyStreamListener(tweepy.StreamListener):

    def on_error(self, status_code):
        if status_code == 420:
            #returning False in on_error disconnects the stream
            return False

        # returning non-False reconnects the stream, with backoff.
1 голос
/ 07 мая 2020

Сначала получите их идентификатор пользователя twitter, используя this .
Затем используйте это:

from tweepy import OAuthHandler
from tweepy import Stream
from tweepy import StreamListener

listener = StreamListener()
auth = OAuthHandler(config.API_KEY, config.API_SECRET)
auth.set_access_token(config.ACCESS_TOKEN, config.ACCESS_TOKEN_SECRET)
stream = Stream(auth, listener)
stream.filter(follow=['1102105048253849600']) # user ID for random account
...