使用coffeescript定时任务下载服务器xml和plist文件解析为json

来源:互联网 发布:路由器访客网络限制 编辑:程序博客网 时间:2024/05/17 05:52
使用coffeescript定时每隔一个小时从服务器上下载xml和plist文件,存到本地并解析为json文件。
###* 每隔一个小时从服务器下载最新的xml和plist并解析为json###fs = require('fs')url = require('url')http = require('http')plist = require('plist')schedule = require('node-schedule')parseString = require('xml2js').parseStringinitConfig = ()->initXMLConfig()initPlistConfig()#下载xml并解析为Json文件initXMLConfig = () ->file_url = "https://服务器地址/config.xml"filepath = "./config.xml"jsonFilepath = "./config.json"rule = new schedule.RecurrenceRule()#每小时的第0分钟第1秒执行rule.second = 1rule.minute = 0rule.hour = [0..23]schedule.scheduleJob(rule, ()->options = {host: url.parse(file_url).host,port: 80,path: url.parse(file_url).pathname}http.get(options, (res)->if res.statusCode is 200file = fs.createWriteStream(filepath)res.on("data", (data)->file.write(data)).on("end", ()->file.end()file.on('finish', ()->console.log(file_url + " downloaded success!")xml = fs.readFileSync(filepath, 'utf-8')if xmlparseString(xml, {explicitArray: false, ignoreAttrs: true, trim: true}, (err, result) ->if not errfs.writeFileSync(jsonFilepath, JSON.stringify(result), 'utf-8')console.log("write to json success:#{jsonFilepath}"))))elseconsole.log("access " + file_url + " is error, statusCode is #{res.statusCode}")))#下载plist文件使用plist模块解析为jsoninitPlistConfig = () ->file_url = "https://服务器地址/config.plist"filepath = "./config.plist"jsonFilepath = "./config1.json"rule = new schedule.RecurrenceRule()#每小时的第0分钟第10秒执行rule.second = 10rule.minute = 0rule.hour = [0..23]schedule.scheduleJob(rule, ()->options = {host: url.parse(file_url).host,port: 80,path: url.parse(file_url).pathname}http.get(options, (res)->if res.statusCode is 200file = fs.createWriteStream(filepath)res.on('data', (data)->file.write(data)).on('end', ()->file.end()file.on('finish', ()->console.log(file_url + " downloaded success!")xml = fs.readFileSync(filepath, 'utf-8')if xmlresult = plist.parse(xml)fs.writeFileSync(jsonFilepath, JSON.stringify(result), 'utf-8')console.log("write to json success:#{jsonFilepath}")))elseconsole.log("access " + file_url + " is error, statusCode is #{res.statusCode}")))exports.initConfig = initConfig


0 0