かずきのBlog

C#やJavaやRubyとメモ書き

目次

Blog 利用状況

ニュース

わんくまBlogが不安定になったため、前に書いてたはてなダイアリーにメインを移動します。
かずきのBlog@Hatena
技術的なネタは、こちらにも、はてなへのリンクという形で掲載しますが、雑多ネタははてなダイアリーだけに掲載することが多いと思います。
コメント
プログラマ的自己紹介
お気に入りのツール/IDE
プロフィール
経歴
アクセサリ

書庫

日記カテゴリ

[C#][Twitter]Twitter Web APIを使ってみよう その1

Twitterを書き始めた。
ということで(どういうことで?)TwitterのWebAPIを軽くたたいてみようと思う。

早速C#で新しいプロジェクトをこさえる。
とりあえずは、public_timelineを使ってみるよ。

因みに、API仕様の和訳は、下記サイトを参考にしました。
http://watcher.moe-nifty.com/memo/docs/twitterAPI11.txt

URLと引数がわかればこっちのもん!(引数はとりあえず無視)
XMLやJSONやRSSやAtom形式で戻りは指定できるけど、今回はXMLを選んでみた。

認証は基本認証らしいのでNetworkCredentialを使うことも忘れずに。
ということで、さくっと実装してみた。戻りのXMLには、すごいいっぱい情報が入ってるけど、idとtextだけ抜き出してみた。

using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Xml.Linq;

namespace Com.Wankuma.Kazuki.Twitter
{
    public class Account
    {
        public string UserID { get; set; }
        public string Password { get; set; }
    }

    public class TwitterApi
    {
        private static readonly string PUBLIC_TIMELINE_URL = "http://twitter.com/statuses/public_timeline.xml";

        public Account UserAccount { get; set; }

        public IList<TwitterStatus> PublicTimeline()
        {
            var client = new WebClient();
            // 認証情報セット
            client.Credentials = CreateNetworkCredential();

            // GET!
            var data = client.DownloadData(PUBLIC_TIMELINE_URL);

            var xml = XElement.Parse(Encoding.UTF8.GetString(data));

            // ID, Textを抜きだす
            var result = from status in xml.Descendants("status")
                         select new TwitterStatus
                         {
                             ID = int.Parse(status.Element("id").Value),
                             Text = status.Element("text").Value
                         };
            return result.ToList();
        }

        private NetworkCredential CreateNetworkCredential()
        {
            return new NetworkCredential(UserAccount.UserID, UserAccount.Password);
        }

    }
}

GETで取得してLINQ to XMLでさくっと抜いてるだけだからそんなに難しくない。
簡単なテストプログラムを書いて実験!!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Com.Wankuma.Kazuki.Twitter;
using System.Globalization;

namespace TwitterClientTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string user = Console.ReadLine();
            string pass = Console.ReadLine();

            var twitter = new TwitterApi
            {
                UserAccount = new Account { UserID = user, Password = pass }
            };
            var ret = twitter.PublicTimeline();
            foreach (var r in ret)
            {
                Console.WriteLine("{0}:{1}", r.ID, r.Text);
            }
        }
    }
}

ユーザ名とパスワードを入力するとpublic_timelineのデータをConsoleに出力する。
実行結果は,,,パスワードとかあるからNG!!

投稿日時 : 2008年4月24日 22:32

Feedback

# re: [C#][Twitter]Twitter Web APIを使ってみよう その1 2008/04/25 11:59 ながせ

まったく同じ時期に同じことをしている人がいらっしゃるとはw
ところでLinq to Xmlはおもしろそうですね。

手動(?)でparseしてました。

# re: [C#][Twitter]Twitter Web APIを使ってみよう その1 2008/04/25 12:02 かずき

私も、Blogを拝見して同じことしてる!って思ってましたw
LINQ to XMLを覚えると、DOM操作がすごい大変に感じちゃいますよ~
オススメです。

# re: [C#][Twitter]Twitter Web APIを使ってみよう その1 2008/04/25 13:18 Streetw☆

最初、ながせさんがエントリされたと思いましたw

タイトル  
名前  
Url
コメント