Интегрируемся с Twitter
- modified:
- reading: 4 minutes
Давайте сначала обозначим, что такое Twitter.
Twitter – это бесплатный интернет-сервис, представляющий собой систему микроблогов, позволяющий пользователям отправлять короткие текстовые заметки (до 140 символов), используя веб-интерфейс, SMS, службы мгновенных сообщений или сторонние программы-клиенты (http://ru.wikipedia.org).
Второй вопрос, а зачем он нужен вообще? Просто общаться с друзьями? Это как вариант, но все таки существуют более удобные сервисы для обмена сообщениями. Скорее всего для публикацией и слежением за новостями (как личные, так и публичные).
Итак, если у вас есть некий интернет магазин, или сайт компании, на котором вы публикуете новости, то можно создать и twitter аккаунт, для того, чтобы дублировать туда информацию о выходе новых публикаций на сайте (как новости, так и поступление новой продукции), или вы можете прикрутить к своему блогу возможность публиковать в твиттере информацию о поступлении новых топиков (есть готовые сервисы, как http://twittsync.com/, работает на Microsoft Azure). Так же можно использовать твиттер “не по назначению” – вы можете создать некий пустой аккаунт, который будет публиковать, к примеру, состояние вашего компьютера, через Direct Message на ваш аккаунт или просто к себе на главную – один из примеров: ваш провайдер требует деньги за белый IP адрес, в противном случае он назначает вам адрес динамически, и каждые 24 часа вас отрубает (это для тех, кто использует роутеры) и вы хотите в любое время (например, с работы) узнавать какой у вас IP адрес для того чтобы зайти на свой домашний компьютер удаленно.
Следующий вопрос, сложно ли это сделать?
Легко! Можно пойти немного по более сложному пути и изучать TwitterAPI самому, тогда вам ни от чего не нужно будет зависеть, для начала тогда нужно воспользоваться статьей – Michael C. Kennedy – Building a Twitter Application in .NET, путь попроще – использовать готовое решение LINQ to Twitter (я им и воспользуюсь).
Итак, давайте начнем с простейшего примера. Создадим консольное приложение со следующим кодом:
using System;
using System.Linq;
using LinqToTwitter;
namespace TwitterIntegration
{
internal class Program
{
private static void Main()
{
// Класс, отвечающий за авторизацию
UsernamePasswordAuthorization auth = new UsernamePasswordAuthorization
{
UserName = "UserName",
Password = "Password"
};
// Основной провайдер для работы с twitter
TwitterContext twitterCtx = new TwitterContext(auth);
// Осуществляем авторизацию
auth.SignOn();
// Берем twit'ы, оставленные нашими друзьями (за кем мы следуем)
var publicTweets =
from tweet in twitterCtx.Status
where tweet.Type == StatusType.Friends
select tweet;
// Печатаем результат на экран
publicTweets.ToList().ForEach(
tweet => Console.WriteLine(
"User Name: {0}, Tweet: {1}", tweet.User.Name, tweet.Text));
auth.SignOff();
Console.WriteLine("Press any key to end this demo.");
Console.ReadKey();
}
}
}
Неправда ли все получается очень просто (не забудьте заменить в вашем случае пользователя и пароль). Причем TwitterContext может так же легко работать и с http://jtweeter.com и http://identi.ca (такими же сайтами для микроблогов).
Но давайте вернемся к нашему сценарию. Мы задумали публиковать наш IP адрес. Первый вопрос – как узнать IP адрес нашего компьютера, для этого можно обратиться к статье Get the IP address in a Windows application на geekpedia – воспользуемся последним способом (который использует сервис http://www.geekpedia.com/ip.php), так как этот способ учитывает так же то, что ваш компьютер может быть направлен через роутер (как у меня):
private static string GetIpAddress()
{
WebClient myWebClient = new WebClient();
Stream myStream = myWebClient.OpenRead("http://www.geekpedia.com/ip.php");
StreamReader myStreamReader = new StreamReader(myStream);
return myStreamReader.ReadToEnd();
}
В данному методе используются классы из именованных пространств System.IO и System.Net (не забудьте подключить using’и). Создаем новый проект – Windows Service, добавим в него сразу информацию об установке (How to: Add Installers to Your Service Application). Воспользуемся классом Timer (из System.Timers), который будет каждые 60 минут вызывать метод, который и будет публиковать IP адрес:
private static void TwittIpAddress(object sender, ElapsedEventArgs e)
{
UsernamePasswordAuthorization auth = new UsernamePasswordAuthorization
{
UserName = "UserName",
Password = "Password"
};
// Основной провайдер для работы с twitter
TwitterContext twitterCtx = new TwitterContext(auth);
// Осуществляем авторизацию
auth.SignOn();
string message = string.Format("My IP Address is: {0}", GetIpAddress());
//Пишем новый tweet
twitterCtx.UpdateStatus(message);
//Отправляем сообщение на аккаунт
twitterCtx.NewDirectMessage("ToUserName", message);
auth.SignOff();
}
В данном методе мы сначала обновляем статус аккаунта UserName, а так же отправляем сообщение пользователю ToUserName. Чтобы установить Windows Service воспользуйтесь утилитой InstallUtil.
Как видите интегрировать свое приложение или веб-сайт с модным Twitter’ом очень просто. Более того, таким способом можно повышать свои шансы во всяческих конкурсах, вроде розыгрыша приглашений в офис Google (а похожих розыгрышей бывает много). Пример приложения можно скачать ниже.