wip
This commit is contained in:
		
							parent
							
								
									d39781b3c7
								
							
						
					
					
						commit
						a1149e9836
					
				| 
						 | 
				
			
			@ -4,6 +4,7 @@ const { Command } = require('commander')
 | 
			
		|||
const program = new Command()
 | 
			
		||||
const utils = require('./utils')
 | 
			
		||||
const { name, version, description } = require('../package.json')
 | 
			
		||||
const path = require('path')
 | 
			
		||||
 | 
			
		||||
program
 | 
			
		||||
  .name(name)
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +21,7 @@ async function main() {
 | 
			
		|||
  const config = utils.loadConfig(options.config)
 | 
			
		||||
  if (options.debug) console.log(config)
 | 
			
		||||
  const client = utils.createHttpClient(config)
 | 
			
		||||
  const channels = utils.parseChannels(config.channels)
 | 
			
		||||
  const channels = utils.parseChannels(options.config, config.channels)
 | 
			
		||||
  const utcDate = utils.getUTCDate()
 | 
			
		||||
  const dates = Array.from({ length: config.days }, (_, i) => utcDate.add(i, 'd'))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -71,8 +72,6 @@ async function main() {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  const xml = utils.convertToXMLTV({ config, channels, programs })
 | 
			
		||||
  const outputDir = utils.getDirectory(config.output)
 | 
			
		||||
  utils.createDir(outputDir)
 | 
			
		||||
  utils.writeToFile(config.output, xml)
 | 
			
		||||
 | 
			
		||||
  console.log(`File '${config.output}' successfully saved`)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										31
									
								
								src/utils.js
								
								
								
								
							
							
						
						
									
										31
									
								
								src/utils.js
								
								
								
								
							| 
						 | 
				
			
			@ -10,13 +10,13 @@ dayjs.extend(utc)
 | 
			
		|||
axiosCookieJarSupport(axios)
 | 
			
		||||
 | 
			
		||||
const utils = {}
 | 
			
		||||
 | 
			
		||||
utils.loadConfig = function (file) {
 | 
			
		||||
  if (!file) throw new Error('Path to [site].config.js is missing')
 | 
			
		||||
  console.log(`Loading '${file}'...`)
 | 
			
		||||
 | 
			
		||||
  const configPath = path.resolve(process.cwd(), file)
 | 
			
		||||
  const configPath = path.resolve(file)
 | 
			
		||||
  const config = require(configPath)
 | 
			
		||||
  const channelsPath = path.resolve(this.getDirectory(configPath), `${config.site}.channels.xml`)
 | 
			
		||||
 | 
			
		||||
  return Object.assign(
 | 
			
		||||
    {},
 | 
			
		||||
| 
						 | 
				
			
			@ -26,20 +26,18 @@ utils.loadConfig = function (file) {
 | 
			
		|||
      days: 1,
 | 
			
		||||
      cookie: '',
 | 
			
		||||
      lang: 'en',
 | 
			
		||||
      channels: channelsPath,
 | 
			
		||||
      delay: 3000
 | 
			
		||||
    },
 | 
			
		||||
    config
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
utils.parseChannels = function (file) {
 | 
			
		||||
  if (!file) throw new Error('Path to [site].channels.xml is missing')
 | 
			
		||||
  console.log(`Loading '${file}'...`)
 | 
			
		||||
utils.parseChannels = function (configPath, channelsFilename) {
 | 
			
		||||
  if (!channelsFilename) throw new Error('Path to [site].channels.xml is missing')
 | 
			
		||||
  console.log(`Loading '${path.join(path.dirname(configPath), channelsFilename)}'...`)
 | 
			
		||||
 | 
			
		||||
  const xml = fs.readFileSync(path.resolve(__dirname, file), {
 | 
			
		||||
    encoding: 'utf-8'
 | 
			
		||||
  })
 | 
			
		||||
  const channelsPath = path.resolve(path.dirname(configPath), channelsFilename)
 | 
			
		||||
  const xml = fs.readFileSync(channelsPath, { encoding: 'utf-8' })
 | 
			
		||||
  const result = convert.xml2js(xml)
 | 
			
		||||
  const site = result.elements.find(el => el.name === 'site')
 | 
			
		||||
  const channels = site.elements.find(el => el.name === 'channels')
 | 
			
		||||
| 
						 | 
				
			
			@ -122,17 +120,12 @@ utils.convertToXMLTV = function ({ config, channels, programs }) {
 | 
			
		|||
  return output
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
utils.getDirectory = function (file) {
 | 
			
		||||
  return path.dirname(file)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
utils.createDir = function (dir) {
 | 
			
		||||
  if (!fs.existsSync(path.resolve(dir))) {
 | 
			
		||||
    fs.mkdirSync(path.resolve(dir))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
utils.writeToFile = function (filename, data) {
 | 
			
		||||
  const dir = path.resolve(path.dirname(filename))
 | 
			
		||||
  if (!fs.existsSync(dir)) {
 | 
			
		||||
    fs.mkdirSync(dir, { recursive: true })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fs.writeFileSync(path.resolve(filename), data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue