Tutorial C# – Interacção com o Twitter
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
Este artigo tem mais de um ano
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 🙂
richTextBox1.Text = “teste”; é isto que queres?
usa Enviroment.Newline para mudar de linha…
Boas,
O funcionamento é igual á textbox, richtexbox.text =. Ou queres outra coisa?
Cumprimentos.
Esquecime de referir que era a richTextBox do wpf, eu tentei como disseram mas n da :/
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.
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
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);
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 🙂
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//
O código fonte é que era…
O código está disponivel para download.
@Henrique bom programa.. util rapido e eficaz. espero que o twiter da geniouz venha a ter um igual cof.
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/
Excelente tutorial estava mesmo a precisar de um tutorial que utilizasse XML. Obrigado!
http://generallolada.pt.vu
Gostava de saber como te expor a minha ideia a ver se é possível dares-me umas dicas 🙂
Bom trabalho.
Podes fazê-lo por aqui ou então envia-me uma mensagem pessoal no forum o meu utilizador é divhenr.
Cumprimentos
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 😀
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.
Como mencionou o Shogun é só carregar em build e automáticamente é gerado um executável na pasta bin\debug
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
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!
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?
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…
Viva,
Desde a criação deste tutorial o Twitter mudou a maneira como invocamos a API, desse modo este tutorial fica sem efeito.
Cumprimentos.
Existe alguma API que funcione? Já tentei yodda, e da sempre problema no httpUtility.