Получите последнее упоминание в Twitter от API с Tweepy, избегая ограничения скорости - PullRequest
0 голосов
/ 28 октября 2018

Раньше у меня был какой-то хороший рабочий питон, который автоматически отвечал на прослушиватель потока Tweepy, но из-за изменений в Twitter API в августе он больше не работает.

Я перестраиваю егополучать мое последнее упоминание каждые 10 секунд (в идеале это было бы меньше, чем я хочу делать почти мгновенными ответами) и проверять, было ли это в течение последних десяти секунд ... если это было так, сценарий предполагает, что это новый твити ответы.

from tweepy import OAuthHandler
from tweepy import API
from datetime import datetime, time, timedelta

consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
account_screen_name = ''
account_user_id = '897579556009332736'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
twitterApi = API(auth)

mentions = twitterApi.mentions_timeline(count=1)
now = datetime.now()

for mention in mentions:
    if now < (mention.created_at + timedelta(hours=1) + timedelta(seconds=10)):
        print "there's a mention in the last 10 seconds"
        # do magic reply stuff here!
    else:
        print "do nothing, no recent tweets/the last mention was more than 10 seconds ago so it isn't new"

Это может работать в цикле каждые 12 секунд;но тем не менее, и он достигает предела скорости (т.е. этот метод выше в 10 секунд в конечном итоге достигнет предела скорости) ... так, есть ли лучший способ просто получить самое последнее упоминание, чтобы сделать ответ, основанный наотметить?Мне кажется, что я, вероятно, делаю это очень неэффективно (например, этот метод фактически получает последние 20 упоминаний !!), и у API, вероятно, есть лучший метод, который я мог бы делать чаще, не нарушая ограничения скорости?

1 Ответ

0 голосов
/ 06 ноября 2018

Ответ

Использование tweepy: нет

Использование других методов: да, но не бесплатно

Объяснение

Первое, что нужно понять, это то, что твиттер допускает потоковую передачу твитов в реальном времени через их API.Следующее, что можно использовать их API для отслеживания твитов, содержащих некоторые @TrackedUsername, чтобы отслеживать упоминания в прямом эфире.Однако, хотя первая функция бесплатна для использования через ряд библиотек и API-оболочек, вторая функция - нет.Это одна из их функций, заблокированных за ежемесячной подпиской на свои премиальные или корпоративные API.

Что я знаю, так это то, что люди не используют tweepy в качестве распределенных для использования этих сервисов.Может быть, кто-то там изменил его для личного использования, совместимого с такими функциями, но если так, я не нашел его.Вместо этого люди используют Python Twitter API .

Предположение

Поскольку я никогда не пользовался их премиальными услугами, стоило бы прочитать вто, что я собираюсь сказать дальше, но из того, что я понимаю, протокол аутентификации для их платных услуг немного отличается, что и вызывает проблемы с tweepy.

Вернуться к фактам

По сути это означает, что поиск @TrackedUsername вообще ничего не даст, а поиск TrackedUsername не вернет твиты, содержащие @TrackedUsername или #TrackedUsername (если только он не содержит только TrackedUsernameно тогда вы отслеживаете текст вместо упоминаний).В основном потому, что твиттер хотел получить оплату за эту услугу.

Если вы решите заплатить за эту услугу, то наиболее распространенной реализацией Python является Python Twitter API , как упоминалось выше.Эти функции позволят вам отслеживать твиты, содержащие упоминания, в режиме реального времени с более высоким лимитом скорости и поддержкой дальнейшего поиска в прошлых твитах.

...