Fixes channels:editor script

This commit is contained in:
freearhey 2023-10-15 10:25:55 +03:00
parent 11856161c2
commit 6e2cc42bc6
5 changed files with 23 additions and 7 deletions

View file

@ -17,7 +17,6 @@ const programOptions = program.opts()
const defaultCountry = programOptions.country.toLowerCase()
const newLabel = ` [new]`
let site: string
let options = new Collection()
async function main() {
@ -119,7 +118,7 @@ function save() {
.filter((option: { channel: Channel; delete: boolean }) => !option.delete)
.map((option: { channel: Channel; delete: boolean }) => option.channel)
const xml = new XML(channels, site)
const xml = new XML(channels)
storage.saveSync(filepath, xml.toString())

View file

@ -50,6 +50,11 @@ async function main() {
if (isPromise(parsedChannels)) {
parsedChannels = await parsedChannels
}
parsedChannels = parsedChannels.map((channel: Channel) => {
channel.site = config.site
return channel
})
channels = channels
.mergeBy(
@ -62,7 +67,7 @@ async function main() {
(channel: Channel) => channel.site_id
])
const xml = new XML(channels, config.site)
const xml = new XML(channels)
await storage.save(outputFilepath, xml.toString())

View file

@ -3,11 +3,9 @@ import { Channel } from 'epg-grabber'
export class XML {
items: Collection
site: string
constructor(items: Collection, site: string) {
constructor(items: Collection) {
this.items = items
this.site = site
}
toString() {
@ -18,7 +16,7 @@ export class XML {
const xmltv_id = channel.xmltv_id || ''
const lang = channel.lang || ''
const site_id = channel.site_id || ''
output += ` <channel site="${this.site}" lang="${lang}" xmltv_id="${escapeString(
output += ` <channel site="${channel.site}" lang="${lang}" xmltv_id="${escapeString(
xmltv_id
)}" site_id="${site_id}"${logo}>${escapeString(channel.name)}</channel>\r\n`
})

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="example.com" lang="" xmltv_id="" site_id="140">CNN International</channel>
</channels>

View file

@ -1,6 +1,7 @@
import fs from 'fs-extra'
import { execSync } from 'child_process'
import os from 'os'
import path from 'path'
beforeEach(() => {
fs.emptyDirSync('tests/__data__/output')
@ -25,5 +26,14 @@ describe('channels:editor', () => {
expect(stdout).toContain('Overwrite')
expect(stdout).toContain('Skip')
expect(stdout).toContain("File 'tests/__data__/output/channels.xml' successfully saved")
expect(content('tests/__data__/output/channels.xml')).toEqual(
content('tests/__data__/expected/sites/channels-editor/channels-editor.channels.xml')
)
})
})
function content(filepath: string) {
return fs.readFileSync(path.resolve(filepath), {
encoding: 'utf8'
})
}