MCPcopy
hub / github.com/iptv-org/iptv / generate

Method generate

scripts/generators/indexLanguageGenerator.ts:24–56  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

22 }
23
24 async generate(): Promise<void> {
25 let groupedStreams = new Collection<Stream>()
26 this.streams
27 .sortBy((stream: Stream) => stream.title)
28 .filter((stream: Stream) => stream.isSFW())
29 .forEach((stream: Stream) => {
30 const streamLanguages = stream.getLanguages()
31 if (streamLanguages.isEmpty()) {
32 const streamClone = stream.clone()
33 streamClone.groupTitle = 'Undefined'
34 groupedStreams.add(streamClone)
35 return
36 }
37
38 streamLanguages.forEach((language: sdk.Models.Language) => {
39 const streamClone = stream.clone()
40 streamClone.groupTitle = language.name
41 groupedStreams.add(streamClone)
42 })
43 })
44
45 groupedStreams = groupedStreams.sortBy((stream: Stream) => {
46 if (stream.groupTitle === 'Undefined') return 'ZZ'
47 return stream.groupTitle
48 })
49
50 const playlist = new Playlist(groupedStreams, { public: true })
51 const filepath = 'index.language.m3u'
52 await this.storage.save(filepath, playlist.toString())
53 this.logFile.append(
54 JSON.stringify({ type: 'index', filepath, count: playlist.streams.count() }) + EOL
55 )
56 }
57}

Callers

nothing calls this directly

Calls 4

toStringMethod · 0.95
isSFWMethod · 0.80
cloneMethod · 0.80
appendMethod · 0.80

Tested by

no test coverage detected