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