Add support for absolute output path

Resolves https://github.com/iptv-org/epg/issues/2342
This commit is contained in:
freearhey 2024-12-15 18:08:01 +03:00 committed by Ismaël Moret
parent 60e246080b
commit 0b2e2db664
2 changed files with 12 additions and 5 deletions

View file

@ -1,6 +1,7 @@
import { Collection, Logger, DateTime, Storage, Zip } from '@freearhey/core'
import { Channel } from 'epg-grabber'
import { XMLTV } from '../core'
import path from 'path'
type GuideProps = {
channels: Collection
@ -22,7 +23,7 @@ export class Guide {
this.channels = channels
this.programs = programs
this.logger = logger
this.storage = new Storage()
this.storage = new Storage(path.dirname(filepath))
this.filepath = filepath
this.gzip = gzip || false
}
@ -43,15 +44,17 @@ export class Guide {
})
const xmlFilepath = this.filepath
const xmlFilename = path.basename(xmlFilepath)
this.logger.info(` saving to "${xmlFilepath}"...`)
await this.storage.save(xmlFilepath, xmltv.toString())
await this.storage.save(xmlFilename, xmltv.toString())
if (this.gzip) {
const zip = new Zip()
const compressed = await zip.compress(xmltv.toString())
const gzFilepath = `${this.filepath}.gz`
const gzFilename = path.basename(gzFilepath)
this.logger.info(` saving to "${gzFilepath}"...`)
await this.storage.save(gzFilepath, compressed)
await this.storage.save(gzFilename, compressed)
}
}
}

View file

@ -17,7 +17,9 @@ beforeEach(() => {
describe('epg:grab', () => {
it('can grab epg by site name', () => {
const cmd = `${ENV_VAR} npm run grab --- --site=example.com --output=tests/__data__/output/guide.xml`
const cmd = `${ENV_VAR} npm run grab --- --site=example.com --output=${path.resolve(
'tests/__data__/output/guide.xml'
)}`
execSync(cmd, { encoding: 'utf8' })
expect(content('tests/__data__/output/guide.xml')).toEqual(
@ -35,7 +37,9 @@ describe('epg:grab', () => {
})
it('can grab epg with gzip option enabled', async () => {
const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/**/*.channels.xml --output=tests/__data__/output/guide.xml --gzip`
const cmd = `${ENV_VAR} npm run grab --- --channels=tests/__data__/input/epg-grab/sites/**/*.channels.xml --output=${path.resolve(
'tests/__data__/output/guide.xml'
)} --gzip`
execSync(cmd, { encoding: 'utf8' })
expect(content('tests/__data__/output/guide.xml')).toEqual(