[limeChat]RSS情報を定期的に読み込んで新着情報のみをぶっこぬく
( javascript )var targetChannel = "#project"; var fileName = "projectSvnRevision.txt"; //------------------------------------ // 実行時 //------------------------------------ var ret = 0; function event::onLoad() { ret = setInterval(getRssForDev, 1000 * 60 * 10); // by 10 min //ret = setInterval(getRssForDev, 1000 * 6); // by 1 min( for test) } //------------------------------------ // 時刻チェック //------------------------------------ function getRssForDev() { var lines = load_textfile_array( fileName ); var currentRevision = parseInt( lines[0] ); var req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { var s = req.responseText; // 2回のタイトル削除 s.match(/<title>(.*)<\/title>/); s = RegExp.rightContext; s.match(/<title>(.*)<\/title>/); s = RegExp.rightContext; for (var i=0; i<100; i++) { if (!s.match(/<title>(.*)<\/title>/)) { break; } s = RegExp.rightContext; var title = RegExp.$1; var ret = title.match(/(\d+):/); //var revision = ret[0]; var revision = RegExp.$1; //var revision = ""; s.match(/<dc:creator>(.*)<\/dc:creator>/); s = RegExp.rightContext; var creator = RegExp.$1; s.match(/<link>(.*)<\/link>/); s = RegExp.rightContext; var link = RegExp.$1; s.match(/<pubDate>(.*)<\/pubDate>/); s = RegExp.rightContext; var pubDate = RegExp.$1; // RSSの最大値を保持しておく if (i == 0) { maxRevision = revision; } if (currentRevision < revision) { send(targetChannel, "===================="); send(targetChannel, "TITLE : " + title); send(targetChannel, "CREATER : " + creator); send(targetChannel, "PUBDATE : " + pubDate); send(targetChannel, "LINK : " + link); } else { break; } } write_file_string(fileName, maxRevision); } } } // ここに読み取りたいURIを記載 var url = 'http://hogehoge.com/rss'; req.open('get', url, true); req.send(''); } //-------------------------------------------- // ファイル読み込み //-------------------------------------------- function load_textfile_array( file_name ){ lines = new Array(); d_file = openFile( file_name , true ); while ( s = d_file.readLine() ) { lines[lines.length] = s; } d_file.close(); return lines; } //-------------------------------------------- // ファイル書き込み //-------------------------------------------- function write_file_string( file_name, string ){ file = openFile( file_name , false ); file.write(string); file.truncate(); file.close(); }
これでイけると思うよ。