From 4b95ac16f858644ec3da94b9d7ac1883439cb300 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Sun, 20 Nov 2022 17:37:29 +0300 Subject: [PATCH] Update i.mjh.nz.config.js --- sites/i.mjh.nz/i.mjh.nz.config.js | 69 +++++++------------------------ 1 file changed, 16 insertions(+), 53 deletions(-) diff --git a/sites/i.mjh.nz/i.mjh.nz.config.js b/sites/i.mjh.nz/i.mjh.nz.config.js index fff66b18..5a696e54 100644 --- a/sites/i.mjh.nz/i.mjh.nz.config.js +++ b/sites/i.mjh.nz/i.mjh.nz.config.js @@ -7,78 +7,41 @@ const customParseFormat = require('dayjs/plugin/customParseFormat') dayjs.extend(isBetween) dayjs.extend(customParseFormat) +const API_ENDPOINT = 'https://raw.githubusercontent.com/matthuisman/i.mjh.nz/master' + module.exports = { site: 'i.mjh.nz', request: { cache: { - ttl: 6 * 60 * 60 * 1000 // 6h + ttl: 3 * 60 * 60 * 1000 // 3h }, - maxContentLength: 20 * 1024 * 1024 // 20Mb + maxContentLength: 30 * 1024 * 1024 // 30Mb }, url: function ({ channel }) { - const [source] = channel.site_id.split('#') + const [path] = channel.site_id.split('#') - return `https://raw.githubusercontent.com/matthuisman/i.mjh.nz/master/${source}.xml` + return `${API_ENDPOINT}/${path}.xml` }, parser: function ({ content, channel, date, cached }) { - let programs = [] - const items = parseItems(content, channel, date) - items.forEach(item => { - programs.push({ - title: parseTitle(item, channel), - description: parseDescription(item, channel), - category: parseCategory(item, channel), - start: parseStart(item), - stop: parseStop(item) - }) - }) - - return programs + return parseItems(content, channel, date) }, async channels({ path, lang = 'en' }) { - const [service] = path.split('/') - let data = await axios - .get(`https://i.mjh.nz/${service}/app.json`) + let xml = await axios + .get(`${API_ENDPOINT}/${path}.xml`) .then(r => r.data) .catch(console.log) + let data = parser.parse(xml) - const channels = [] - const items = data.channels || data - for (let id in items) { - const channel = items[id] - channels.push({ + return data.channels.map(channel => { + return { lang, - site_id: `${path}#${id}`, - name: channel.name - }) - } - - return channels + site_id: `${path}#${channel.id}`, + name: channel.name[0].value + } + }) } } -function parseTitle(item, channel) { - return item.title.length ? item.title[0].value : null -} - -function parseDescription(item, channel) { - return item.desc.length ? item.desc[0].value : null -} - -function parseCategory(item, channel) { - const category = item.category.length ? item.category[0].value : '' - - return category.split(/\s\&\;\s/g).filter(c => c) -} - -function parseStart(item) { - return dayjs(item.start, 'YYYYMMDDHHmmss ZZ') -} - -function parseStop(item) { - return dayjs(item.stop, 'YYYYMMDDHHmmss ZZ') -} - function parseItems(content, channel, date) { try { const curr_day = date