1/12/2010 23:27 El Bruno

[VS2010] Utilizando DGML para mostrar información de Twitter

image47dd1de4

Buenas,

hace unos días, mientras analizaba las posibles soluciones para mostrar información de un sistema XYZ; se me ocurrió que era posible utilizar Directed Graph Markup Language (DGML), para crear un gráfico de relaciones entre los elementos del sistema XYZ. Si bien la idea era atrayente, la prueba de concepto fué algo completamente diferente:

Crear un diagrama con Tweets de Twitter, y mostrar la relación de los mismos con los usuarios utilizando DGML.

Lo bueno de la prueba de concepto, es que la codificación fueron 10 minutos, ya que el modelo de objetos es muy natural (see Microsoft.VisualStudio.Progression.GraphModel). No voy a explicar el proyecto completo, ya que lo puedes descargar desde aquí, pero si un par de líneas de código que son las que dan vida al proyecto.

En primer lugar, la búsqueda de ínformación en Twitter. Ya sé, debería ser asíncrono, pero … no me dieron ganas Risa.

   1: public static IEnumerable<TweetElement> Search(string criteria = @"@elbruno")
   2: {
   3:     // search criteria
   4:     var uriString = @"http://search.twitter.com/search.atom?rpp=5&q=" + criteria;
   5:     var searchUri = new Uri(uriString);
   6:     var twitter = new WebClient();
   7:     var res = twitter.DownloadString(searchUri);
   8:     return ConvertXDocumentToTweetCollection(res);
   9: }

En segundo lugar, la creación de un Nodo para DGML, como pueden ver, es bastante simple

   1: static Node CreateTweetNode(TweetElement tweetElement)
   2: {
   3:     if (_graph.Nodes[tweetElement.Id] == null)
   4:     {
   5:         var id = tweetElement.Id;
   6:         var node = new Node(id);
   7:         node.SetValue(_gpLabel, tweetElement.Message);
   8:         node.SetValue(_gpUser, tweetElement.User);
   9:         _graph.Nodes.Add(node);
  10:         return node;
  11:     }
  12:     return null;
  13: }

El resultado en el xml del DGML es similar al siguiente:

   1: <Node Id="@elbruno" Background="#FFFFA500" Label="@elbruno" />

Y finalmente, la capacidad de agregar relaciones entre nodos

   1: var link = new Link(_graph, node, userNode);
   2: _graph.Links.Add(link);

Esto nos brinda la capacida de crear un gráfico DGML, como el de la siguiente imagen.

image

Aquí el código de ejemplo, obviamente se aceptan sugerencias Risa

http://cid-bef06dffdb192125.office.live.com/self.aspx/Code%20Samples/2010%2012%2001%20DGMLTwitter.zip

 

Saludos @ Home

El Bruno

   

Archivado en: ,,
Comparte este post:

# re: [VS2010] Utilizando DGML para mostrar información de Twitter

Thursday, December 02, 2010 7:47 AM by Cristhian Fernández

Muy bueno!! No puedo más que quitarme el sombrero y aplaudir XD

# re: [VS2010] Utilizando DGML para mostrar información de Twitter

Thursday, December 02, 2010 8:57 AM by Jorge Serrano

Muy buena entrada Bruno.

Simple, sencillo y útil. :-)

# re: [VS2010] Utilizando DGML para mostrar información de Twitter

Thursday, December 02, 2010 7:52 PM by El Bruno

@Both gracias a los 2

Salu2