mirror of
https://github.com/iptv-org/iptv
synced 2025-12-17 10:57:18 -05:00
Update scripts
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user