diff --git a/scripts/commands/create-database.js b/scripts/commands/create-database.js index 5d2ef9b9..59dd66bf 100644 --- a/scripts/commands/create-database.js +++ b/scripts/commands/create-database.js @@ -34,13 +34,18 @@ async function loadChannels() { for (const filepath of files) { const dir = file.dirname(filepath) const filename = file.basename(filepath) - const [_, gid] = filename.match(/_([a-z-]+)\.channels\.xml/i) || [null, null] + const [_, site] = filename.match(/([a-z0-9-.]+)_/i) || [null, null] + if (!site) continue + const configPath = `${dir}/${site}.config.js` + const config = require(file.resolve(configPath)) + if (config.ignore) continue + const [__, gid] = filename.match(/_([a-z-]+)\.channels\.xml/i) || [null, null] const items = await parser.parseChannels(filepath) for (const item of items) { const countryCode = item.xmltv_id.split('.')[1] item.country = countryCode ? countryCode.toUpperCase() : null item.channelsPath = filepath - item.configPath = `${dir}/${item.site}.config.js` + item.configPath = configPath item.gid = gid channels.push(item) } diff --git a/tests/__data__/input/sites/ignore.com.config.js b/tests/__data__/input/sites/ignore.com.config.js new file mode 100644 index 00000000..b0058dfc --- /dev/null +++ b/tests/__data__/input/sites/ignore.com.config.js @@ -0,0 +1,10 @@ +module.exports = { + site: 'ignore.com', + ignore: true, + url() { + return `https://ignore.com` + }, + parser() { + return [] + } +} diff --git a/tests/__data__/input/sites/example.com_en-ee.channels.xml b/tests/__data__/input/sites/ignore.com_en-ee.channels.xml similarity index 80% rename from tests/__data__/input/sites/example.com_en-ee.channels.xml rename to tests/__data__/input/sites/ignore.com_en-ee.channels.xml index 9b5e1b74..ec8ad844 100644 --- a/tests/__data__/input/sites/example.com_en-ee.channels.xml +++ b/tests/__data__/input/sites/ignore.com_en-ee.channels.xml @@ -1,5 +1,5 @@ - + 1+2 diff --git a/tests/commands/create-database.test.js b/tests/commands/create-database.test.js index 4e08f6c7..d84c9146 100644 --- a/tests/commands/create-database.test.js +++ b/tests/commands/create-database.test.js @@ -6,7 +6,7 @@ beforeEach(() => { fs.rmdirSync('tests/__data__/output', { recursive: true }) fs.mkdirSync('tests/__data__/output') - execSync( + const stdout = execSync( 'DB_DIR=tests/__data__/output/database node scripts/commands/create-database.js --channels=tests/__data__/input/sites/*.channels.xml --max-clusters=1', { encoding: 'utf8' } ) @@ -15,34 +15,20 @@ beforeEach(() => { it('can create channels database', () => { const output = content('tests/__data__/output/database/channels.db') - expect(output).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - lang: 'en', - country: 'LV', - xmltv_id: '1Plus2.lv', - site_id: '1341', - name: '1+2', - site: 'example.com', - channelsPath: 'tests/__data__/input/sites/example.com_en-ee.channels.xml', - configPath: 'tests/__data__/input/sites/example.com.config.js', - gid: 'en-ee', - cluster_id: 1 - }), - expect.objectContaining({ - lang: 'ru', - country: 'US', - xmltv_id: 'CNNInternationalEurope.us', - site_id: '140', - name: 'CNN International Europe', - site: 'example.com', - channelsPath: 'tests/__data__/input/sites/example.com_ca-nl.channels.xml', - configPath: 'tests/__data__/input/sites/example.com.config.js', - gid: 'ca-nl', - cluster_id: 1 - }) - ]) - ) + expect(output).toMatchObject([ + { + lang: 'ru', + country: 'US', + xmltv_id: 'CNNInternationalEurope.us', + site_id: '140', + name: 'CNN International Europe', + site: 'example.com', + channelsPath: 'tests/__data__/input/sites/example.com_ca-nl.channels.xml', + configPath: 'tests/__data__/input/sites/example.com.config.js', + gid: 'ca-nl', + cluster_id: 1 + } + ]) }) function content(filepath) {