Added support channels logo
This commit is contained in:
		
							parent
							
								
									b8b5411eb3
								
							
						
					
					
						commit
						4d1364ad29
					
				| 
						 | 
					@ -20,7 +20,7 @@ async function main() {
 | 
				
			||||||
  const config = utils.loadConfig(options.config)
 | 
					  const config = utils.loadConfig(options.config)
 | 
				
			||||||
  if (options.debug) console.log(config)
 | 
					  if (options.debug) console.log(config)
 | 
				
			||||||
  const client = utils.createHttpClient(config)
 | 
					  const client = utils.createHttpClient(config)
 | 
				
			||||||
  const channels = utils.parseChannels(options.config, config.channels)
 | 
					  const channels = utils.parseChannels(config, config.channels)
 | 
				
			||||||
  const utcDate = utils.getUTCDate()
 | 
					  const utcDate = utils.getUTCDate()
 | 
				
			||||||
  const dates = Array.from({ length: config.days }, (_, i) => utcDate.add(i, 'd'))
 | 
					  const dates = Array.from({ length: config.days }, (_, i) => utcDate.add(i, 'd'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/utils.js
								
								
								
								
							
							
						
						
									
										16
									
								
								src/utils.js
								
								
								
								
							| 
						 | 
					@ -17,6 +17,7 @@ utils.loadConfig = function (file) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const configPath = path.resolve(file)
 | 
					  const configPath = path.resolve(file)
 | 
				
			||||||
  const config = require(configPath)
 | 
					  const config = require(configPath)
 | 
				
			||||||
 | 
					  config.path = configPath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!config.site) throw new Error("The required 'site' property is missing")
 | 
					  if (!config.site) throw new Error("The required 'site' property is missing")
 | 
				
			||||||
  if (!config.channels) throw new Error("The required 'channels' property is missing")
 | 
					  if (!config.channels) throw new Error("The required 'channels' property is missing")
 | 
				
			||||||
| 
						 | 
					@ -26,6 +27,8 @@ utils.loadConfig = function (file) {
 | 
				
			||||||
  if (!config.parser) throw new Error("The required 'parser' function is missing")
 | 
					  if (!config.parser) throw new Error("The required 'parser' function is missing")
 | 
				
			||||||
  if (typeof config.parser !== 'function')
 | 
					  if (typeof config.parser !== 'function')
 | 
				
			||||||
    throw new Error("The 'parser' property should return the function")
 | 
					    throw new Error("The 'parser' property should return the function")
 | 
				
			||||||
 | 
					  if (config.logo && typeof config.logo !== 'function')
 | 
				
			||||||
 | 
					    throw new Error("The 'logo' property should return the function")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return Object.assign(
 | 
					  return Object.assign(
 | 
				
			||||||
    {},
 | 
					    {},
 | 
				
			||||||
| 
						 | 
					@ -42,11 +45,11 @@ utils.loadConfig = function (file) {
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
utils.parseChannels = function (configPath, channelsFilename) {
 | 
					utils.parseChannels = function (config, channelsFilename) {
 | 
				
			||||||
  if (!channelsFilename) throw new Error('Path to [site].channels.xml is missing')
 | 
					  if (!channelsFilename) throw new Error('Path to [site].channels.xml is missing')
 | 
				
			||||||
  console.log(`Loading '${path.join(path.dirname(configPath), channelsFilename)}'...`)
 | 
					  console.log(`Loading '${path.join(path.dirname(config.path), channelsFilename)}'...`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const channelsPath = path.resolve(path.dirname(configPath), channelsFilename)
 | 
					  const channelsPath = path.resolve(path.dirname(config.path), channelsFilename)
 | 
				
			||||||
  const xml = fs.readFileSync(channelsPath, { encoding: 'utf-8' })
 | 
					  const xml = fs.readFileSync(channelsPath, { encoding: 'utf-8' })
 | 
				
			||||||
  const result = convert.xml2js(xml)
 | 
					  const result = convert.xml2js(xml)
 | 
				
			||||||
  const site = result.elements.find(el => el.name === 'site')
 | 
					  const site = result.elements.find(el => el.name === 'site')
 | 
				
			||||||
| 
						 | 
					@ -58,6 +61,7 @@ utils.parseChannels = function (configPath, channelsFilename) {
 | 
				
			||||||
      const channel = el.attributes
 | 
					      const channel = el.attributes
 | 
				
			||||||
      channel.name = el.elements.find(el => el.type === 'text').text
 | 
					      channel.name = el.elements.find(el => el.type === 'text').text
 | 
				
			||||||
      channel.site = channel.site || site.attributes.site
 | 
					      channel.site = channel.site || site.attributes.site
 | 
				
			||||||
 | 
					      channel.logo = config.logo ? config.logo(channel) : null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return channel
 | 
					      return channel
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
| 
						 | 
					@ -90,7 +94,11 @@ utils.convertToXMLTV = function ({ config, channels, programs }) {
 | 
				
			||||||
  for (let channel of channels) {
 | 
					  for (let channel of channels) {
 | 
				
			||||||
    const id = this.escapeString(channel['xmltv_id'])
 | 
					    const id = this.escapeString(channel['xmltv_id'])
 | 
				
			||||||
    const displayName = this.escapeString(channel.name)
 | 
					    const displayName = this.escapeString(channel.name)
 | 
				
			||||||
    output += `<channel id="${id}"><display-name>${displayName}</display-name></channel>\r\n`
 | 
					    output += `<channel id="${id}"><display-name>${displayName}</display-name>`
 | 
				
			||||||
 | 
					    if (channel.logo) {
 | 
				
			||||||
 | 
					      output += `<icon src="${channel.logo}" />`
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    output += `</channel>\r\n`
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (let program of programs) {
 | 
					  for (let program of programs) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue