Update index.js
This commit is contained in:
parent
d945a311cf
commit
b498d24815
100
src/index.js
100
src/index.js
|
@ -1,74 +1,44 @@
|
||||||
#! /usr/bin/env node
|
const axios = require('axios').default
|
||||||
|
|
||||||
const { Command } = require('commander')
|
|
||||||
const program = new Command()
|
|
||||||
const utils = require('./utils')
|
const utils = require('./utils')
|
||||||
const { name, version, description } = require('../package.json')
|
|
||||||
|
|
||||||
program
|
const Result = {
|
||||||
.name(name)
|
events: {
|
||||||
.version(version, '-v, --version')
|
data: () => {},
|
||||||
.description(description)
|
error: () => {},
|
||||||
.option('-c, --config <config>', 'Path to [site].config.js file')
|
done: () => {}
|
||||||
.option('-o, --output <output>', 'Path to output file', 'guide.xml')
|
},
|
||||||
.option('--channels <channels>', 'Path to channels.xml file')
|
on(type, cb) {
|
||||||
.option('--lang <lang>', 'Set default language for all programs', 'en')
|
this.events[type] = cb
|
||||||
.option('--days <days>', 'Number of days for which to grab the program', 1)
|
}
|
||||||
.option('--delay <delay>', 'Delay between requests (in mileseconds)', 3000)
|
}
|
||||||
.option('--debug', 'Enable debug mode', false)
|
|
||||||
.parse(process.argv)
|
|
||||||
|
|
||||||
const options = program.opts()
|
module.exports = {
|
||||||
const config = utils.loadConfig(options)
|
grab: async function (channel, config, cb) {
|
||||||
|
cb(Result)
|
||||||
async function main() {
|
const utcDate = utils.getUTCDate()
|
||||||
console.log('\r\nStarting...')
|
const dates = Array.from({ length: config.days }, (_, i) => utcDate.add(i, 'd'))
|
||||||
|
const queue = []
|
||||||
const channels = utils.parseChannels(config.channels)
|
|
||||||
const utcDate = utils.getUTCDate()
|
|
||||||
const dates = Array.from({ length: config.days }, (_, i) => utcDate.add(i, 'd'))
|
|
||||||
|
|
||||||
const queue = []
|
|
||||||
channels.forEach(channel => {
|
|
||||||
dates.forEach(date => {
|
dates.forEach(date => {
|
||||||
queue.push({ date, channel })
|
queue.push({ date, channel })
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
let programs = []
|
let programs = []
|
||||||
console.log('Parsing:')
|
for (let item of queue) {
|
||||||
for (let item of queue) {
|
await utils
|
||||||
if (options.debug) console.time(' Response Time')
|
.buildRequest(item, config)
|
||||||
await utils
|
.then(request => utils.fetchData(request))
|
||||||
.buildRequest(item, config)
|
.then(response => utils.parseResponse(item, response, config))
|
||||||
.then(utils.fetchData)
|
.then(results => {
|
||||||
.then(async response => {
|
item.programs = results
|
||||||
if (options.debug) console.timeEnd(' Response Time')
|
Result.events['data'](item)
|
||||||
if (options.debug) console.time(' Parsing Time')
|
programs = programs.concat(results)
|
||||||
const results = await utils.parseResponse(item, response, config)
|
})
|
||||||
if (options.debug) console.timeEnd(' Parsing Time')
|
.catch(err => {
|
||||||
programs = programs.concat(results)
|
Result.events['error'](err)
|
||||||
})
|
})
|
||||||
.then(utils.sleep(config.delay))
|
.finally(utils.sleep(config.delay))
|
||||||
.catch(err => {
|
}
|
||||||
console.log(
|
|
||||||
` ${config.site} - ${item.channel.xmltv_id} - ${item.date.format(
|
Result.events['done'](programs)
|
||||||
'MMM D, YYYY'
|
|
||||||
)} (0 programs)`
|
|
||||||
)
|
|
||||||
console.log(` Error: ${err.message}`)
|
|
||||||
if (options.debug) {
|
|
||||||
console.timeEnd(' Response Time')
|
|
||||||
console.timeEnd(' Parsing Time')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const xml = utils.convertToXMLTV({ config, channels, programs })
|
|
||||||
utils.writeToFile(config.output, xml)
|
|
||||||
|
|
||||||
console.log(`File '${config.output}' successfully saved`)
|
|
||||||
console.log('Finish')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
|
||||||
|
|
Loading…
Reference in New Issue