const { file, markdown, parser, logger, api } = require('../../core') const { create: createTable } = require('../../core/table') const { program } = require('commander') const LOGS_DIR = process.env.LOGS_DIR || 'scripts/tmp/logs/generators' const options = program .option('-c, --config ', 'Set path to config file', '.readme/config.json') .parse(process.argv) .opts() async function main() { await createCategoryTable() await createCountryTable() await createLanguageTable() await createRegionTable() await updateReadme() } main() async function createCategoryTable() { logger.info('creating category table...') const rows = [] await api.categories.load() const items = await parser.parseLogs(`${LOGS_DIR}/categories.log`) for (const item of items) { const id = file.getFilename(item.filepath) const category = await api.categories.find({ id }) rows.push({ name: category ? category.name : 'Undefined', channels: item.count, playlist: `https://iptv-org.github.io/iptv/${item.filepath}` }) } const table = createTable(rows, [ { name: 'Category' }, { name: 'Channels', align: 'right' }, { name: 'Playlist', nowrap: true } ]) await file.create('./.readme/_categories.md', table) } async function createCountryTable() { logger.info('creating country table...') const rows = [] await api.countries.load() await api.subdivisions.load() const items = await parser.parseLogs(`${LOGS_DIR}/countries.log`) for (const item of items) { const code = file.getFilename(item.filepath) const country = await api.countries.find({ code: code.toUpperCase() }) if (country) { rows.push({ name: `${country.flag} ${country.name}`, channels: item.count, playlist: `https://iptv-org.github.io/iptv/${item.filepath}` }) } else if (code === 'int') { rows.push({ name: `🌍 International`, channels: item.count, playlist: `https://iptv-org.github.io/iptv/${item.filepath}` }) } else { const subdivision = await api.subdivisions.find({ code: code.toUpperCase() }) if (subdivision) { rows.push({ name: `      ${subdivision.name}`, channels: item.count, playlist: `https://iptv-org.github.io/iptv/${item.filepath}` }) } } } const table = createTable(rows, [ { name: 'Country' }, { name: 'Channels', align: 'right' }, { name: 'Playlist', nowrap: true } ]) await file.create('./.readme/_countries.md', table) } async function createLanguageTable() { logger.info('creating language table...') const rows = [] await api.languages.load() const items = await parser.parseLogs(`${LOGS_DIR}/languages.log`) for (const item of items) { const code = file.getFilename(item.filepath) const language = await api.languages.find({ code }) rows.push({ name: language ? language.name : 'Undefined', channels: item.count, playlist: `https://iptv-org.github.io/iptv/${item.filepath}` }) } const table = createTable(rows, [ { name: 'Language', align: 'left' }, { name: 'Channels', align: 'right' }, { name: 'Playlist', align: 'left', nowrap: true } ]) await file.create('./.readme/_languages.md', table) } async function createRegionTable() { logger.info('creating region table...') const rows = [] await api.regions.load() const items = await parser.parseLogs(`${LOGS_DIR}/regions.log`) for (const item of items) { const code = file.getFilename(item.filepath) const region = await api.regions.find({ code: code.toUpperCase() }) if (region) { rows.push({ name: region.name, channels: item.count, playlist: `https://iptv-org.github.io/iptv/${item.filepath}` }) } } const table = createTable(rows, [ { name: 'Region', align: 'left' }, { name: 'Channels', align: 'right' }, { name: 'Playlist', align: 'left', nowrap: true } ]) await file.create('./.readme/_regions.md', table) } async function updateReadme() { logger.info('updating readme.md...') const config = require(file.resolve(options.config)) await file.createDir(file.dirname(config.build)) await markdown.compile(options.config) }