Tutorial C# – Interacção com o Twitter

25 Comentários

Olá a todos. Hoje tenho tantas coisas para vos falar que nem sei por onde começar. O tema principal e o programa que vos disponibilizo é um ferramenta que permite ver as mensagens e enviar mensagens para o Twitter. Neste programa utilizei as API disponibilizadas pelo Twitter e uma classe já desenvolvida por Yedda.

API Twitter:

O Twitter disponibiliza vários ficheiros que podemos utilizar para comunicar com o site através de Restful Services, tentei usar directamente mas tive uns problemas, por isso usei a classe do Yedda.

Para aceder aos API basta ir a este site:

Este foi o xml que utilizei, que nos dá toda a informação dos nossos status e dos nossos amigos, bem como os seus dados.

Aplicação:

Para começar temos de adicionar algumas referências:
using System.Net;
using System.IO;
using Yedda;
using System.Web;
using System.Xml;
using System.Xml.Linq;

1º Passo:

Temos de criar uma uma nova instância da classe Twitter que nos é disponibilizada por Yedda
Twitter twitter = new Twitter();

2º Passo:

O nosso login irá ser guardado nas settings do programa, para que possam guardar os dados para a próxima utilização do programa.

Nesta imagem podem ver os novos campos que criei.

Para aceder a este menu basta ir às propriedades do projecto.
Ao fazerem esta alteração será criado o ficheiro app.config que servirá para guardar os dados para a próxima utilização; não se preocupem são automaticamente encriptados.

3º Passo

Adicionei 2 Background Workers, que são Delegates assíncronos (já falámos anteriormente), mas mais user friendly e estão disponíveis na toolbox.

Estes objectos vão permitir fazer o download dos dados do Twitter e o envio de mensagens em threads diferentes o que vai impedir que a aplicação bloqueie nestas operações demoradas. Existem 3 eventos que vamos utilizar o “do_Work” que é executado noutra thread, logo não podemos chamar objectos da form nesse método, temos de passar como argumento, o “progressChanged” que a cada chamada do método “ReportProgress” vai permitir comunicar com os objectos da form e o “RunWorkerCompleted” que é quando o processo assíncrono termina.

4º Passo

De seguida vamos utilizar um método da classe twitter “GetFriendsTimeline” que nos vai disponibilizar todos os dados que precisamos, passamos como parâmetros, o nome de utilizador, a password e o output xml. Depois temos de passar tudo para um XDocument para podermos utilizar Linq para percorrer todos os elementos do XML.

Estas linhas :
TwitterPplWare.Properties.Settings.Default.User
TwitterPplWare.Properties.Settings.Default.Password

São a maneira utilizada para aceder às settings do programa e retornar os dados do utilizador.

Depois com o linq é simples vamos escolher os elementos que sejam descendestes de status, que neste caso são todos, o status é o cabeçalho.
Vamos fazer um loop pelos dados que recebemos e vamos preenchendo a nossa listView com o Objecto “user”, que contém todos os elementos que queremos como user.screen_name, text e data.
Um truque que utilizei para descarregar as imagens foi criar um bitmap a partir de um response stream de http, isto torna o processo de recolha de dados um pouco mais lento.
Outro truque foi a formatação da data, a que vem do twitter vem num formato americano estranho por isso usei isto:
DateTime dtPost = DateTime.ParseExact(data, “ddd MMM dd HH:mm:ss zzzz yyyy”,
System.Globalization.DateTimeFormatInfo.InvariantInfo);

Converto a data e coloco como default.
De um modo geral e muito por cima esta foi a maneira de receber os dados do twitter, espero que explorem o código, porque tem muito mais que isto.

Agora vamos à parte de enviar dados para o Twitter.
Para fazer essa tarefa executamos como sempre noutra thread para não bloquear, estas operações com http são um pouco lentas.

Depois muito simplesmente chamamos a função update do objecto Twitter, passando como parâmetros o user, password e o formato de output neste caso xml.

Em termo de funcionalidades, a aplicação corre minimizada e actualiza os status de 5 em 5 minutos, podem guardar os dados do utilizador nas configurações. E por falar em configurações existe um truque para isto tudo funcionar, visto o Twitter ter bloqueado a forma como o .NET envia as suas mensagens. Para isso basta ir ao ficheiro app.config e colocar esta tag xml.

Apesar de na classe Twitter isto já estar contemplado.

E pronto por hoje é tudo espero que gostem e comentem e agradeço todas as sugestões do post anterior, foram elas que me levaram a fazer este post.

Download: Código Interacção com o Twitter [310.95KB]

Quanto aos outros temas sugeridos ainda irei aqui falar sobre eles. E como sempre se tiverem dúvidas, sugestões para próximos post deixem um comentário. Obrigado a todos e boa programação.

Licença: Freeware
Sistemas Operativos: Windows XP/Vista/Win7
Download: Twitterpplware 1.0.0.0 [64.73KB]
Homepage: Peopleware

Autor: Pplware
Partilhar:

Comentários

25

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Shogun
    Shogun

    Mt interessante, por acaso comecei a usar o twitter a pouco tempo, a ver se dou uma vista de olhos nisto.

    @Henrique

    Sabes trabalhar com rich text box? N estou a conseguir colocar texto numa rich text box se souberes o codigo avisa tks 🙂

    1. Avatar de José Romão
      José Romão

      richTextBox1.Text = “teste”; é isto que queres?

      usa Enviroment.Newline para mudar de linha…

    2. Avatar de Henrique Graça

      Boas,
      O funcionamento é igual á textbox, richtexbox.text =. Ou queres outra coisa?

      Cumprimentos.

      1. Avatar de Shogun
        Shogun

        Esquecime de referir que era a richTextBox do wpf, eu tentei como disseram mas n da :/

        1. Avatar de José Romão
          José Romão

          hum nessse caso talvez te consiga ajudar na parte do XAML .. eu nao conheço mto o wpf.. mas experimenta algo do genero:

          ESTE É O TEXTO

          a segunda linha é Vermelha.

          1. Avatar de José Romão
            José Romão

            ah bolas o xaml é html e ele come isso nao da pra te mostrar :S

            < RichTextBox Margin=”0,0,0,3″ Name=”RichTextBox1″ HorizontalAlignment=”Left”
            VerticalAlignment=”Top” Width=”200″ Height=”200″ >
            < FlowDocument >
            < Paragraph >
            Primeira linha
            < /Paragraph >
            < Paragraph Foreground=”Red” >
            a segunda linha é vermelha
            < /Paragraph >
            < /FlowDocument >
            < /RichTextBox >

            deixa la ver se ele como os greater than e o less than

        2. Avatar de José Romão
          José Romão

          hum e se quizeres em C# dinamicamente é algo do genero:

          FlowDocument meuPainel = new FlowDocument();
          Paragraph para = new Paragraph();
          para.Inlines.Add(new Run(“sou a primeira linha”));
          meuPainel.Blocks.Add(para);

          RichTextBox richTextBox1 = new RichTextBox();
          richTextBox1.Width = 200;
          richTextBox1.Height = 200;
          richTextBox1.Document = meuPainel;

          ContainerPanel.Children.Add(richTextBox1);

          1. Avatar de Shogun
            Shogun

            Ya e isso eu ja tinha feito isso , n estava a dar nd pk eu n tava a receber info nenhuma do webservice e pensava k estava a receber dp e k fiz debug e vi k o erro n era da rich text box, de kk das maneiras obrigado 🙂

    3. Avatar de Hugo Pascoal

      O Twitter pode ser uma ferramenta muito interessante se fizer parte de umna estratégia de comunicação concertada.

      O e-mail marketing é uma ferramenta muito útil e que se pode ser a parceira das redes sociais:

      http://www.e-goi.com/pt_pt/maxcontent/documento/396/noticias//

  2. Avatar de Vit0r
    Vit0r

    O código fonte é que era…

    1. Avatar de Henrique Graça

      O código está disponivel para download.

  3. Avatar de José Romão
    José Romão

    @Henrique bom programa.. util rapido e eficaz. espero que o twiter da geniouz venha a ter um igual cof.

  4. Avatar de Hugo Sousa

    Bom tutorial… tinha-me era dado mais jeito à umas semanas atrás quando precisei de algo semelhante para o site de uma campanha política, mas pronto. 🙂

    ____________________

    http://www.slothminds.com/

  5. Avatar de Tiago gitz

    Excelente tutorial estava mesmo a precisar de um tutorial que utilizasse XML. Obrigado!

    http://generallolada.pt.vu

  6. Avatar de João Fonseca
    João Fonseca

    Gostava de saber como te expor a minha ideia a ver se é possível dares-me umas dicas 🙂

    Bom trabalho.

  7. Avatar de Henrique Graça
    Henrique Graça

    Podes fazê-lo por aqui ou então envia-me uma mensagem pessoal no forum o meu utilizador é divhenr.

    Cumprimentos

  8. Avatar de André Rocha
    André Rocha

    Excelente artigo para não variar muito.

    Queria perguntar e sugerir alguma coisas…

    Quando é que fazem um tutorial a explicar como distribuir uma aplicação programada em C#? (fazer um .exe)

    De C# Tambem podia fazer ume exmplo de conecção bluetooth 😛
    Sugestões:
    Tutoriais de C\C++
    Tutoriais de Vb.Net e Asp.Net
    Tambem podiam por de visual basic 😀

    1. Avatar de Shogun
      Shogun

      O exe tens na pasta bin mas se keres fazer um setup basta criares um projecto do tipo setup na msm solucao do teu projecto. Experimenta é mt simples.

    2. Avatar de Henrique Graça
      Henrique Graça

      Como mencionou o Shogun é só carregar em build e automáticamente é gerado um executável na pasta bin\debug

  9. Avatar de Hélio Félix
    Hélio Félix

    E já agora, um tutorial para criar um cliente twitter em Netbeans 6.5 (também consegui fazer no 6.1).

    http://www.netbeans.org/kb/docs/websvc/twitter-swing.html

  10. Avatar de Leandro Prado

    Boa Tarde

    Estou tentanto usar essa biblioteca porém esta me retornando o seguinte erro:

    The remote server returned an error: (401) Unauthorized.

    Meu código esta assim:

    Twitter twitter = new Twitter();
    XmlDocument xmldocument = twitter.GetUserTimelineAsXML(“user”, “senha”, Twitter.OutputFormatType.XML);

    sabe o que pode ser?? o que esta errado??

    Obrigado!

  11. Avatar de Pedro S
    Pedro S

    Boas Henrique

    Fiz o download da aplicação mas aparece sempre o erro que os dados user e pass não estão correctos

    O que posso alterar para dar?

    1. Avatar de Pedro Martinho
      Pedro Martinho

      estou com o mesmo problema…

      ja tive a ver api e o codigo do programa e nao consegui resolver… alguem que percebesse mais podia ajudar…

      1. Avatar de Henrique Graça
        Henrique Graça

        Viva,

        Desde a criação deste tutorial o Twitter mudou a maneira como invocamos a API, desse modo este tutorial fica sem efeito.

        Cumprimentos.

  12. Avatar de Rleal
    Rleal

    Existe alguma API que funcione? Já tentei yodda, e da sempre problema no httpUtility.