Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

TweetSharp: Acessando o Twitter com C#


twitter_bird

Fala galera, vou demonstrar como é simples acessar o Twitter utilizando a biblioteca TweetSharp e suas interfaces fluentes.Primeiramente baixe as dlls do Tweetsharp aqui aqui no Codeplex.O TweetSharp é uma api que fornece acesso de forma simplificada à API do Twitter.Vamos então criar um projeto utilizando o Visual Studio 2010 beta 2 porém estou utilizando a versão 3.5 para o projeto, pois existem alguns conflitos com o framework 4.Estou criando uma Console Application, para que possamos ver uma saída gráfica do nosso código.Vamos adicionar a referência para o TweetSharp em nosso projeto, como mostra a figura abaixo:Adicionando Referencias TweetSharpFeito isso vou criar 2 métodos. Um para para buscar os 10 últimos tweets da minha lista e o outro para exibir a lista de amigos.Primeiramente inclua estes 3 statements using:

using Dimebrain.TweetSharp.Model;
    using Dimebrain.TweetSharp.Fluent;
    using Dimebrain.TweetSharp.Extensions;

No código acima estamos adicionando as referências para usarmos os métodos de extensão e as interfaces fluentes do TweetSharp e também as classes do mesmo.Abaixo temos o método que busca os 10 últimos tweets:

private static IEnumerable<TwitterStatus> Obter10UltimosTweets()
{
    var search = FluentTwitter
        .CreateRequest()
        .AuthenticateAs("seuLogin", "suaSenha")
        .Statuses()
        .OnHomeTimeline()
        .Take(10)
        .AsJson();

    var result = search.Request();
    return result.AsStatuses();
}

Por utilizar interfaces fluentes O código fica bem simples e legível. Na linha 4 criamos um request utilizando a api do TweetSharp. Na linha 5 dizemos quais credenciais devem ser utilizadas. Na linha 6 informamos que queremos trabalhar com os “statuses” ou seja, os tweets. Na linha 7 dizemos que queremos os tweets que aparecem na nossa home, ou seja, de quem seguimos e os nossos também. Já na linha 8 pegamos apenas 10 destes tweets e os formatamos em Json na linha 9.O código em si é realmente bastante legível.E o nosso método main fica assim:

static void Main(string[] args)
{
    var tweets = Obter10ultimosTweets();

    foreach(var tweet in tweets)
    {
        Console.WriteLine("@{0} {1}\n\n", tweet.User.ScreenName, tweet.Text);
    }

    Console.ReadKey();
}

Este método é bem simples, apenas itera os elementos retornados pelo método anterior. As propriedades do objeto TwitterStatus podem ser conferidas com ajuda do intellisense ou então pressionado F12 sobre a classe.O resultado pode ser visto na imagem abaixo:10 Últimos Tweets com TweetSharpPara exibir a lista de amigos vou utilizar o método abaixo:

public static IEnumerable<TwitterUser> ObterListaDeAmigos()
{
    var search = FluentTwitter
        .CreateRequest()
        .AuthenticateAs("seuLogin", "suaSenha")
        .Users()
        .GetFriends()
        .AsJson();

    var result = search.Request();
    return result.AsUsers();
}

A diferença neste código para o anterior está na linha 6 onde informamos que queremos trabalhar com os usuários, e na linha 7 onde dizemos que queremos obter os friends, ou seja, as pessoas que estamos seguindo.E alteramos o código do método main de forma que fique assim;

static void Main(string[] args)
{
    var tweets = Obter10ultimosTweets();

    foreach(var tweet in tweets)
    {
        Console.WriteLine("@{0} {1}\n\n", tweet.User.ScreenName, tweet.Text);
    }

    Console.WriteLine("\n\nLISTA DE AMIGOS\n\n");
    var amigos = ObterListaDeAmigos();

    foreach(var amigo in amigos)
    {
        Console.WriteLine("@{0}", amigo.ScreenName);
    }

    Console.ReadKey();
}

O resultado pode ser conferido na imagem abaixo:Lista de amigos com TweetSharpBom pessoal, é basicamente isso. A biblioteca TweetSharp oferece ainda diversos outros recursos, tudo que é necessário para se fazer um bom trabalho com o twitter.Dúvidas, sugestões, reclamações: os comentários estão aí pra isso.

Att, Vinicius Quaiato.

Voltar

Fork me on GitHub