diff --git a/scripts/commands/epg/grab.ts b/scripts/commands/epg/grab.ts index e9976f02..82395767 100644 --- a/scripts/commands/epg/grab.ts +++ b/scripts/commands/epg/grab.ts @@ -77,41 +77,41 @@ async function main() { if (options.lang) { parsedChannels = parsedChannels.filter((channel: Channel) => channel.lang === options.lang) } - logger.info(` found ${parsedChannels.count()} channels`) + logger.info(` found ${parsedChannels.count()} channel(s)`) + + let runIndex = 1 + if (options.cron) { + const cronJob = new CronJob(options.cron, async () => { + logger.info(`run #${runIndex}:`) + await runJob({ logger, parsedChannels }) + runIndex++ + }) + cronJob.start() + } else { + logger.info(`run #${runIndex}:`) + runJob({ logger, parsedChannels }) + } +} + +main() + +async function runJob({ logger, parsedChannels }: { logger: Logger; parsedChannels: Collection }) { + const timer = new Timer() + timer.start() - logger.info('creating queue...') const queueCreator = new QueueCreator({ parsedChannels, logger, options }) const queue = await queueCreator.create() - logger.info(` added ${queue.size()} items`) - const job = new Job({ queue, logger, options }) - let runIndex = 1 - if (options.cron) { - const cronJob = new CronJob(options.cron, async () => { - logger.info(`run #${runIndex}:`) - const timer = new Timer() - timer.start() - await job.run() - runIndex++ - logger.success(` done in ${timer.format('HH[h] mm[m] ss[s]')}`) - }) - cronJob.start() - } else { - logger.info(`run #${runIndex}:`) - const timer = new Timer() - timer.start() - await job.run() - logger.success(` done in ${timer.format('HH[h] mm[m] ss[s]')}`) - } -} + await job.run() -main() + logger.success(` done in ${timer.format('HH[h] mm[m] ss[s]')}`) +} diff --git a/scripts/constants.ts b/scripts/constants.ts index 25231ce0..85bb51cc 100644 --- a/scripts/constants.ts +++ b/scripts/constants.ts @@ -1,4 +1,3 @@ export const SITES_DIR = process.env.SITES_DIR || './sites' export const GUIDES_DIR = process.env.GUIDES_DIR || './guides' export const DATA_DIR = process.env.DATA_DIR || './temp/data' -export const CURR_DATE = process.env.CURR_DATE || new Date().toISOString() diff --git a/scripts/core/guide.ts b/scripts/core/guide.ts index 3b6804c9..6c9921b7 100644 --- a/scripts/core/guide.ts +++ b/scripts/core/guide.ts @@ -1,7 +1,6 @@ import { Collection, Logger, DateTime, Storage, Zip } from '@freearhey/core' import { Channel } from 'epg-grabber' import { XMLTV } from '../core' -import { CURR_DATE } from '../constants' type GuideProps = { channels: Collection @@ -34,10 +33,13 @@ export class Guide { ) const programs = this.programs + const currDate = new DateTime(process.env.CURR_DATE || new Date().toISOString(), { + zone: 'UTC' + }) const xmltv = new XMLTV({ channels, programs, - date: new DateTime(CURR_DATE, { zone: 'UTC' }) + date: currDate }) const xmlFilepath = this.filepath diff --git a/scripts/core/queueCreator.ts b/scripts/core/queueCreator.ts index ed0e5435..8516dc71 100644 --- a/scripts/core/queueCreator.ts +++ b/scripts/core/queueCreator.ts @@ -1,6 +1,6 @@ import { Storage, Collection, DateTime, Logger } from '@freearhey/core' import { ChannelsParser, ConfigLoader, ApiChannel, Queue } from './' -import { SITES_DIR, DATA_DIR, CURR_DATE } from '../constants' +import { SITES_DIR, DATA_DIR } from '../constants' import { SiteConfig } from 'epg-grabber' import path from 'path' import { GrabOptions } from '../commands/epg/grab' @@ -19,7 +19,6 @@ export class QueueCreator { parser: ChannelsParser parsedChannels: Collection options: GrabOptions - date: DateTime constructor({ parsedChannels, logger, options }: QueueCreatorProps) { this.parsedChannels = parsedChannels @@ -27,7 +26,6 @@ export class QueueCreator { this.sitesStorage = new Storage() this.dataStorage = new Storage(DATA_DIR) this.parser = new ChannelsParser({ storage: new Storage() }) - this.date = new DateTime(CURR_DATE) this.options = options this.configLoader = new ConfigLoader() } @@ -52,7 +50,8 @@ export class QueueCreator { } const days = this.options.days || config.days || 1 - const dates = Array.from({ length: days }, (_, day) => this.date.add(day, 'd')) + const currDate = new DateTime(process.env.CURR_DATE || new Date().toISOString()) + const dates = Array.from({ length: days }, (_, day) => currDate.add(day, 'd')) dates.forEach((date: DateTime) => { const dateString = date.toJSON() const key = `${channel.site}:${channel.lang}:${channel.xmltv_id}:${dateString}`