diff --git a/sites/directv.com/directv.com.config.js b/sites/directv.com/directv.com.config.js index 4b1e9e95..f5858e5e 100644 --- a/sites/directv.com/directv.com.config.js +++ b/sites/directv.com/directv.com.config.js @@ -1,3 +1,5 @@ +const { padStart } = require('lodash') +const cheerio = require('cheerio') const axios = require('axios') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') @@ -34,6 +36,32 @@ module.exports = { } return programs + }, + async channels({ country }) { + const html = await axios + .get(`https://www.directv.com/guide`) + .then(r => r.data) + .catch(console.log) + + const $ = cheerio.load(html) + const script = $('#dtvClientData').html() + const [_, json] = script.match(/var dtvClientData = (.*);/) || [null, null] + const data = JSON.parse(json) + + let items = data.guideData.channels + + return items.map(item => { + return { + lang: 'en', + site_id: item.chNum, + name: item.chName, + logo: `https://www.directv.com/images/logos/channels/dark/large/${padStart( + item.chLogoId, + 3, + '0' + )}.png` + } + }) } } diff --git a/sites/directv.com/directv.com.test.js b/sites/directv.com/directv.com.test.js index b1b9d845..7c285a9c 100644 --- a/sites/directv.com/directv.com.test.js +++ b/sites/directv.com/directv.com.test.js @@ -1,3 +1,4 @@ +// node ./scripts/commands/parse-channels.js --config=./sites/directv.com/directv.com.config.js --output=./sites/directv.com/directv.com_us.channels.xml // npx epg-grabber --config=sites/directv.com/directv.com.config.js --channels=sites/directv.com/directv.com_us.channels.xml --output=guide.xml --days=2 const { parser, url, logo } = require('./directv.com.config.js')