Update scripts

pull/26389/head
freearhey 6 days ago
parent 8dc5424d50
commit c1f813ca3f

@ -10,7 +10,6 @@ import {
IndexLanguageGenerator, IndexLanguageGenerator,
IndexCountryGenerator, IndexCountryGenerator,
SubdivisionsGenerator, SubdivisionsGenerator,
IndexRegionGenerator,
CategoriesGenerator, CategoriesGenerator,
CountriesGenerator, CountriesGenerator,
LanguagesGenerator, LanguagesGenerator,
@ -124,9 +123,6 @@ async function main() {
logger.info('generating index.language.m3u...') logger.info('generating index.language.m3u...')
await new IndexLanguageGenerator({ streams, logFile }).generate() await new IndexLanguageGenerator({ streams, logFile }).generate()
logger.info('generating index.region.m3u...')
await new IndexRegionGenerator({ streams, regions, logFile }).generate()
logger.info('saving generators.log...') logger.info('saving generators.log...')
const logStorage = new Storage(LOGS_DIR) const logStorage = new Storage(LOGS_DIR)
logStorage.saveFile(logFile) logStorage.saveFile(logFile)

@ -6,7 +6,6 @@ export * from './indexCountryGenerator'
export * from './indexGenerator' export * from './indexGenerator'
export * from './indexLanguageGenerator' export * from './indexLanguageGenerator'
export * from './indexNsfwGenerator' export * from './indexNsfwGenerator'
export * from './indexRegionGenerator'
export * from './languagesGenerator' export * from './languagesGenerator'
export * from './rawGenerator' export * from './rawGenerator'
export * from './regionsGenerator' export * from './regionsGenerator'

@ -26,13 +26,6 @@ export class IndexCountryGenerator implements Generator {
.orderBy((stream: Stream) => stream.getTitle()) .orderBy((stream: Stream) => stream.getTitle())
.filter((stream: Stream) => stream.isSFW()) .filter((stream: Stream) => stream.isSFW())
.forEach((stream: Stream) => { .forEach((stream: Stream) => {
if (stream.isInternational()) {
const streamClone = stream.clone()
streamClone.groupTitle = 'International'
groupedStreams.add(streamClone)
return
}
if (!stream.hasBroadcastArea()) { if (!stream.hasBroadcastArea()) {
const streamClone = stream.clone() const streamClone = stream.clone()
streamClone.groupTitle = 'Undefined' streamClone.groupTitle = 'Undefined'
@ -45,6 +38,12 @@ export class IndexCountryGenerator implements Generator {
streamClone.groupTitle = country.name streamClone.groupTitle = country.name
groupedStreams.add(streamClone) groupedStreams.add(streamClone)
}) })
if (stream.isInternational()) {
const streamClone = stream.clone()
streamClone.groupTitle = 'International'
groupedStreams.add(streamClone)
}
}) })
groupedStreams = groupedStreams.orderBy((stream: Stream) => { groupedStreams = groupedStreams.orderBy((stream: Stream) => {

@ -1,51 +0,0 @@
import { Collection, Storage, File } from '@freearhey/core'
import { Stream, Playlist, Region } from '../models'
import { PUBLIC_DIR, EOL } from '../constants'
import { Generator } from './generator'
type IndexRegionGeneratorProps = {
streams: Collection
regions: Collection
logFile: File
}
export class IndexRegionGenerator implements Generator {
streams: Collection
regions: Collection
storage: Storage
logFile: File
constructor({ streams, regions, logFile }: IndexRegionGeneratorProps) {
this.streams = streams.clone()
this.regions = regions
this.storage = new Storage(PUBLIC_DIR)
this.logFile = logFile
}
async generate(): Promise<void> {
let groupedStreams = new Collection()
this.streams
.orderBy((stream: Stream) => stream.getTitle())
.filter((stream: Stream) => stream.isSFW())
.forEach((stream: Stream) => {
if (!stream.hasBroadcastArea()) return
stream.getBroadcastRegions().forEach((region: Region) => {
if (region.isWorldwide()) return
const streamClone = stream.clone()
streamClone.groupTitle = region.name
groupedStreams.push(streamClone)
})
})
groupedStreams = groupedStreams.orderBy((stream: Stream) => stream.groupTitle)
const playlist = new Playlist(groupedStreams, { public: true })
const filepath = 'index.region.m3u'
await this.storage.save(filepath, playlist.toString())
this.logFile.append(
JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() }) + EOL
)
}
}

@ -28,8 +28,6 @@ export class RegionsGenerator implements Generator {
.filter((stream: Stream) => stream.isSFW()) .filter((stream: Stream) => stream.isSFW())
this.regions.forEach(async (region: Region) => { this.regions.forEach(async (region: Region) => {
if (region.isWorldwide()) return
const regionStreams = streams.filter((stream: Stream) => stream.isBroadcastInRegion(region)) const regionStreams = streams.filter((stream: Stream) => stream.isBroadcastInRegion(region))
const playlist = new Playlist(regionStreams, { public: true }) const playlist = new Playlist(regionStreams, { public: true })

@ -32,23 +32,27 @@ export class BroadcastArea {
if (!city) return if (!city) return
citiesIncluded.add(city) citiesIncluded.add(city)
regionsIncluded = regionsIncluded.concat(city.getRegions()) regionsIncluded = regionsIncluded.concat(city.getRegions())
break
} }
case 's': { case 's': {
const subdivision: Subdivision = subdivisionsKeyByCode.get(code) const subdivision: Subdivision = subdivisionsKeyByCode.get(code)
if (!subdivision) return if (!subdivision) return
subdivisionsIncluded.add(subdivision) subdivisionsIncluded.add(subdivision)
regionsIncluded = regionsIncluded.concat(subdivision.getRegions()) regionsIncluded = regionsIncluded.concat(subdivision.getRegions())
break
} }
case 'c': { case 'c': {
const country: Country = countriesKeyByCode.get(code) const country: Country = countriesKeyByCode.get(code)
if (!country) return if (!country) return
countriesIncluded.add(country) countriesIncluded.add(country)
regionsIncluded = regionsIncluded.concat(country.getRegions()) regionsIncluded = regionsIncluded.concat(country.getRegions())
break
} }
case 'r': { case 'r': {
const region: Region = regionsKeyByCode.get(code) const region: Region = regionsKeyByCode.get(code)
if (!region) return if (!region) return
regionsIncluded = regionsIncluded.concat(region.getRegions()) regionsIncluded = regionsIncluded.concat(region.getRegions())
break
} }
} }
}) })

Loading…
Cancel
Save