mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 09:00:07 -04:00
Update update-guides.js
This commit is contained in:
parent
8baeed2247
commit
da23d7e267
6 changed files with 35 additions and 13 deletions
|
@ -1,4 +1,4 @@
|
||||||
const { db, logger, file } = require('../core')
|
const { db, logger, file, api } = require('../core')
|
||||||
const grabber = require('epg-grabber')
|
const grabber = require('epg-grabber')
|
||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
|
|
||||||
|
@ -17,14 +17,23 @@ main()
|
||||||
async function generateGuides() {
|
async function generateGuides() {
|
||||||
logger.info(`Generating guides/...`)
|
logger.info(`Generating guides/...`)
|
||||||
|
|
||||||
const grouped = groupByGroup(await loadChannels())
|
const grouped = groupByGroup(await loadQueue())
|
||||||
|
|
||||||
logger.info('Loading "database/programs.db"...')
|
logger.info('Loading "database/programs.db"...')
|
||||||
await db.programs.load()
|
await db.programs.load()
|
||||||
|
|
||||||
for (const key in grouped) {
|
for (const key in grouped) {
|
||||||
const filepath = `${PUBLIC_DIR}/guides/${key}.epg.xml`
|
const filepath = `${PUBLIC_DIR}/guides/${key}.epg.xml`
|
||||||
const channels = grouped[key]
|
const items = grouped[key]
|
||||||
|
const channels = items
|
||||||
|
.map(i => {
|
||||||
|
const channel = api.channels.get(i.xmltv_id)
|
||||||
|
i.name = channel.name
|
||||||
|
i.logo = channel.logo
|
||||||
|
return i
|
||||||
|
})
|
||||||
|
.filter(i => i)
|
||||||
|
|
||||||
const programs = await loadProgramsForChannels(channels)
|
const programs = await loadProgramsForChannels(channels)
|
||||||
const output = grabber.convertToXMLTV({ channels, programs })
|
const output = grabber.convertToXMLTV({ channels, programs })
|
||||||
|
|
||||||
|
@ -56,12 +65,12 @@ function groupByGroup(channels = []) {
|
||||||
return groups
|
return groups
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadChannels() {
|
async function loadQueue() {
|
||||||
logger.info('Loading channels...')
|
logger.info('Loading queue...')
|
||||||
|
|
||||||
await db.channels.load()
|
await db.queue.load()
|
||||||
|
|
||||||
return await db.channels.find({ programCount: { $gt: 0 } }).sort({ xmltv_id: 1 })
|
return await db.queue.find({ programCount: { $gt: 0 } }).sort({ xmltv_id: 1 })
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadProgramsForChannels(channels = []) {
|
async function loadProgramsForChannels(channels = []) {
|
||||||
|
|
15
scripts/core/api.js
Normal file
15
scripts/core/api.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
class API {
|
||||||
|
constructor(filepath) {
|
||||||
|
this.collection = require(filepath)
|
||||||
|
}
|
||||||
|
|
||||||
|
get(id) {
|
||||||
|
return this.collection.find(c => c.id === id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const api = {}
|
||||||
|
|
||||||
|
api.channels = new API('../data/channels.json')
|
||||||
|
|
||||||
|
module.exports = api
|
|
@ -4,3 +4,4 @@ exports.file = require('./file')
|
||||||
exports.parser = require('./parser')
|
exports.parser = require('./parser')
|
||||||
exports.timer = require('./timer')
|
exports.timer = require('./timer')
|
||||||
exports.markdown = require('./markdown')
|
exports.markdown = require('./markdown')
|
||||||
|
exports.api = require('./api')
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?><tv>
|
<?xml version="1.0" encoding="UTF-8" ?><tv>
|
||||||
<channel id="CNNInternationalEurope.us"><display-name>CNN International Europe</display-name><url>https://chaines-tv.orange.fr</url></channel>
|
<channel id="CNNInternationalEurope.us"><display-name>CNN International Europe</display-name><icon src="https://i.imgur.com/2BXCg0x.jpg"/><url>https://chaines-tv.orange.fr</url></channel>
|
||||||
<programme start="20220110000000 +0000" stop="20220110010000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">CNN Newsroom Sunday</title><desc lang="ru">Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.</desc><category lang="ru">Category1</category><category lang="ru">Category2</category></programme>
|
<programme start="20220110000000 +0000" stop="20220110010000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">CNN Newsroom Sunday</title><desc lang="ru">Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.</desc><category lang="ru">Category1</category><category lang="ru">Category2</category></programme>
|
||||||
<programme start="20220110010000 +0000" stop="20220110020000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">Fareed Zakaria GPS</title><desc lang="ru">Интервью с главными игроками мировой политики.</desc><category lang="ru">Category1</category></programme>
|
<programme start="20220110010000 +0000" stop="20220110020000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">Fareed Zakaria GPS</title><desc lang="ru">Интервью с главными игроками мировой политики.</desc><category lang="ru">Category1</category></programme>
|
||||||
<programme start="20220110020000 +0000" stop="20220110023000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">African Voices Changemakers. 114-я серия</title><desc lang="ru">114-я серия. Африка сегодня - люди, новости, события.</desc></programme>
|
<programme start="20220110020000 +0000" stop="20220110023000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">African Voices Changemakers. 114-я серия</title><desc lang="ru">114-я серия. Африка сегодня - люди, новости, события.</desc></programme>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?><tv>
|
<?xml version="1.0" encoding="UTF-8" ?><tv>
|
||||||
<channel id="CNNInternationalEurope.us"><display-name>CNN International Europe</display-name><url>https://chaines-tv.orange.fr</url></channel>
|
<channel id="CNNInternationalEurope.us"><display-name>CNN International Europe</display-name><icon src="https://i.imgur.com/2BXCg0x.jpg"/><url>https://chaines-tv.orange.fr</url></channel>
|
||||||
<programme start="20220110000000 +0000" stop="20220110010000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">CNN Newsroom Sunday</title><desc lang="ru">Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.</desc><category lang="ru">Category1</category><category lang="ru">Category2</category></programme>
|
<programme start="20220110000000 +0000" stop="20220110010000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">CNN Newsroom Sunday</title><desc lang="ru">Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.</desc><category lang="ru">Category1</category><category lang="ru">Category2</category></programme>
|
||||||
<programme start="20220110010000 +0000" stop="20220110020000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">Fareed Zakaria GPS</title><desc lang="ru">Интервью с главными игроками мировой политики.</desc><category lang="ru">Category1</category></programme>
|
<programme start="20220110010000 +0000" stop="20220110020000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">Fareed Zakaria GPS</title><desc lang="ru">Интервью с главными игроками мировой политики.</desc><category lang="ru">Category1</category></programme>
|
||||||
<programme start="20220110020000 +0000" stop="20220110023000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">African Voices Changemakers. 114-я серия</title><desc lang="ru">114-я серия. Африка сегодня - люди, новости, события.</desc></programme>
|
<programme start="20220110020000 +0000" stop="20220110023000 +0000" channel="CNNInternationalEurope.us"><title lang="ru">African Voices Changemakers. 114-я серия</title><desc lang="ru">114-я серия. Африка сегодня - люди, новости, события.</desc></programme>
|
||||||
|
|
|
@ -6,10 +6,7 @@ beforeEach(() => {
|
||||||
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
||||||
fs.mkdirSync('tests/__data__/output')
|
fs.mkdirSync('tests/__data__/output')
|
||||||
fs.mkdirSync('tests/__data__/temp/database', { recursive: true })
|
fs.mkdirSync('tests/__data__/temp/database', { recursive: true })
|
||||||
fs.copyFileSync(
|
fs.copyFileSync('tests/__data__/input/database/queue.db', 'tests/__data__/temp/database/queue.db')
|
||||||
'tests/__data__/input/database/channels.db',
|
|
||||||
'tests/__data__/temp/database/channels.db'
|
|
||||||
)
|
|
||||||
fs.copyFileSync(
|
fs.copyFileSync(
|
||||||
'tests/__data__/input/database/programs.db',
|
'tests/__data__/input/database/programs.db',
|
||||||
'tests/__data__/temp/database/programs.db'
|
'tests/__data__/temp/database/programs.db'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue