SATOXのシテオク日記

~ふもっふ、ふもふも~

C#でTwitterアプリを作ってみた

最近、ぼそぼそと使っているTwitter
やや過剰かと思うほど政治や企業でも利用されてきているサービスです。
ちなみに、SATOXのアカウントは以下。フォローうぇるかむです♪


 アカウント: satoxpochi
   URL: http://twitter.com/satoxpochi
んで、Twitterはどう考えてもAndroidアプリやiPhoneアプリ向きなので何かおもしろいTwitterアプリを作ってみたいのですが、そもそもやり方を知らない。
と言うわけでひとまず調べて.NET/C#で作ってみました。

だめついったー!(笑)
まだIDとかパスワードがプログラムに埋め込まれてるので、satoxpochi専用です(笑)。
 
■情報の取得
Twitterから情報を取得するのは簡単。
HTTPリクエストを使って、XML情報が取得できます。
具体的には、以下のような感じ。

(1)":"をBase64エンコードしてベーシック認証ヘッダとする。
(2)以下のURLでHTTP GET
   http://twitter.com/statuses/friends_timeline.xml

これだけです。
ブラウザで上記URLにアクセスするだけでもXMLが取得できます。このとき、ID、パスワードを要求されます。
取得したXMLにはユーザの発言はもちろん、プロフィールや画像などが含まれています。
取得するURLを以下に変えると、そのユーザの発言のみ取得できます。

   http://twitter.com/statuses/user_timeline.xml

■情報の送信
情報の送信も簡単。

(1)":"をBase64エンコードしてベーシック認証ヘッダとする。
(2)以下のURLでHTTP POST (URL Encoded)
   http://twitter.com/statuses/update.xml?status=
   このメッセージもBase64エンコードしておく必要があります。

詳しくは以下のサイトで。

■Twitter API Wiki / FrontPage



余談ですが、この「だめついったー」はその名の通りダメなんですが(笑)、ウェブ上の画像を直接ビットマップにする方法が分からず、一度画像をファイルにしてから読み込んでいます。

    using (WebClient wc = new WebClient()) {
        wc.DownloadFile(url, @"a.jpg");
    }
    using (FileStream fs = new FileStream(@"a.jpg", FileMode.Open, FileAccess.Read)) {
        Image image = Image.FromStream(fs);
    }

ほら、ひどい(笑)。
Image.FromFileはどうもファイルがロックされるままになるというバグがあるみたいでした。
この記事を書きながら以下にしてみましたが、速度はほとんど変わりませんね…。そもそも通信が遅い。

    using (WebClient wc = new WebClient()) {
        this.image = new Bitmap(wc.OpenRead(this.url));
    }

というわけで、だめついったークライアントを作ってみたというお話。
何か特徴のある機能をTwitterと融合させないと、意味ないよなー。
アイディア募集でっす。