From 2233601d64c3b484916172f904389a7888aab741 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Mon, 9 Jan 2023 10:45:37 +0300 Subject: [PATCH] Update update.js --- scripts/commands/readme/update.js | 85 +++++++------------------------ 1 file changed, 17 insertions(+), 68 deletions(-) diff --git a/scripts/commands/readme/update.js b/scripts/commands/readme/update.js index b327325a..3b049bc5 100644 --- a/scripts/commands/readme/update.js +++ b/scripts/commands/readme/update.js @@ -14,31 +14,28 @@ async function main() { const logPath = `${LOGS_DIR}/guides/update.log` let log = await parser.parseLogs(logPath) - await createCountriesTable(log) - await createSourcesTable(log) + await createTable(log) await updateReadme() } main() -async function createSourcesTable(log) { - let files = log - .filter(c => c.groupedBy === 'site+lang') - .reduce((acc, curr) => { - if (!acc[curr.filename]) { - acc[curr.filename] = { - site: curr.site, - lang: curr.lang, - channels: 0, - filename: curr.filename - } +async function createTable(log) { + let files = _.uniqBy(log, i => i.site + i.channel).reduce((acc, curr) => { + if (!acc[curr.filename]) { + acc[curr.filename] = { + site: curr.site, + lang: curr.lang, + channels: 0, + filename: curr.filename } + } - acc[curr.filename].channels++ + acc[curr.filename].channels++ - return acc - }, {}) + return acc + }, {}) let data = [] for (const filename in files) { @@ -48,7 +45,8 @@ async function createSourcesTable(log) { item.site, item.lang, item.channels, - `https://iptv-org.github.io/epg/guides/${filename}.xml` + `https://iptv-org.github.io/epg/guides/${filename}.xml`, + `${filename}` ]) } @@ -63,58 +61,9 @@ async function createSourcesTable(log) { }) data = Object.values(_.groupBy(data, item => item[0])) - const output = table.create(data, ['Site', 'Channels', 'EPG']) + const output = table.create(data, ['Site', 'Channels', 'EPG', 'Status']) - await file.create('./.readme/_sources.md', output) -} - -async function createCountriesTable(log) { - let files = log - .filter(c => c.groupedBy === 'country') - .reduce((acc, curr) => { - if (!acc[curr.filename]) { - acc[curr.filename] = { - country: curr.country, - lang: curr.lang, - channels: 0, - filename: curr.filename - } - } - - acc[curr.filename].channels++ - - return acc - }, {}) - - let data = [] - for (const filename in files) { - const item = files[filename] - const country = api.countries.find({ code: item.country }) - if (!country) continue - - data.push([ - country.name, - item.lang, - `${country.flag} ${country.name}`, - item.channels, - `https://iptv-org.github.io/epg/guides/${filename}.xml` - ]) - } - - data = _.orderBy( - data, - [item => item[0], item => (item[1] === 'en' ? Infinity : item[3])], - ['asc', 'desc'] - ) - data = data.map(i => { - i.splice(0, 2) - return i - }) - data = Object.values(_.groupBy(data, item => item[0])) - - const output = table.create(data, ['Country', 'Channels', 'EPG']) - - await file.create('./.readme/_countries.md', output) + await file.create('./.readme/_sites.md', output) } async function updateReadme() {