diff --git a/scripts/generators/countriesGenerator.ts b/scripts/generators/countriesGenerator.ts index 0b5bc8c11..a03d67096 100644 --- a/scripts/generators/countriesGenerator.ts +++ b/scripts/generators/countriesGenerator.ts @@ -39,39 +39,36 @@ export class CountriesGenerator implements Generator { (subdivision: Subdivision) => subdivision.country === country.code ) - const countrySubdivisionsCodes = countrySubdivisions.map( - (subdivision: Subdivision) => `s/${subdivision.code}` - ) - const countryAreaCodes = regions .filter((region: Region) => region.countries.includes(country.code)) .map((region: Region) => `r/${region.code}`) - .concat(countrySubdivisionsCodes) .add(`c/${country.code}`) const countryStreams = streams.filter(stream => stream.broadcastArea.intersects(countryAreaCodes) ) - if (countryStreams.isEmpty()) return - - const playlist = new Playlist(countryStreams, { public: true }) - const filepath = `countries/${country.code.toLowerCase()}.m3u` - await this.storage.save(filepath, playlist.toString()) - this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) - + let hasSubdivisions = false countrySubdivisions.forEach(async (subdivision: Subdivision) => { const subdivisionStreams = streams.filter(stream => stream.broadcastArea.includes(`s/${subdivision.code}`) ) if (subdivisionStreams.isEmpty()) return + hasSubdivisions = true const playlist = new Playlist(subdivisionStreams, { public: true }) const filepath = `subdivisions/${subdivision.code.toLowerCase()}.m3u` await this.storage.save(filepath, playlist.toString()) this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) }) + + if (countryStreams.count() > 0 || hasSubdivisions) { + const playlist = new Playlist(countryStreams, { public: true }) + const filepath = `countries/${country.code.toLowerCase()}.m3u` + await this.storage.save(filepath, playlist.toString()) + this.logger.info(JSON.stringify({ filepath, count: playlist.streams.count() })) + } }) const internationalStreams = streams.filter(stream => stream.isInternational()) diff --git a/scripts/tables/countryTable.ts b/scripts/tables/countryTable.ts index 5e167b7fd..e83cf79e6 100644 --- a/scripts/tables/countryTable.ts +++ b/scripts/tables/countryTable.ts @@ -23,10 +23,12 @@ export class CountryTable implements Table { let data = new Collection() parser .parse(generatorsLog) - .filter( - (logItem: LogItem) => - logItem.filepath.includes('countries/') || logItem.filepath.includes('subdivisions/') - ) + .filter((logItem: LogItem) => { + const isCountry = logItem.filepath.includes('countries/') + const isSubdivision = logItem.filepath.includes('subdivisions/') + + if (isCountry || isSubdivision) return true + }) .forEach((logItem: LogItem) => { const file = new File(logItem.filepath) const code = file.name().toUpperCase()