diff --git a/tools/createMonitorsJsonFromTxt.js b/tools/createMonitorsJsonFromTxt.js new file mode 100644 index 00000000..aee91a6c --- /dev/null +++ b/tools/createMonitorsJsonFromTxt.js @@ -0,0 +1,58 @@ +const fs = require('fs') +const URL = require('url') +const monitorBasePath = process.argv[2]; +const importFilePath = process.argv[3]; +if(!importFilePath){ + console.error('Missing Import File Path.') + return console.error(`Example Use : node ./createMonitorsJsonFromTxt.js MONITOR_BASE.json PLAIN_LIST.txt`) +} +const monitorBase = require(monitorBasePath) +function getUrlProtocol(urlString){ + let modifiedUrlString = `${urlString}`.split('://') + const originalProtocol = `${modifiedUrlString[0]}` + return originalProtocol +} +function modifyUrlProtocol(urlString,newProtocol){ + let modifiedUrlString = `${urlString}`.split('://') + const originalProtocol = `${modifiedUrlString[0]}` + modifiedUrlString[0] = newProtocol; + modifiedUrlString = modifiedUrlString.join('://') + return modifiedUrlString +} +function getUrlParts(urlString){ + const originalProtocol = getUrlProtocol(urlString) + const modifiedUrlString = modifyUrlProtocol(urlString,'http') + const url = URL.parse(modifiedUrlString) + const data = {} + Object.keys(url).forEach(function(key){ + const value = url[key]; + if(value && typeof value !== 'function')data[key] = url[key]; + }); + data.href = `${urlString}` + data.origin = modifyUrlProtocol(data.origin,originalProtocol) + data.protocol = `${originalProtocol}:` + return data +} +function makeConfig(streamUrl){ + // streamUrl = 'rtsp://1.1.1.1:554/' + const copyOfBaseConfig = Object.assign({},monitorBase) + const urlParts = getUrlParts(streamUrl) + copyOfBaseConfig.host = urlParts.hostname + copyOfBaseConfig.port = urlParts.port + copyOfBaseConfig.path = urlParts.pathname + copyOfBaseConfig.details.auto_host = streamUrl + copyOfBaseConfig.details.rtsp_transport = 'tcp' + return copyOfBaseConfig +} + +function run(){ + const importList = fs.readFileSync(importFilePath,'utf8').split('\n') + const newMonitorsList = [] + const fileName = `${importFilePath}.json` + importList.forEach((streamUrl) => { + newMonitorsList.push(makeConfig(streamUrl)) + }) + console.log(`New JSON written to ${fileName}`) + fs.writeFileSync(fileName,JSON.stringify(newMonitorsList)); +} +run()