From 6b3e17861a20a895e969eee902cbefc56582c763 Mon Sep 17 00:00:00 2001 From: theofficialomega <30985701+BellezaEmporium@users.noreply.github.com> Date: Wed, 16 Jul 2025 15:19:12 +0200 Subject: [PATCH] continuing, WIP --- scripts/core/configLoader.ts | 2 +- scripts/functions/functions.ts | 3 +-- scripts/functions/index.ts | 1 + sites/derana.lk/derana.lk.config.js | 4 +--- sites/dstv.com/dstv.com.config.js | 2 +- sites/guida.tv/guida.tv.config.js | 7 +++---- sites/ontvtonight.com/ontvtonight.com.config.js | 7 +++---- .../streamingtvguides.com/streamingtvguides.com.config.js | 4 ++-- sites/tv.mail.ru/tv.mail.ru.config.js | 5 +---- 9 files changed, 14 insertions(+), 21 deletions(-) create mode 100644 scripts/functions/index.ts diff --git a/scripts/core/configLoader.ts b/scripts/core/configLoader.ts index 93e1e597..ae9971bf 100644 --- a/scripts/core/configLoader.ts +++ b/scripts/core/configLoader.ts @@ -1,5 +1,5 @@ import { SiteConfig } from 'epg-grabber' -import { deepMerge } from '../functions/functions' +import { deepMerge } from '../functions' import { pathToFileURL } from 'url' export class ConfigLoader { diff --git a/scripts/functions/functions.ts b/scripts/functions/functions.ts index 776179ee..fcf498a3 100644 --- a/scripts/functions/functions.ts +++ b/scripts/functions/functions.ts @@ -11,8 +11,7 @@ * const uniqueItems = uniqBy(items, item => item.id); * // uniqueItems will be [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] */ -export const uniqBy = (arr: T[], fn: (item: T) => K): T[] => - Array.from(new Map(arr.map(item => [fn(item), item])).values()) +export const uniqBy = (arr: T[], fn: (item: T) => K): T[] => [...new Map(arr.map(x => [fn(x), x])).values()] /** * Recursively merges multiple objects into a single object. diff --git a/scripts/functions/index.ts b/scripts/functions/index.ts new file mode 100644 index 00000000..8c9cb76a --- /dev/null +++ b/scripts/functions/index.ts @@ -0,0 +1 @@ +export * from './functions' \ No newline at end of file diff --git a/sites/derana.lk/derana.lk.config.js b/sites/derana.lk/derana.lk.config.js index c047855c..e8adcea2 100644 --- a/sites/derana.lk/derana.lk.config.js +++ b/sites/derana.lk/derana.lk.config.js @@ -3,9 +3,7 @@ const utc = require('dayjs/plugin/utc') const customParseFormat = require('dayjs/plugin/customParseFormat') const parseDuration = require('parse-duration').default const timezone = require('dayjs/plugin/timezone') - -// importing custom function sortBy -const sortBy = require('../functions/functions') +const { sortBy } = require('../../scripts/functions') dayjs.extend(customParseFormat) dayjs.extend(utc) diff --git a/sites/dstv.com/dstv.com.config.js b/sites/dstv.com/dstv.com.config.js index eb04a766..6f1ce247 100644 --- a/sites/dstv.com/dstv.com.config.js +++ b/sites/dstv.com/dstv.com.config.js @@ -3,7 +3,7 @@ const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const timezone = require('dayjs/plugin/timezone') const customParseFormat = require('dayjs/plugin/customParseFormat') -const { uniqBy } = require('../../functions/functions') +const { uniqBy } = require('../../scripts/functions') dayjs.extend(utc) dayjs.extend(timezone) diff --git a/sites/guida.tv/guida.tv.config.js b/sites/guida.tv/guida.tv.config.js index 0c14a1cd..a5e7feb3 100644 --- a/sites/guida.tv/guida.tv.config.js +++ b/sites/guida.tv/guida.tv.config.js @@ -1,8 +1,10 @@ +const axios = require('axios') const cheerio = require('cheerio') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const timezone = require('dayjs/plugin/timezone') const customParseFormat = require('dayjs/plugin/customParseFormat') +const { uniqBy } = require('../../scripts/functions') dayjs.extend(utc) dayjs.extend(timezone) @@ -41,9 +43,6 @@ module.exports = { return programs }, async channels() { - const axios = require('axios') - const _ = require('lodash') - const providers = ['-1', '-2', '-3'] const channels = [] @@ -77,7 +76,7 @@ module.exports = { }) } - return _.uniqBy(channels, 'site_id') + return uniqBy(channels, 'site_id') } } diff --git a/sites/ontvtonight.com/ontvtonight.com.config.js b/sites/ontvtonight.com/ontvtonight.com.config.js index 20b6efd0..0595d208 100644 --- a/sites/ontvtonight.com/ontvtonight.com.config.js +++ b/sites/ontvtonight.com/ontvtonight.com.config.js @@ -1,8 +1,10 @@ +const axios = require('axios') const cheerio = require('cheerio') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const timezone = require('dayjs/plugin/timezone') const customParseFormat = require('dayjs/plugin/customParseFormat') +const { uniqBy } = require('../../scripts/functions') dayjs.extend(utc) dayjs.extend(timezone) @@ -45,9 +47,6 @@ module.exports = { return programs }, async channels({ country }) { - const axios = require('axios') - const _ = require('lodash') - const providers = { au: ['o', 'a'], ca: [ @@ -147,7 +146,7 @@ module.exports = { } } - return _.uniqBy(channels, 'site_id') + return uniqBy(channels, 'site_id') } } diff --git a/sites/streamingtvguides.com/streamingtvguides.com.config.js b/sites/streamingtvguides.com/streamingtvguides.com.config.js index 440ca9e1..811a8b40 100644 --- a/sites/streamingtvguides.com/streamingtvguides.com.config.js +++ b/sites/streamingtvguides.com/streamingtvguides.com.config.js @@ -2,7 +2,7 @@ const cheerio = require('cheerio') const dayjs = require('dayjs') const customParseFormat = require('dayjs/plugin/customParseFormat') const timezone = require('dayjs/plugin/timezone') -const _ = require('lodash') +const { sortBy, uniqBy } = require('../../scripts/functions') dayjs.extend(customParseFormat) dayjs.extend(timezone) @@ -29,7 +29,7 @@ module.exports = { }) }) - programs = _.orderBy(_.uniqBy(programs, 'start'), 'start') + programs = sortBy(uniqBy(programs, p => p.start), 'start') return programs }, diff --git a/sites/tv.mail.ru/tv.mail.ru.config.js b/sites/tv.mail.ru/tv.mail.ru.config.js index 4fc3098c..46c11d41 100644 --- a/sites/tv.mail.ru/tv.mail.ru.config.js +++ b/sites/tv.mail.ru/tv.mail.ru.config.js @@ -1,9 +1,6 @@ const { DateTime } = require('luxon') const axios = require('axios') - -// Remove the big lodash dependency by implementing a simple uniqBy function -// Complexity = O(n) -const uniqBy = (arr, fn) => [...new Map(arr.map(x => [fn(x), x])).values()] +const { uniqBy } = require('../../scripts/functions') module.exports = { site: 'tv.mail.ru',