muumoo.jp


ニュース記事検索


過去ログ 2008年06月24日 - ニュース過去ログ

ニュース過去ログ

2008/06/24 管理人日記 JavaScriptで作ったTwitterクライアント

なんかヘンなのができた。

(function(){
  var Twitter = function(id, pass){
    this.id = id;
    this.pass = pass;
  };
  Twitter.prototype.Update = function(message){
    return this._post('http://twitter.com/statuses/update.json', message);
  }
  Twitter.prototype.FriendTimeline = function(){
    return this._post('http://twitter.com/statuses/friends_timeline.json', null);
  }
  Twitter.prototype._post = function(url, data){
    var xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    xmlhttp.open('POST', url, false, this.id, this.pass);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send(data);
    if(xmlhttp.status != 200) WScript.echo(xmlhttp.status + ' ' + xmlhttp.statusText);
    return xmlhttp.responseText;
  }
  
  var args = WScript.Arguments;
  if(args.length < 2) return;
  
  var twitter = new Twitter(args.Item(0), args.Item(1));
  if(args.length == 2){
    var log = {};
    while(true){
      var items = eval(twitter.FriendTimeline());
      items.sort(function(a, b){ return a.id - b.id; });
      for(var i = 0; i < items.length; i++){
        var item = items[i];
        if(log[item.id]) continue;
        
        var t = item.created_at.split(' ');
        var d = new Date(t[1] + ' ' + t[2] + ',' + t[5] + ' ' + t[3] + ' ' + t[4]);
        var line =
          d.getFullYear() + '.' +
          (d.getMonth() + 1) + '.' +
          d.getDate() + ' ' +
          d.getHours() + ':' +
          d.getMinutes() + ' ' +
          item.user.screen_name + '\n' +
          item.text + '\n';
        WScript.echo(line);
        log[item.id] = 1;
      }
      WScript.Sleep(60 * 1000);
    }
  }else{
    var statuses = [];
    for(var i = 2; i < args.length; i++){
      statuses.push(args.Item(i));
    }
    twitter.Update('status=' + encodeURIComponent(statuses.join(' ')));
  }
})();

JavaScriptで作ったTwitterのクライアント。WSHです。twitterclient.jsなどの名前で保存してください。

タイムラインの表示

cscriptを使って、コマンドライン引数にTwitterのIDとパスワードを渡して起動すると、標準出力にTwitterのタイムラインを書き出します。1分ごとに新着チェックをして、見つかればどんどん出力されます。Ctrl + Cで終了。

cscript twitterclient.js user_id p@ssw0rd

こんな感じ。

メッセージの投稿

コマンドライン引数にTwitterのIDとパスワードとメッセージを渡して起動すると、そのメッセージを投稿します。これは以前作ったTwitterに投稿するJavaScriptと同じです。なので今回のコードは以前のコードを完全に置き換えます。

cscript twitterclient.js user_id p@ssw0rd おはよう

こんな感じ。

なんの役に立つ?

わかんない。サンプル実装みたいなもの。改造すればJavaScriptでTwitterのBotを書けそうだ。まあBotを作るのはアイディアとかアルゴリズムとかいろいろ必要だけど、JavaScriptによるBotのためのフレームワークくらいは作れそう。

この記事のURI:
http://muumoo.jp/news/2008/06/24/0twitterclientjs.html


Copyright© 2002-2007 muumoo.jp All Rights Reserved.