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)
 | 
			
		||||
  if (options.debug) console.log(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 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 config = require(configPath)
 | 
			
		||||
  config.path = configPath
 | 
			
		||||
 | 
			
		||||
  if (!config.site) throw new Error("The required 'site' 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 (typeof config.parser !== '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(
 | 
			
		||||
    {},
 | 
			
		||||
| 
						 | 
				
			
			@ -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')
 | 
			
		||||
  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 result = convert.xml2js(xml)
 | 
			
		||||
  const site = result.elements.find(el => el.name === 'site')
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +61,7 @@ utils.parseChannels = function (configPath, channelsFilename) {
 | 
			
		|||
      const channel = el.attributes
 | 
			
		||||
      channel.name = el.elements.find(el => el.type === 'text').text
 | 
			
		||||
      channel.site = channel.site || site.attributes.site
 | 
			
		||||
      channel.logo = config.logo ? config.logo(channel) : null
 | 
			
		||||
 | 
			
		||||
      return channel
 | 
			
		||||
    })
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +94,11 @@ utils.convertToXMLTV = function ({ config, channels, programs }) {
 | 
			
		|||
  for (let channel of channels) {
 | 
			
		||||
    const id = this.escapeString(channel['xmltv_id'])
 | 
			
		||||
    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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue