| 25 | let searchIndex |
| 26 | |
| 27 | async function loadData() { |
| 28 | const dataManager = new sdk.DataManager({ dataDir: DATA_DIR }) |
| 29 | await dataManager.loadFromDisk() |
| 30 | dataManager.processData() |
| 31 | |
| 32 | const { |
| 33 | channels, |
| 34 | feeds, |
| 35 | categories, |
| 36 | languages, |
| 37 | countries, |
| 38 | subdivisions, |
| 39 | cities, |
| 40 | regions, |
| 41 | blocklist, |
| 42 | guides |
| 43 | } = dataManager.getProcessedData() |
| 44 | |
| 45 | const searchableData = channels.map((channel: sdk.Models.Channel) => channel.getSearchable()) |
| 46 | searchIndex = sdk.SearchEngine.createIndex<sdk.Types.ChannelSearchableData>(searchableData.all()) |
| 47 | |
| 48 | data.categoriesKeyById = categories.keyBy((category: sdk.Models.Category) => category.id) |
| 49 | data.countriesKeyByCode = countries.keyBy((country: sdk.Models.Country) => country.code) |
| 50 | data.subdivisionsKeyByCode = subdivisions.keyBy( |
| 51 | (subdivision: sdk.Models.Subdivision) => subdivision.code |
| 52 | ) |
| 53 | data.citiesKeyByCode = cities.keyBy((city: sdk.Models.City) => city.code) |
| 54 | data.regionsKeyByCode = regions.keyBy((region: sdk.Models.Region) => region.code) |
| 55 | data.languagesKeyByCode = languages.keyBy((language: sdk.Models.Language) => language.code) |
| 56 | data.channelsKeyById = channels.keyBy((channel: sdk.Models.Channel) => channel.id) |
| 57 | data.feedsKeyByStreamId = feeds.keyBy((feed: sdk.Models.Feed) => feed.getStreamId()) |
| 58 | data.feedsGroupedByChannel = feeds.groupBy((feed: sdk.Models.Feed) => feed.channel) |
| 59 | data.blocklistRecordsGroupedByChannel = blocklist.groupBy( |
| 60 | (blocklistRecord: sdk.Models.BlocklistRecord) => blocklistRecord.channel |
| 61 | ) |
| 62 | data.guidesGroupedByStreamId = guides |
| 63 | .filter((guide: sdk.Models.Guide) => !!guide.sources.length) |
| 64 | .groupBy((guide: sdk.Models.Guide) => guide.getStreamId()) |
| 65 | data.categories = categories |
| 66 | data.countries = countries |
| 67 | data.subdivisions = subdivisions |
| 68 | data.cities = cities |
| 69 | data.regions = regions |
| 70 | } |
| 71 | |
| 72 | async function downloadData() { |
| 73 | function formatBytes(bytes: number) { |