const { program } = require('commander') const parser = require('./parser') const utils = require('./utils') program .usage('[OPTIONS]...') .option('-d, --debug', 'Debug mode') .option('-c, --country ', 'Comma-separated list of country codes', '') .option('-e, --exclude ', 'Comma-separated list of country codes to be excluded', '') .parse(process.argv) const config = program.opts() async function main() { utils.log('Starting...\n') console.time('\nDone in') const playlists = parseIndex() for (const playlist of playlists) { await loadPlaylist(playlist.url).then(sortChannels).then(savePlaylist) } finish() } function parseIndex() { utils.log(`Parsing 'index.m3u'...`) let playlists = parser.parseIndex() playlists = utils .filterPlaylists(playlists, config.country, config.exclude) .filter(i => i.url !== 'channels/unsorted.m3u') return playlists } async function loadPlaylist(url) { utils.log(`\nProcessing '${url}'...`) return parser.parsePlaylist(url) } async function sortChannels(playlist) { playlist.channels = utils.sortBy(playlist.channels, ['name', 'url']) return playlist } async function savePlaylist(playlist) { const original = utils.readFile(playlist.url) const output = playlist.toString() if (original === output) { return false } else { utils.createFile(playlist.url, output) utils.log(`updated`) } return true } function finish() { console.timeEnd('\nDone in') } main()