超適当にJScriptでtwitter

コンソールから出来ると良いねって感じで適当に作ってみた

cscript /nologo twitter.js

でタイムライン表示

cscript /nologo twitter.js /P:"post message"

でポスト

var url = "http://twitter.com/";
var user = "teramako";
var pass = "xxxxxx";

var methods = {
  friends_timeline: "statuses/friends_timeline.json",
  update: "statuses/update.json"
};
function getJSON(method){
  var req = WScript.CreateObject("Msxml2.XMLHTTP");
  req.open("GET", url +  method, false, user, pass);
  req.send(null);
  onLoad(req.responseText);
}
function post(data){
  var req = WScript.CreateObject("Msxml2.XMLHTTP");
  req.open("POST", url + methods.update, false, user, pass);
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  req.setRequestHeader("X-Twitter-Client", "wsh tweet");
  req.setRequestHeader("X-Twitter-Client", "0.1");
  req.send("status=" + encodeURIComponent(data));
}

var dateParser = (function(){
  var now = new Date();
  var tzMilisec = Math.floor(now.getTimezoneOffset() / 60) * 60 * 60 * 1000;
  var reg = /\+0000 /;
  function zeroPadding(){
    var res = [];
    var num;
    for (var i=0, length=arguments.length; i<length; i++){
      num = arguments[i];
      res.push((num < 10 ? "0": "") + num);
    }
    return res;
  }
  var self = {
    parse: function(str){
      str = str.replace(reg,"");
      return new Date(Date.parse(str) - tzMilisec);
    },
    formatDate: function(date){
      return [
        zeroPadding(date.getFullYear(), date.getMonth() + 1, date.getDate()).join("-"),
        zeroPadding(date.getHours(), date.getMinutes(), date.getSeconds()).join(":")
      ].join(" ");
    },
    toDateString: function(str){
      return this.formatDate(this.parse(str));
    }
  };
  return self;
})();

function onLoad(json){
  var statuses = eval(json);
  for (var i=0, length=statuses.length; i<length; i++){
    var status = statuses[i];
    var date = dateParser.toDateString(status.created_at);
    echo([
      date,
      status.user.screen_name,
      status.text
    ].join(" "));
  }
}

function echo(msg){
  WScript.Echo(msg);
}

function init(args){
  var lenth = args.length;
  if (args.Named.Exists("P")){
    var msg = args.Named.Item("P");
    post(msg);
    echo(msg);
  } else {
    getJSON(methods.friends_timeline);
  }
}

init(WScript.Arguments);