Канал нескольких пользователей Twitter на одном сайте без достижения предела скорости

#php #api #twitter #ratelimit

#php #API #Twitter #ограничение скорости

Вопрос:

У меня есть большое количество пользователей Twitter, которых я хочу повторно зарегистрировать на веб-сайте, используя PHP и кэшируя твиты в MySQL. Однако, похоже, меня ставит в тупик проблема ограничения скорости, когда я когда-либо обращаюсь к API. Кажется, что каждый запрос, который я делаю каждому пользователю, считается запросом, что вполне разумно.

Я замечаю, что другие сайты * успешно выполняют именно это. Как они обходят это, они просто занесены в белый список, или есть какой-то метод, которого мне не хватает?

*http://www.twackle.com/NFL/Aaron-Rodgers_1/tweets

Ответ №1:

Streaming API — это то, что вы ищете, и, более конкретно, метод filter. Фильтр на наименее привилегированном уровне позволит вам следить за 5000 пользователями в режиме реального времени, без необходимости авторизации вашего приложения, и вы также можете отслеживать до 400 ключевых слов, используя этот метод.

Теперь, если вам также нужны исторические твиты, вам придется извлекать их из REST API (параметр count потокового API здесь на самом деле не помогает), но поскольку вы можете получить только последние 3200 твитов для пользователя через REST API, вы можете в значительной степени заполнить всю доступную историю твитов 16 вызовами statuses / user_timeline, передав значение параметра count, равное 200, и соответственно перейти на страницу.

http://api.twitter.com/1/statuses/user_timeline.json?screen_name=barackobamaamp;count=200amp;page=2
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=barackobamaamp;count=200amp;page=3
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=barackobamaamp;count=200amp;page=4

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

Что касается реализации, вас, вероятно, заинтересует Phirehose, потоковый клиентский интерфейс API для PHP.

Ответ №2:

попробуйте сначала авторизоваться, прежде чем получать твиты. это должно увеличить ограничение скорости

Комментарии:

1. Если я правильно понимаю — мне нужно, чтобы каждая учетная запись предоставляла доступ через приложение, я не буду знать пользователей, которые получают этот доступ. Представьте это как ссылку, которую я отправил — потенциально сотни спортивных игроков. Если я даже попытаюсь перехватывать их твиты раз в час, я сразу перейду ограничение скорости в 150?

2. Аутентификация от имени одного пользователя позволит вам получать обновления с любой общедоступной учетной записи с увеличением количества неаутентифицированных запросов со 150 в час до 350 в час.

Ответ №3:

Простой метод объединения нескольких user_timelines — это создать список Twitter и использовать GET /:user/lists/:id/status. Этот единственный запрос API вернет самые последние твиты от всех пользователей в списке.