diff --git a/sites/comteco.com.bo.config.js b/sites/comteco.com.bo.config.js index 6def9c7a..021c913e 100644 --- a/sites/comteco.com.bo.config.js +++ b/sites/comteco.com.bo.config.js @@ -2,9 +2,11 @@ const jsdom = require('jsdom') const { JSDOM } = jsdom const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') const customParseFormat = require('dayjs/plugin/customParseFormat') dayjs.extend(utc) +dayjs.extend(timezone) dayjs.extend(customParseFormat) module.exports = { @@ -25,38 +27,43 @@ module.exports = { }, parser: function ({ content, date }) { const programs = [] - const dom = new JSDOM(content) - const items = dom.window.document.querySelectorAll('#datosasociados > div > .list-group-item') + const items = parseItems(content) items.forEach(item => { - const time = ( - item.querySelector('div > div.col-xs-11 > p > span') || { textContent: '' } - ).textContent - .toString() - .trim() - const title = ( - item.querySelector('div > div.col-xs-11 > p > strong') || { textContent: '' } - ).textContent - .toString() - .trim() - - if (time && title) { - const start = dayjs - .utc(time, 'HH:mm:ss') - .set('D', date.get('D')) - .set('M', date.get('M')) - .set('y', date.get('y')) - - if (programs.length && !programs[programs.length - 1].stop) { - programs[programs.length - 1].stop = start - } - - programs.push({ - title, - start: start.toString() - }) + const title = parseTitle(item) + let start = parseStart(item, date) + const stop = parseStop(item, date) + if (programs.length) { + programs[programs.length - 1].stop = start } + + programs.push({ title, start, stop }) }) return programs } } + +function parseStop(item, date) { + return date.tz('America/La_Paz').endOf('d') +} + +function parseStart(item, date) { + let time = ( + item.querySelector('div > div.col-xs-11 > p > span') || { textContent: '' } + ).textContent.trim() + time = `${date.format('MM/DD/YYYY')} ${time}` + + return dayjs.tz(time, 'MM/DD/YYYY HH:mm:ss', 'America/La_Paz') +} + +function parseTitle(item) { + return ( + item.querySelector('div > div.col-xs-11 > p > strong') || { textContent: '' } + ).textContent.trim() +} + +function parseItems(content) { + const dom = new JSDOM(content) + + return dom.window.document.querySelectorAll('#datosasociados > div > .list-group-item') +}