67 lines
2.4 KiB
JavaScript
67 lines
2.4 KiB
JavaScript
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 generateId(x){
|
|
if(!x){x=10};var t = "";var p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
for( var i=0; i < x; i++ )
|
|
t += p.charAt(Math.floor(Math.random() * p.length));
|
|
return t;
|
|
}
|
|
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.mid = generateId()
|
|
copyOfBaseConfig.name = urlParts.hostname
|
|
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()
|