Optimized parseItems to only process requested date, improved config to accept context as per spec, fixed test parameter.

This commit is contained in:
Arif Budiman 2023-08-21 10:48:27 -07:00
parent 5e32930c75
commit 307da2bb7c
2 changed files with 28 additions and 21 deletions

View file

@ -35,8 +35,7 @@ module.exports = {
parser: function (context) { parser: function (context) {
const programs = [] const programs = []
const items = parseItems(context)
const items = parseItems(context.content)
items.forEach(function(item, i) { items.forEach(function(item, i) {
programs.push({ programs.push({
@ -51,14 +50,16 @@ module.exports = {
} }
} }
function parseItems(content) { function parseItems(context) {
const $ = cheerio.load(content) const $ = cheerio.load(context.content)
const schDayMonths = $('.date-slider .slide').toArray() const schDayMonths = $('.date-slider .month').toArray()
const schPrograms = $('.desc-slider .list-slider').toArray() const schPrograms = $('.desc-slider .list-slider').toArray()
let items = []; const monthDate = dayjs(context.date).format('MMM D')
const items = [];
schDayMonths.forEach(function(schDayMonth, i) { schDayMonths.forEach(function(schDayMonth, i) {
if (monthDate == $(schDayMonth).text()) {
let schDayPrograms = $(schPrograms[i]).find('.accordion').toArray() let schDayPrograms = $(schPrograms[i]).find('.accordion').toArray()
//let schDayPrograms = $('.accordion').toArray()
schDayPrograms.forEach(function(program, i) { schDayPrograms.forEach(function(program, i) {
let itemDay = { let itemDay = {
progStart: parseStart(schDayMonth, program), progStart: parseStart(schDayMonth, program),
@ -68,6 +69,7 @@ function parseItems(content) {
}; };
items.push(itemDay) items.push(itemDay)
}) })
}
}) })
return items return items
@ -82,14 +84,14 @@ function parseDescription(item) {
} }
function parseStart(schDayMonth, item) { function parseStart(schDayMonth, item) {
let monthDate = cheerio.load(schDayMonth)('.slide .month').text().split(' ') let monthDate = cheerio.load(schDayMonth).text().split(' ')
let startTime = cheerio.load(item)('.pkl').text() let startTime = cheerio.load(item)('.pkl').text()
let progStart = dayjs.tz(currentYear + ' ' + monthDate[0] + ' ' + monthDate[1] + ' ' + startTime, 'YYYY MMM DD HH:mm', 'Asia/Jakarta') let progStart = dayjs.tz(currentYear + ' ' + monthDate[0] + ' ' + monthDate[1] + ' ' + startTime, 'YYYY MMM DD HH:mm', 'Asia/Jakarta')
return progStart return progStart
} }
function parseStop(schDayMonth, itemCurrent, itemNext) { function parseStop(schDayMonth, itemCurrent, itemNext) {
let monthDate = cheerio.load(schDayMonth)('.slide .month').text().split(' ') let monthDate = cheerio.load(schDayMonth).text().split(' ')
if (itemNext) { if (itemNext) {
let stopTime = cheerio.load(itemNext)('.pkl').text() let stopTime = cheerio.load(itemNext)('.pkl').text()

File diff suppressed because one or more lines are too long