Tomasz Kowalczyk
Tomasz Kowalczyk

Reputation: 1923

How to track Twitter feed in real time?

I am going to make some service, but I am not sure about few things so please help if you could. How to track in real time Twitter feed of some user, and make some action in my service when user put some tag in his feed? I don't want to ready solution, I have to know just what technologies and 3rd party libraries I have to learn?

Upvotes: 0

Views: 2103

Answers (2)

Joe Mayo
Joe Mayo

Reputation: 7513

LINQ to Twitter, http://linqtotwitter.codeplex.com/, supports Twitter streams. Here's an example:

        (from strm in twitterCtx.UserStream
         where strm.Type == UserStreamType.User
         select strm)
        .StreamingCallback(strm =>
        {
            if (strm.Status == TwitterErrorStatus.RequestProcessingException)
            {
                WebException wex = strm.Error as WebException;
                if (wex != null && wex.Status == WebExceptionStatus.ConnectFailure)
                {
                    Console.WriteLine(wex.Message + " You might want to reconnect.");
                }

                Console.WriteLine(strm.Error.ToString());
                return;
            }

            Console.WriteLine(strm.Content + "\n");

            if (count++ >= 25)
            {
                strm.CloseStream();
            }
        })
        .SingleOrDefault();

That's a user stream, but you have similar support for filter, sample, site, and other streams.

Upvotes: 1

L.B
L.B

Reputation: 116138

One solution can be using Twitter's streaming API with a Json parser like Json.Net

EDIT

Here is a sample code

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://stream.twitter.com/1/statuses/sample.json");
webRequest.Credentials = new NetworkCredential("....", "......");
webRequest.Timeout = -1;
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();

StreamReader responseStream = new StreamReader(webResponse.GetResponseStream());
while (true)
{
    var line = responseStream.ReadLine();
    if (String.IsNullOrEmpty(line)) continue;

    dynamic obj = JsonConvert.DeserializeObject(line);

    if (obj.user != null)
        Console.WriteLine(obj.user.screen_name + ": " + obj.text);

}

Upvotes: 1

Related Questions