mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-09 16:40:07 -04:00
Update update.ts
This commit is contained in:
parent
7e07f40809
commit
44bb8a5788
1 changed files with 27 additions and 15 deletions
|
@ -1,51 +1,63 @@
|
||||||
|
import { Channel } from 'epg-grabber'
|
||||||
import { Logger, Storage, Collection } from '@freearhey/core'
|
import { Logger, Storage, Collection } from '@freearhey/core'
|
||||||
import { IssueLoader, HTMLTable, Markdown } from '../../core'
|
import { IssueLoader, HTMLTable, ChannelsParser } from '../../core'
|
||||||
import { Issue, Site } from '../../models'
|
import { Issue, Site } from '../../models'
|
||||||
import { SITES_DIR, DOT_SITES_DIR } from '../../constants'
|
import { SITES_DIR, ROOT_DIR } from '../../constants'
|
||||||
import path from 'path'
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const logger = new Logger({ disabled: true })
|
const logger = new Logger({ disabled: true })
|
||||||
const loader = new IssueLoader()
|
const loader = new IssueLoader()
|
||||||
const storage = new Storage(SITES_DIR)
|
const sitesStorage = new Storage(SITES_DIR)
|
||||||
|
const channelsParser = new ChannelsParser({ storage: sitesStorage })
|
||||||
const sites = new Collection()
|
const sites = new Collection()
|
||||||
|
|
||||||
logger.info('loading list of sites')
|
logger.info('loading list of sites')
|
||||||
const folders = await storage.list('*/')
|
const folders = await sitesStorage.list('*/')
|
||||||
|
|
||||||
logger.info('loading issues...')
|
logger.info('loading issues...')
|
||||||
const issues = await loadIssues(loader)
|
const issues = await loadIssues(loader)
|
||||||
|
|
||||||
logger.info('putting the data together...')
|
logger.info('putting the data together...')
|
||||||
folders.forEach((domain: string) => {
|
for (const domain of folders) {
|
||||||
const filteredIssues = issues.filter((issue: Issue) => domain === issue.data.get('site'))
|
const filteredIssues = issues.filter((issue: Issue) => domain === issue.data.get('site'))
|
||||||
const site = new Site({
|
const site = new Site({
|
||||||
domain,
|
domain,
|
||||||
issues: filteredIssues
|
issues: filteredIssues
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const files = await sitesStorage.list(`${domain}/*.channels.xml`)
|
||||||
|
for (const filepath of files) {
|
||||||
|
const channels = await channelsParser.parse(filepath)
|
||||||
|
|
||||||
|
site.totalChannels += channels.count()
|
||||||
|
site.markedChannels += channels.filter((channel: Channel) => channel.xmltv_id).count()
|
||||||
|
}
|
||||||
|
|
||||||
sites.add(site)
|
sites.add(site)
|
||||||
})
|
}
|
||||||
|
|
||||||
logger.info('creating sites table...')
|
logger.info('creating sites table...')
|
||||||
const data = new Collection()
|
const data = new Collection()
|
||||||
sites.forEach((site: Site) => {
|
sites.forEach((site: Site) => {
|
||||||
data.add([
|
data.add([
|
||||||
`<a href="sites/${site.domain}">${site.domain}</a>`,
|
`<a href="sites/${site.domain}">${site.domain}</a>`,
|
||||||
|
`${site.totalChannels} / ${site.markedChannels}`,
|
||||||
site.getStatus().emoji,
|
site.getStatus().emoji,
|
||||||
site.getIssues().all().join(', ')
|
site.getIssues().all().join(', ')
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
const table = new HTMLTable(data.all(), [{ name: 'Site' }, { name: 'Status' }, { name: 'Notes' }])
|
|
||||||
|
|
||||||
const readmeStorage = new Storage(DOT_SITES_DIR)
|
|
||||||
await readmeStorage.save('_table.md', table.toString())
|
|
||||||
|
|
||||||
logger.info('updating sites.md...')
|
logger.info('updating sites.md...')
|
||||||
const configPath = path.join(DOT_SITES_DIR, 'config.json')
|
const table = new HTMLTable(data.all(), [
|
||||||
const sitesMarkdown = new Markdown(configPath)
|
{ name: 'Site' },
|
||||||
sitesMarkdown.compile()
|
{ name: 'Channels *', align: 'center' },
|
||||||
|
{ name: 'Status' },
|
||||||
|
{ name: 'Notes' }
|
||||||
|
])
|
||||||
|
const rootStorage = new Storage(ROOT_DIR)
|
||||||
|
const sitesTemplate = await new Storage().load('scripts/templates/_sites.md')
|
||||||
|
const sitesContent = sitesTemplate.replace('_TABLE_', table.toString())
|
||||||
|
await rootStorage.save('SITES.md', sitesContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue