地震速報をSkypeで自動応答するJavaScript

ついさっき、地震があった。何度も小さな地震が起こって、大きな地震が来た。

そこで先日作ったSkypeの自動応答スクリプト(autoreply.js)用に、Skypeのチャットに「地震」を含む発言があったときに地震情報を自動応答で返すスクリプトを書いてみた。

earthquake.js

livedoorWeather Hacksで提供している地震情報のRSSを取得して、その中から最新の情報を返却している。前に作った天気予報のやつとほとんど同じ。

function(user, body){
  var xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
  var uri = 'http://weather.livedoor.com/forecast/rss/earthquake.xml';
  xmlhttp.open('GET', uri, false);
  xmlhttp.send(null);
  if(xmlhttp.status != 200) return null;

  var result = [];
  var items = xmlhttp.responseXML.getElementsByTagName('item');
  for(var i = 0; i < items.length; i++){
    var item = items[i];
    var category = item.getElementsByTagName('category')[0].firstChild.nodeValue;
    var desc = item.getElementsByTagName('description')[0].firstChild.nodeValue;
    var link = item.getElementsByTagName('link')[0].firstChild.nodeValue;
    if(!/PR/.test(category)) result.push([desc, link].join('\n'));
    if(1 <= result.length) break;
  }
  return result.join('\n');
}
autoreply.config.json

設定ファイルは以下のような感じ。

[
  {
    body: /地震/,
    file: 'earthquake.js'
  }
]
動かしてみる


簡単に書ける

こういうのが簡単に書ける。autoreply.js は結構おもしろいかも。地震は怖いのでおもしろくないけど。