ktvmanager/app.js

94 lines
2.4 KiB
JavaScript

const got = require('got')
fs = require('fs');
var tableify = require('tableify');
const express = require('express')
const basicAuth = require('express-basic-auth')
const app = express()
const port = 6969
let DNSArray = require('./DNSArray.json')
let streamArrays = require('./streamArray.json')
const gotRequest = async (url) => {
let returnResponse = {};
let options = {}
await got(url, options)
.then((response) => {
returnResponse = response;
})
.catch((error) => {
returnResponse = typeof error.response !== 'undefined' ? error.response : error;
if (typeof returnResponse.body === 'string' && returnResponse.body.substring(0, 1) === '{') {
returnResponse.body = JSON.parse(returnResponse.body);
}
});
return returnResponse;
};
function writeFile(streamArrays) {
fs.writeFileSync('streamArray.json', JSON.stringify(streamArrays), function (err) {
if (err) return console.log(err);
});
}
function splitToArray(DNS) {
DNS = DNS.split(',')
return DNS
}
function mapToStream(DNSList) {
console.log('---Updated URLS---')
for (let index = 0; index < streamArrays.length; index++) {
let element = streamArrays[index];
element.StreamURL = DNSList[index]
console.log(element.StreamName + ' ' + element.StreamURL)
}
writeFile(streamArrays)
console.log('---Updated URLS---')
return streamArrays
}
async function main() {
let requestData
let jointArray = []
for (let index = 0; index < DNSArray.length; index++) {
const url = DNSArray[index];
requestData = await gotRequest(url)
let DNSList = JSON.parse(requestData.body)
DNSList = splitToArray(DNSList.su)
DNSList.forEach(url => {
jointArray.push(url)
});
}
await mapToStream(jointArray)
return streamArrays
}
function arrayToTable(array) {
return tableify(array)
}
async function server() {
app.use(basicAuth({
users: { 'BBLBTV': 'BBLBTV' },
challenge: true,
realm: 'foo',
}))
app.get('/', async (req, res) => {
let fullStreamArray = await main()
let fullStreamHTML = await arrayToTable(fullStreamArray)
res.send(fullStreamHTML)
})
app.listen(port, () => {
console.log(`DNS Logger listening at http://localhost:${port}`)
})
}
server()