API Twitter: как узнать, какое приложение использовалось для подписки - PullRequest
2 голосов
/ 29 января 2011

В уведомлении по электронной почте мы видим что-то вроде

<username> followed you using <appname>.

Это здорово.Но есть ли какой-нибудь возможный способ узнать имя приложения с помощью API?

1 Ответ

2 голосов
/ 30 января 2011

Я посмотрел через REST API и не смог найти ничего, что бы поддерживало это. Я предполагаю, что это функция twitter.com, которая доступна в API (пока).

Самые логичные места, которые я искал, были статусы / подписчики и дружба / шоу . В обоих случаях не было ничего определенного. Проверяя электронные письма подписчиков для моей учетной записи, я обнаружил несколько подписчиков, которые использовали приложения (такие как PeopleBrowr и SocialOomph) для отслеживания учетной записи. В большинстве случаев источник на их последнем status объекте совпадал с именем приложения, которое использовалось для подписки на меня, но это определенно было не совсем точно.

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

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

Я использовал следующее регулярное выражение (в C #), чтобы найти имя приложения и URI в теле письма:

Match m = Regex.Match(input, @"followed you using\s*<a[^""]+""(?<appUri>[^""]+)""[^>]+>(?<appName>\w*)</a>");

Я использовал m.Groups["appName"].Value, чтобы вытащить имя приложения, и m.Groups["appUri"].Value, чтобы вытащить URI из совпадения.

Чтобы связать информацию о приложении с пользователем, мне также нужно было найти отображаемое имя с помощью:

Match m = Regex.Match(user, @"\(@<a[^>]+>(?<screenName>\w*)</a>\) is now following");

Я использовал m.Groups["screenName"].Value, чтобы извлечь значение из совпадения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...