加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 02:09:12 所属栏目:百科 来源:网络整理
导读:使用coffeescript定时每隔一个小时从服务器上下载xml和plist文件,存到本地并解析为json文件。 ###* 每隔一个小时从服务器下载最新的xml和plist并解析为json###fs = require('fs')url = require('url')http = require('http')plist = require('plist')schedu
使用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').parseString

initConfig = ()->
	initXMLConfig()
	initPlistConfig()

#下载xml并解析为Json文件
initXMLConfig = () ->
	file_url = "https://服务器地址/config.xml"
	filepath = "./config.xml"
	jsonFilepath = "./config.json"
	rule = new schedule.RecurrenceRule()
	#每小时的第0分钟第1秒执行
	rule.second = 1
	rule.minute = 0
	rule.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 200
				file = 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 xml
							parseString(xml,{explicitArray: false,ignoreAttrs: true,trim: true},(err,result) ->
								if not err
									fs.writeFileSync(jsonFilepath,JSON.stringify(result),'utf-8')
									console.log("write to json success:#{jsonFilepath}")
							)
					)
				)
			else
				console.log("access " + file_url + " is error,statusCode is #{res.statusCode}")
		)
	)

#下载plist文件使用plist模块解析为json
initPlistConfig = () ->
	file_url = "https://服务器地址/config.plist"
	filepath = "./config.plist"
	jsonFilepath = "./config1.json"
	rule = new schedule.RecurrenceRule()
	#每小时的第0分钟第10秒执行
	rule.second = 10
	rule.minute = 0
	rule.hour = [0..23]
	schedule.scheduleJob(rule,(res)->
			if res.statusCode is 200
				file = fs.createWriteStream(filepath)
				res.on('data',(data)->
					file.write(data)
				).on('end','utf-8')
						if xml
							result = plist.parse(xml)
							fs.writeFileSync(jsonFilepath,'utf-8')
							console.log("write to json success:#{jsonFilepath}")
					)
				)
			else
				console.log("access " + file_url + " is error,statusCode is #{res.statusCode}")
			)
		)

exports.initConfig = initConfig

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读