const cheerio = require('cheerio') 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 = { site: 'chada.ma', channels: 'chada.ma.channels.xml', days: 1, request: { cache: { ttl: 60 * 60 * 1000 // 1 hour } }, url() { return 'https://chada.ma/fr/chada-tv/grille-tv/' }, parser: function ({ content }) { const $ = cheerio.load(content) const programs = [] $('#stopfix .posts-area h2').each((i, element) => { const timeRange = $(element).text().trim() const [start, stop] = timeRange.split(' - ').map(t => parseProgramTime(t.trim())) const titleElement = $(element).next('div').next('h3') const title = titleElement.text().trim() const description = titleElement.next('div').text().trim() || 'No description available' programs.push({ title, description, start, stop }) }) return programs } } function parseProgramTime(timeStr) { const timeZone = 'Africa/Casablanca' const currentDate = dayjs().format('YYYY-MM-DD') return dayjs .tz(`${currentDate} ${timeStr}`, 'YYYY-MM-DD HH:mm', timeZone) .format('YYYY-MM-DDTHH:mm:ssZ') }