fenrirで気温を確認する

グーグルが天気も教えてくれるようになったのと、WSHでもjQueryが使いたかったのでやってみた。

WSHでDOM (Shibuya.js in Kyoto) - てっく煮ブログWSHでDOMは使えないとなってたけど、
ActiveXObjectのhtmlfileでいけることがわかった。

以下のコードを拡張子をwsfでfenrirのcmdフォルダに保存(例えば「kion.wsf」とか)

<job>
  <script language="JScript">
    var html = new ActiveXObject("htmlfile");
    var window = html.parentWindow;
    var navigator = window.navigator;
    var document = window.document;
    var location = document.location;
    window.ActiveXObject = {};
  </script>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" />
  <script language="JScript">
    var url = "http://www.google.co.jp/search?q=天気 "+ WScript.Arguments.item(0);
    var $ = window.$;
    
    $.ajax({
      url: url,
      async: false,
      complete: function(res){
        html.write(res.responseText);
        
        WScript.Echo($('div.e b:contains("°C")').text());
      }
    });
  </script>
</job>
ちょっと説明
  • 「html = new ActiveXObject("htmlfile")」でwindowオブジェクトを作って、windowとかdocumentを定義しなおす。
  • jQueryの通信が終わったところで、「html.write(res.responseText)」でDOMが使えるようにする。
  • ただし、WSHではsetIntervalが動作しないので、非同期通信が使えなかった。
  • wsfについては、http://msdn.microsoft.com/ja-jp/library/cc392507.aspx

fenrirの設定

dataフォルダにある「instant.ini」に以下を追加(コマンドを「/k」とする場合)

/k=""%cmddir\kion.wsf" 京都"

これで、fenrirで「/k」と入力すると、気温が表示される。