Experiencias de un programador curioso del SEO
Entradas etiquetadas con twitter
Función de c# para dar formato a un tweet
6 ene
Hara unos días creando un módulo de twitter para el CMS Cuyahoga tuve que desarrollar una función de c# para dar formato a un tweet.
Revisando el twitter he visto el excelente artículo de Alfredo Artiles sobre Expresiones regulares para dar formato a un Tweet , este excelente profesional ha desarrollado funciones para php y javascript y despues de leer su articulo se me ha ocurrido que podria compartir con vosotros la que realice para c#.
Función en c#
const string ScreenNamePattern = @"@([A-Za-z0-9\-_&;]+)";
const string HashTagPattern = @"#([A-Za-z0-9\-_&;]+)";
const string HyperLinkPattern = @"(http://\S+)\s?";
public static string FormatTweetText(string text)
{
string result = text;
if (result.Contains("http://"))
{
var links = new List<string>();
foreach (Match match in Regex.Matches(result, HyperLinkPattern))
{
var url = match.Groups[1].Value;
if (!links.Contains(url))
{
links.Add(url);
result = result.Replace(url, String.Format("<a href=\"{0}\">{0}</a>", url));
}
}
}
if (result.Contains("@"))
{
var names = new List<string>();
foreach (Match match in Regex.Matches(result, ScreenNamePattern))
{
var screenName = match.Groups[1].Value;
if (!names.Contains(screenName))
{
names.Add(screenName);
result = result.Replace("@" + screenName,
String.Format("<a href=\"http://twitter.com/{0}\">@{0}</a>", screenName));
}
}
}
if (result.Contains("#"))
{
var names = new List<string>();
foreach (Match match in Regex.Matches(result, HashTagPattern))
{
var hashTag = match.Groups[1].Value;
if (!names.Contains(hashTag))
{
names.Add(hashTag);
result = result.Replace("#" + hashTag,
String.Format("<a href=\"http://twitter.com/search?q={0}\">#{1}</a>",
HttpUtility.UrlEncode("#" + hashTag), hashTag));
}
}
}
return result;
}
Como siempre para vuestra comodidad tambien os la dejo disponible en pastebin.
Twitter : Destroy Status con REST y cURL en C#
24 dic
Hace unos dias estuve trasteando con la API de twitter concretamente tratando de eliminar mensajes del timeline. Twitter ofrece en su API metodos REST. Revisando estos metodos encontre Destroy Status metodo que permite ser llamado via cURL ; como sabeis habitualmente trabajo con c# así que me puse manos a la obra y encontre la libreria libcurl.NET que permite usar cURL desde una aplicación .NET. Bueno no me enrollo más y os dejo con lo importante un ejemplo de la implementación de un metodo para eliminar mensajes de twitter via Destroy Status en C#.
Codigo de ejemplo de eliminación de un mensaje en twitter via REST y cURL.
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.ReadFunction wf = new Easy.ReadFunction(OnWriteData); string statusid = "idejemplo"; //Id del Status easy.SetOptCURLoption.CURLOPT_URL,"http://twitter.com/statuses/destroy/" + statusid + ".xml"); easy.SetOpt(CURLoption.CURLOPT_POST,true); easy.SetOpt(CURLoption.CURLOPT_USERPWD, _TWITTERUSER + ":" + _TWITTERPASS); string code = easy.Perform().ToString(); easy.Cleanup(); Curl.GlobalCleanup();
Twitter : Evitar el ruido en el timeline de tus followers
15 oct
Muchas veces en twitter tendemos a mantener conversaciones en nuestro timeline con otros usuarios. Estas “conversaciones” provocan un ruido en el resto de nuestros followers , que les puede resultar molesto.
Para evitar el ruido en el timeline de tus followers con nuestras conversaciones 2 bandas existe una sencilla solución:
Como sabeis para que un tweet dirigido a otra persona se muestre en el timeline de nuestros followers , estos deben seguir a la personal a la cual va dirigido.
Teniendo claro este punto la solución pasa por crear un usuario al cual no siguieran ni siguiera a nadie. De este modo he creado la cuenta @noruido . Si escribiis @noruido al principio de vuestro tweet dirigido a otro usuario este tweet solo sera visualizado por el usuario al que va realmente dirigido y ya no sera mostrado en el timeline de nuestros seguidores evitando asi el ruido de nuestra conversación.
Ejemplo:
@noruido Hola @Y0k3s3 , te apetece tomar una cerveza esta tarde¿?