8 files changed
+90
-56
No files matched your search
@@ -0,0 +1 @@
|
||||
{"Total":4737,"Channels":[{"Number":"101","Tag":"MHD","Name":"M-Net West HD","Programmes":[{"Id":"961fc713-c430-456f-a893-e2955c77edf3","StartTime":"2022-11-22T00:00:00","EndTime":"2022-11-22T01:00:00","Title":"Crossfire"},{"Id":"203bfdf1-ca86-4588-81bb-449eae4e3982","StartTime":"2022-11-22T01:00:00","EndTime":"2022-11-22T02:00:00","Title":"Evil"},{"Id":"6efae6cd-2fe7-48cf-9ea5-f00503191f2f","StartTime":"2022-11-22T02:00:00","EndTime":"2022-11-22T03:00:00","Title":"Let The Right One In"},{"Id":"db95b5c3-28f6-41dc-a380-c8a46f32f1ae","StartTime":"2022-11-22T03:00:00","EndTime":"2022-11-22T04:30:00","Title":"Cloudy With A Chance Of Meatballs"},{"Id":"b366a013-cb0c-4f08-bc27-8d35d6df9816","StartTime":"2022-11-22T04:30:00","EndTime":"2022-11-22T05:00:00","Title":"Young Rock"},{"Id":"73ef9827-39d3-4de7-b3aa-55027ce054f9","StartTime":"2022-11-22T05:00:00","EndTime":"2022-11-22T06:00:00","Title":"9-1-1"},{"Id":"044f7d6c-0ffb-4f54-80c4-ce70cb0b601d","StartTime":"2022-11-22T06:00:00","EndTime":"2022-11-22T07:00:00","Title":"The Kelly Clarkson Show"},{"Id":"fcd250f0-0597-4907-b71e-8c3e4ece14a1","StartTime":"2022-11-22T07:00:00","EndTime":"2022-11-22T07:30:00","Title":"Mr. Mayor"},{"Id":"44d9f1a7-89e4-4c23-95a9-ab4f229069e6","StartTime":"2022-11-22T07:30:00","EndTime":"2022-11-22T08:30:00","Title":"MasterChef Australia"},{"Id":"11345a56-85ea-4102-98ec-015193974a56","StartTime":"2022-11-22T08:30:00","EndTime":"2022-11-22T10:00:00","Title":"Robin's Wish"},{"Id":"3744d716-2f6b-4f1b-82fe-7733c1530b36","StartTime":"2022-11-22T10:00:00","EndTime":"2022-11-22T10:25:00","Title":"The Goldbergs"},{"Id":"ac3ca7a3-9135-4332-8e57-74e6eec758d6","StartTime":"2022-11-22T10:25:00","EndTime":"2022-11-22T12:05:00","Title":"America's Got Talent"},{"Id":"68e27ce9-7257-42f0-8e80-dd6610bad0a7","StartTime":"2022-11-22T12:05:00","EndTime":"2022-11-22T12:30:00","Title":"How We Roll"},{"Id":"980a9213-81b9-4e5b-a17b-9f8cb2c859f8","StartTime":"2022-11-22T12:30:00","EndTime":"2022-11-22T13:30:00","Title":"The Kelly Clarkson Show"},{"Id":"d25f227c-7393-47d8-8748-f78757481649","StartTime":"2022-11-22T13:30:00","EndTime":"2022-11-22T14:30:00","Title":"MasterChef Australia"},{"Id":"2fe96036-2753-4626-806a-c26c26c3fb9c","StartTime":"2022-11-22T14:30:00","EndTime":"2022-11-22T15:30:00","Title":"New Amsterdam"},{"Id":"99a19620-a5dc-4e7a-ae67-f6b3ac709cea","StartTime":"2022-11-22T15:30:00","EndTime":"2022-11-22T16:30:00","Title":"First Lady"},{"Id":"3f3d4ec6-43af-4b5f-a3a2-b20b383d443c","StartTime":"2022-11-22T16:30:00","EndTime":"2022-11-22T17:30:00","Title":"9-1-1"},{"Id":"a0d59438-01c3-4d29-817a-977be151e41d","StartTime":"2022-11-22T17:30:00","EndTime":"2022-11-22T18:00:00","Title":"United States Of Al"},{"Id":"d8c724d5-c187-4683-ac7d-3f2e586d8b25","StartTime":"2022-11-22T18:00:00","EndTime":"2022-11-22T19:00:00","Title":"The Kelly Clarkson Show"},{"Id":"739ce41b-d55b-4718-916d-368d198f3392","StartTime":"2022-11-22T19:00:00","EndTime":"2022-11-22T20:00:00","Title":"MasterChef Australia"},{"Id":"dc8fa58e-c19b-46df-b5f0-03269821ca3f","StartTime":"2022-11-22T20:00:00","EndTime":"2022-11-22T21:00:00","Title":"Chicago Fire"},{"Id":"23516e19-fcec-4a03-b97a-d83e4920298c","StartTime":"2022-11-22T21:00:00","EndTime":"2022-11-22T22:00:00","Title":"Chicago Med"},{"Id":"ecf34d72-d327-4072-b96b-63f3e981efaf","StartTime":"2022-11-22T22:00:00","EndTime":"2022-11-22T23:00:00","Title":"Chicago PD"},{"Id":"e618c2b6-eba6-412e-bc62-062e6faccbd6","StartTime":"2022-11-22T23:00:00","EndTime":"2022-11-23T00:00:00","Title":"Julia"}]},{"Number":"103","Tag":"VUH","Name":"1 Magic","Programmes":[{"Id":"6ed28ec7-d97b-459f-b06c-debd9d351318","StartTime":"2022-11-22T00:00:00","EndTime":"2022-11-22T00:30:00","Title":"I Love That For You"},{"Id":"82484676-f3f0-4890-ba1b-d4a8f9dd2a31","StartTime":"2022-11-22T00:30:00","EndTime":"2022-11-22T01:00:00","Title":"I Love That For You"},{"Id":"3a939f83-36f8-4dfa-aed8-7e76f09713e2","StartTime":"2022-11-22T01:00:00","EndTime":"2022-11-22T02:00:00","Title":"Hustle & Soul"},{"Id":"a70dc1a7-f929-4052-b9d9-73a6809957c9","StartTime":"2022-11-22T02:00:00","EndTime":"2022-11-22T03:30:00","Title":"1Magic: Hits"},{"Id":"a3499624-e163-410f-9579-5752fed6439c","StartTime":"2022-11-22T03:30:00","EndTime":"2022-11-22T04:00:00","Title":"1Magic: Zone In"},{"Id":"94daa047-3c1c-4578-b5bf-ab8939341120","StartTime":"2022-11-22T04:00:00","EndTime":"2022-11-22T04:30:00","Title":"1Magic: Zone In"},{"Id":"8ab08a84-742f-4469-8726-b128542746a3","StartTime":"2022-11-22T04:30:00","EndTime":"2022-11-22T05:00:00","Title":"Lingashoni"},{"Id":"1399ac60-ba6c-4dd9-bae7-8a01ecb01f12","StartTime":"2022-11-22T05:00:00","EndTime":"2022-11-22T06:30:00","Title":"1Magic: Hits"},{"Id":"e98487fc-1ed9-4833-b718-5bb546452f52","StartTime":"2022-11-22T06:30:00","EndTime":"2022-11-22T07:00:00","Title":"The River"},{"Id":"98f787ff-d179-4d63-bd93-7079d857948e","StartTime":"2022-11-22T07:00:00","EndTime":"2022-11-22T07:30:00","Title":"Lingashoni"},{"Id":"f92c2674-c768-45a7-a55b-ec40fe043891","StLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"Total":5244,"Channels":[{"Number":"101","Tag":"HDT","Name":"M-Net HD","Programmes":[{"Id":"cf07bf43-9cff-4e9b-b89e-9c81a6aa5d5b","StartTime":"2022-11-21T23:08:00","EndTime":"2022-11-22T00:15:00","Title":"The Man Who Fell To Earth"},{"Id":"6cc6c6b4-4afd-4eb5-95fb-a4b6099ce238","StartTime":"2022-11-22T00:15:00","EndTime":"2022-11-22T01:15:00","Title":"Last Week Tonight With John Oliver"},{"Id":"9fc3be94-fe4a-48d0-b8fa-94d2ebe1da80","StartTime":"2022-11-22T01:15:00","EndTime":"2022-11-22T01:45:00","Title":"Ghosts"},{"Id":"006b642f-0861-4cce-8718-adc30bfbca22","StartTime":"2022-11-22T01:45:00","EndTime":"2022-11-22T02:35:00","Title":"Chicago PD"},{"Id":"a04049b9-1e4c-4a94-ba6b-1534e3b0f5d6","StartTime":"2022-11-22T02:35:00","EndTime":"2022-11-22T03:30:00","Title":"Blood & Treasure"},{"Id":"2bdf71a4-cb7c-4505-87d2-643903698b19","StartTime":"2022-11-22T03:30:00","EndTime":"2022-11-22T04:30:00","Title":"Monarch"},{"Id":"40631c30-23d6-4aa7-91d6-9b563faf9ae0","StartTime":"2022-11-22T04:30:00","EndTime":"2022-11-22T06:04:00","Title":"Cloudy With A Chance Of Meatballs"},{"Id":"3448452d-c18c-4627-9f28-aeb9507514ef","StartTime":"2022-11-22T06:04:00","EndTime":"2022-11-22T07:35:00","Title":"Sweet As Maple Syrup"},{"Id":"146e29be-1bb4-4e2d-9c7c-bd1e79efb980","StartTime":"2022-11-22T07:35:00","EndTime":"2022-11-22T08:02:00","Title":"How We Roll"},{"Id":"f3aa703e-caf1-4461-bc89-c16d13749a50","StartTime":"2022-11-22T08:02:00","EndTime":"2022-11-22T09:00:00","Title":"The Kelly Clarkson Show"},{"Id":"58e5f988-12df-45ae-b0c3-4acdc04ef20e","StartTime":"2022-11-22T09:00:00","EndTime":"2022-11-22T10:01:00","Title":"MasterChef Australia"},{"Id":"af59aa27-e872-4c5c-9f2a-5203ebfaa9a9","StartTime":"2022-11-22T10:01:00","EndTime":"2022-11-22T11:00:00","Title":"Bull"},{"Id":"61f3da16-a791-4543-a515-ae23353c0988","StartTime":"2022-11-22T11:00:00","EndTime":"2022-11-22T12:00:00","Title":"Blue Bloods"},{"Id":"45570c38-a505-4fea-803a-b06495f63c40","StartTime":"2022-11-22T12:00:00","EndTime":"2022-11-22T13:00:00","Title":"The Kelly Clarkson Show"},{"Id":"16bd1136-0cce-4cb8-9ef8-ed789c687224","StartTime":"2022-11-22T13:00:00","EndTime":"2022-11-22T14:01:00","Title":"MasterChef Australia"},{"Id":"2786a2f1-09e6-48a2-b164-a2e2c0c9e509","StartTime":"2022-11-22T14:01:00","EndTime":"2022-11-22T14:55:00","Title":"New Amsterdam"},{"Id":"6663385b-b18e-45e8-8806-57dd4cf60844","StartTime":"2022-11-22T14:55:00","EndTime":"2022-11-22T16:00:00","Title":"First Lady"},{"Id":"caab7594-56d1-44c8-b8d3-c420625576fa","StartTime":"2022-11-22T16:00:00","EndTime":"2022-11-22T17:00:00","Title":"9-1-1"},{"Id":"ddd010e7-2703-4b2f-85fa-686035bd70b4","StartTime":"2022-11-22T17:00:00","EndTime":"2022-11-22T17:56:00","Title":"The Kelly Clarkson Show"},{"Id":"4d7dfe01-fba0-43ef-acd9-44e015a97b35","StartTime":"2022-11-22T17:56:00","EndTime":"2022-11-22T19:00:00","Title":"MasterChef Australia"},{"Id":"e8cb1579-e749-4682-8fa8-cedd768c9e61","StartTime":"2022-11-22T19:00:00","EndTime":"2022-11-22T20:00:00","Title":"Chicago Fire"},{"Id":"027a4c03-64c0-4939-a219-0a816c05106a","StartTime":"2022-11-22T20:00:00","EndTime":"2022-11-22T21:00:00","Title":"Chicago Med"},{"Id":"2cb968f5-9e47-4ca3-a794-cc649402d256","StartTime":"2022-11-22T21:00:00","EndTime":"2022-11-22T22:00:00","Title":"Chicago PD"},{"Id":"9b381ac5-2b75-4d23-aa9b-e8bbea0ff75f","StartTime":"2022-11-22T22:00:00","EndTime":"2022-11-22T23:00:00","Title":"Julia"},{"Id":"af9aa86b-eebf-4437-bd64-bf5b57d08151","StartTime":"2022-11-22T23:00:00","EndTime":"2022-11-23T00:05:00","Title":"The Man Who Fell To Earth"}]},{"Number":"103","Tag":"VAM","Name":"1 Magic HD","Programmes":[{"Id":"ec46a080-581c-466e-ba1c-606c47c5395a","StartTime":"2022-11-21T22:00:00","EndTime":"2022-11-22T01:00:00","Title":"2022 American Music Awards"},{"Id":"d507c3da-8bea-40bc-a03c-a8050a4b7778","StartTime":"2022-11-22T01:00:00","EndTime":"2022-11-22T02:50:00","Title":"The Bachelorette"},{"Id":"3480a9a9-27bb-47bd-90d5-8d74ad336264","StartTime":"2022-11-22T02:50:00","EndTime":"2022-11-22T04:05:00","Title":"The Chi"},{"Id":"187d791a-0590-4b6a-a425-5033a25eecce","StartTime":"2022-11-22T04:05:00","EndTime":"2022-11-22T04:30:00","Title":"The River"},{"Id":"e97c6b86-e31f-4adb-bcd8-9824085559e2","StartTime":"2022-11-22T04:30:00","EndTime":"2022-11-22T04:55:00","Title":"Lingashoni"},{"Id":"f5d5934b-6b0f-4c27-8ee8-64f182d58817","StartTime":"2022-11-22T04:55:00","EndTime":"2022-11-22T06:00:00","Title":"The Talk"},{"Id":"fff71caf-4d4c-4b26-9bcc-02054dea1207","StartTime":"2022-11-22T06:00:00","EndTime":"2022-11-22T07:30:00","Title":"1Magic: Hits"},{"Id":"10761100-2baf-4d19-bcf8-dd216e1605b3","StartTime":"2022-11-22T07:30:00","EndTime":"2022-11-22T08:00:00","Title":"The River"},{"Id":"e553e936-fc89-4855-89e5-be685f70e186","StartTime":"2022-11-22T08:00:00","EndTime":"2022-11-22T08:30:00","Title":"Lingashoni"},{"Id":"994dc1fa-854a-44cb-a596-53ac7c044875","StartTime":"2022-11-22T08:30:00","EndTime":"2022-11-22T09:00:00","Title":"Yim' Lo!"},{"Id":"231f0339-43c5-40e4-b358-6Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"Id":"6d58931e-2192-486a-a202-14720136d204","ChannelTag":"H4N","Channel":"SuperSport Grandstand Nigeria HD","EventID":"H4N0000115474591","StartTime":"2022-11-22T01:00:00","EndTime":"2022-11-22T02:00:00","Duration":"01:00:00","Language":"eng","Title":"UFC FN HL: Nzechukwu v Cutelaba","Synopsis":"'UFC Fight Night Highlights - Heavyweight Bout: Kennedy Nzechukwu vs Ion Cutelaba'. From The UFC APEX Center - Las Vegas, USA.","Rating":null,"MainGenres":["Sport"],"SubGenres":["All Sport","Mixed Martial Arts"],"Items":[{"Key":"Source Key ID","Value":"200108412"}],"ThumbnailUri":"https://03mcdecdnimagerepository.blob.core.windows.net/epguideimage/img/271546_UFC Fight Night.png","MainContentID":"0x28E53D","MainGroupID":"0x00000000","SubGroupID":"0x00","LogLine":"MMA","StarRating":"0","AssociatedAd":false,"AssociatedApplication":false,"DolbyDigital":false,"Subtitles":false,"LastEpisodeFlag":false,"Series":false,"Special":false,"Macrovision":false,"PremierEvent":false,"FirstAiring":false,"Repeat":true,"LastRepeat":false,"LiveEvent":false,"DelayedEvent":false,"Recommendations":false,"HighDefinition":true,"Widescreen":false,"MultipleSountracks":false,"Captions":false,"SocialTags":false,"VidOnDemand":false,"VoDOnline":false,"BlockStream":false}
|
||||
@@ -0,0 +1 @@
|
||||
{"Id":"8b237235-aa17-4bb8-9ea6-097e7a813336","ChannelTag":"SH4","Channel":"SuperSport Grandstand HD","EventID":"SH40000115474622","StartTime":"2022-11-22T01:00:00","EndTime":"2022-11-22T02:00:00","Duration":"01:00:00","Language":"eng","Title":"UFC FN HL: Nzechukwu v Cutelaba","Synopsis":"'UFC Fight Night Highlights - Heavyweight Bout: Kennedy Nzechukwu vs Ion Cutelaba'. From The UFC APEX Center - Las Vegas, USA.","Rating":"16","MainGenres":["Sport"],"SubGenres":["All Sport","Mixed Martial Arts"],"Items":[{"Key":"Source Key ID","Value":"200108412"}],"ThumbnailUri":"https://03mcdecdnimagerepository.blob.core.windows.net/epguideimage/img/271546_UFC Fight Night.png","MainContentID":"0x28E53D","MainGroupID":"0x00873DD0","SubGroupID":"0x00","LogLine":"MMA","StarRating":"0","AssociatedAd":false,"AssociatedApplication":false,"DolbyDigital":false,"Subtitles":false,"LastEpisodeFlag":false,"Series":false,"Special":false,"Macrovision":false,"PremierEvent":false,"FirstAiring":false,"Repeat":true,"LastRepeat":false,"LiveEvent":false,"DelayedEvent":false,"Recommendations":false,"HighDefinition":true,"Widescreen":false,"MultipleSountracks":false,"Captions":false,"SocialTags":false,"VidOnDemand":false,"VoDOnline":false,"BlockStream":false}
|
||||
@@ -8,21 +8,23 @@ dayjs.extend(utc)
|
||||
dayjs.extend(timezone)
|
||||
dayjs.extend(customParseFormat)
|
||||
|
||||
const API_ENDPOINT = 'https://www.dstv.com/umbraco/api/TvGuide'
|
||||
|
||||
module.exports = {
|
||||
site: 'dstv.com',
|
||||
request: {
|
||||
cache: {
|
||||
ttl: 6 * 60 * 60 * 1000, // 6h
|
||||
ttl: 3 * 60 * 60 * 1000, // 3h
|
||||
interpretHeader: false
|
||||
}
|
||||
},
|
||||
url: function ({ channel, date }) {
|
||||
const [region] = channel.site_id.split('#')
|
||||
const packageName = region === 'nga' ? 'DStv%20Premium' : ''
|
||||
const packageName = region === 'nga' ? '&package=DStv%20Premium' : ''
|
||||
|
||||
return `https://www.dstv.com/umbraco/api/TvGuide/GetProgrammes?d=${date.format(
|
||||
return `${API_ENDPOINT}/GetProgrammes?d=${date.format(
|
||||
'YYYY-MM-DD'
|
||||
)}&package=${packageName}&country=${region}`
|
||||
)}${packageName}&country=${region}`
|
||||
},
|
||||
async parser({ content, channel, cached }) {
|
||||
let programs = []
|
||||
@@ -34,8 +36,8 @@ module.exports = {
|
||||
description: parseDescription(details),
|
||||
icon: parseIcon(details),
|
||||
category: parseCategory(details),
|
||||
start: parseTime(item.StartTime),
|
||||
stop: parseTime(item.EndTime)
|
||||
start: parseTime(item.StartTime, channel),
|
||||
stop: parseTime(item.EndTime, channel)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -43,9 +45,7 @@ module.exports = {
|
||||
},
|
||||
async channels({ country }) {
|
||||
const data = await axios
|
||||
.get(
|
||||
`https://www.dstv.com/umbraco/api/TvGuide/GetProgrammes?d=2022-03-10&package=DStv%20Premium&country=${country}`
|
||||
)
|
||||
.get(`${API_ENDPOINT}/GetProgrammes?d=2022-03-10&package=DStv%20Premium&country=${country}`)
|
||||
.then(r => r.data)
|
||||
.catch(console.log)
|
||||
|
||||
@@ -58,6 +58,16 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
|
||||
function parseTime(time, channel) {
|
||||
const [region] = channel.site_id.split('#')
|
||||
const tz = {
|
||||
zaf: 'Africa/Johannesburg',
|
||||
nga: 'Africa/Lagos'
|
||||
}
|
||||
|
||||
return dayjs.tz(time, 'YYYY-MM-DDTHH:mm:ss', tz[region])
|
||||
}
|
||||
|
||||
function parseDescription(details) {
|
||||
return details ? details.Synopsis : null
|
||||
}
|
||||
@@ -71,7 +81,7 @@ function parseCategory(details) {
|
||||
}
|
||||
|
||||
async function loadProgramDetails(item) {
|
||||
const url = `https://www.dstv.com/umbraco/api/TvGuide/GetProgramme?id=${item.Id}`
|
||||
const url = `${API_ENDPOINT}/GetProgramme?id=${item.Id}`
|
||||
|
||||
return axios
|
||||
.get(url)
|
||||
@@ -79,10 +89,6 @@ async function loadProgramDetails(item) {
|
||||
.catch(console.error)
|
||||
}
|
||||
|
||||
function parseTime(time) {
|
||||
return dayjs.utc(time, 'YYYY-MM-DDTHH:mm:ss')
|
||||
}
|
||||
|
||||
function parseItems(content, channel) {
|
||||
const [_, channelId] = channel.site_id.split('#')
|
||||
const data = JSON.parse(content)
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
const { parser, url } = require('./dstv.com.config.js')
|
||||
const axios = require('axios')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
@@ -13,68 +15,90 @@ dayjs.extend(utc)
|
||||
|
||||
jest.mock('axios')
|
||||
|
||||
const date = dayjs.utc('2022-03-11', 'YYYY-MM-DD').startOf('d')
|
||||
const API_ENDPOINT = 'https://www.dstv.com/umbraco/api/TvGuide'
|
||||
|
||||
const date = dayjs.utc('2022-11-22', 'YYYY-MM-DD').startOf('d')
|
||||
const channelZA = {
|
||||
site_id: 'zaf#101',
|
||||
xmltv_id: 'MNetWest.za'
|
||||
site_id: 'zaf#201',
|
||||
xmltv_id: 'SuperSportGrandstand.za'
|
||||
}
|
||||
const channelNG = {
|
||||
site_id: 'nga#101',
|
||||
xmltv_id: 'MNetWest.za'
|
||||
site_id: 'nga#201',
|
||||
xmltv_id: 'SuperSportGrandstand.za'
|
||||
}
|
||||
|
||||
it('can generate valid url for zaf', () => {
|
||||
expect(url({ channel: channelZA, date })).toBe(
|
||||
'https://www.dstv.com/umbraco/api/TvGuide/GetProgrammes?d=2022-03-11&package=&country=zaf'
|
||||
`${API_ENDPOINT}/GetProgrammes?d=2022-11-22&country=zaf`
|
||||
)
|
||||
})
|
||||
|
||||
it('can generate valid url for nga', () => {
|
||||
expect(url({ channel: channelNG, date })).toBe(
|
||||
'https://www.dstv.com/umbraco/api/TvGuide/GetProgrammes?d=2022-03-11&package=DStv%20Premium&country=nga'
|
||||
`${API_ENDPOINT}/GetProgrammes?d=2022-11-22&package=DStv%20Premium&country=nga`
|
||||
)
|
||||
})
|
||||
|
||||
it('can parse response', done => {
|
||||
const content = `{"Total":4483,"Channels":[{"Number":"214","Tag":"S34","Name":"TENNIS","Programmes":[{"Id":"5c5a56e8-9959-4305-ae2f-7cc32ec39f5f","StartTime":"2022-03-11T09:00:00","EndTime":"2022-03-11T09:15:00","Title":"WTA 1000 HL '22: Indian Wells D2 M1"}]},{"Number":"101","Tag":"HDT","Name":"M-Net HD","Programmes":[{"Id":"a6ada4cd-93df-4eaf-bab4-041e2537ed23","StartTime":"2022-03-11T00:10:00","EndTime":"2022-03-11T00:50:00","Title":"Curb Your Enthusiasm"}]}]}`
|
||||
it('can parse response for ZA', async () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content_zaf.json'))
|
||||
|
||||
axios.get.mockImplementation(url => {
|
||||
if (
|
||||
url ===
|
||||
'https://www.dstv.com/umbraco/api/TvGuide/GetProgramme?id=a6ada4cd-93df-4eaf-bab4-041e2537ed23'
|
||||
) {
|
||||
if (url === `${API_ENDPOINT}/GetProgramme?id=8b237235-aa17-4bb8-9ea6-097e7a813336`) {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"Id":"a6ada4cd-93df-4eaf-bab4-041e2537ed23","ChannelTag":"HDT","Channel":"M-Net Domestic HD","EventID":"HDT0000109067787","StartTime":"2022-03-11T00:10:00","EndTime":"2022-03-11T00:50:00","Duration":"00:40:00","Language":"eng","Title":"Curb Your Enthusiasm","Synopsis":"'S11/E6 of 10 - Man Fights Tiny Woman'. A general entertainment channel showcasing the best international content, focusing on scripted drama, comedy and talk.","Rating":"16","MainGenres":["Series"],"SubGenres":["Sitcom","Comedy"],"Items":[{"Key":"Year","Value":"2020"},{"Key":"Source Key ID","Value":"100338770"}],"ThumbnailUri":"https://03mcdecdnimagerepository.blob.core.windows.net/epguideimage/img/21893_curb_your_enthusiam169.jpg"}`
|
||||
)
|
||||
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/program_zaf.json')))
|
||||
})
|
||||
} else {
|
||||
return Promise.resolve({ data: '' })
|
||||
}
|
||||
})
|
||||
|
||||
parser({ content, channel: channelZA })
|
||||
.then(result => {
|
||||
result = result.map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
let results = await parser({ content, channel: channelZA })
|
||||
results = results.map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(result).toMatchObject([
|
||||
{
|
||||
start: '2022-03-11T00:10:00.000Z',
|
||||
stop: '2022-03-11T00:50:00.000Z',
|
||||
title: 'Curb Your Enthusiasm'
|
||||
// description:
|
||||
// "'S11/E6 of 10 - Man Fights Tiny Woman'. A general entertainment channel showcasing the best international content, focusing on scripted drama, comedy and talk.",
|
||||
// icon: 'https://03mcdecdnimagerepository.blob.core.windows.net/epguideimage/img/21893_curb_your_enthusiam169.jpg',
|
||||
// category: ['Sitcom', 'Comedy']
|
||||
}
|
||||
])
|
||||
done()
|
||||
})
|
||||
.catch(done)
|
||||
expect(results[1]).toMatchObject({
|
||||
start: '2022-11-21T23:00:00.000Z',
|
||||
stop: '2022-11-22T00:00:00.000Z',
|
||||
title: 'UFC FN HL: Nzechukwu v Cutelaba',
|
||||
description:
|
||||
"'UFC Fight Night Highlights - Heavyweight Bout: Kennedy Nzechukwu vs Ion Cutelaba'. From The UFC APEX Center - Las Vegas, USA.",
|
||||
icon: 'https://03mcdecdnimagerepository.blob.core.windows.net/epguideimage/img/271546_UFC Fight Night.png',
|
||||
category: ['All Sport', 'Mixed Martial Arts']
|
||||
})
|
||||
})
|
||||
|
||||
it('can parse response for NG', async () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content_nga.json'))
|
||||
|
||||
axios.get.mockImplementation(url => {
|
||||
if (url === `${API_ENDPOINT}/GetProgramme?id=6d58931e-2192-486a-a202-14720136d204`) {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/program_nga.json')))
|
||||
})
|
||||
} else {
|
||||
return Promise.resolve({ data: '' })
|
||||
}
|
||||
})
|
||||
|
||||
let results = await parser({ content, channel: channelNG })
|
||||
results = results.map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results[0]).toMatchObject({
|
||||
start: '2022-11-21T23:00:00.000Z',
|
||||
stop: '2022-11-22T00:00:00.000Z',
|
||||
title: 'UFC FN HL: Nzechukwu v Cutelaba',
|
||||
description:
|
||||
"'UFC Fight Night Highlights - Heavyweight Bout: Kennedy Nzechukwu vs Ion Cutelaba'. From The UFC APEX Center - Las Vegas, USA.",
|
||||
icon: 'https://03mcdecdnimagerepository.blob.core.windows.net/epguideimage/img/271546_UFC Fight Night.png',
|
||||
category: ['All Sport', 'Mixed Martial Arts']
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', done => {
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
<channel lang="en" xmltv_id="CCTVEntertainment.cn" site_id="nga#480">CCTV Entertainment – Mandarin Entertainment Channel</channel>
|
||||
<channel lang="en" xmltv_id="CGTN.cn" site_id="nga#409">CGTN News</channel>
|
||||
<channel lang="en" xmltv_id="CGTNDocumentary.cn" site_id="nga#448">CGTN Documentary</channel>
|
||||
<channel lang="fr" xmltv_id="CGTNFrench.cn" site_id="nga#449">CGTN French</channel>
|
||||
<channel lang="en" xmltv_id="ChinaMovieChannel.cn" site_id="nga#481">China Movie Channel</channel>
|
||||
<channel lang="en" xmltv_id="CitiTV.gh" site_id="nga#363">Citi TV</channel>
|
||||
<channel lang="en" xmltv_id="CNBCAfrica.za" site_id="nga#410">CNBC Africa</channel>
|
||||
@@ -51,9 +50,9 @@
|
||||
<channel lang="en" xmltv_id="ESPN2Africa.za" site_id="nga#219">ESPN 2 HD</channel>
|
||||
<channel lang="en" xmltv_id="ESPNAfrica.za" site_id="nga#218">ESPN</channel>
|
||||
<channel lang="en" xmltv_id="etvAfrica.za" site_id="nga#250">eTV Africa</channel>
|
||||
<channel lang="en" xmltv_id="EuronewsGerman.fr" site_id="nga#445">EuroNews German</channel>
|
||||
<channel lang="en" xmltv_id="EuronewsEnglish.fr" site_id="nga#414">EuroNews</channel>
|
||||
<channel lang="en" xmltv_id="EuronewsFrench.fr" site_id="nga#438">EuroNews French</channel>
|
||||
<channel lang="en" xmltv_id="EuronewsGerman.fr" site_id="nga#445">EuroNews German</channel>
|
||||
<channel lang="en" xmltv_id="EWTNAfricaAsia.us" site_id="nga#348">Eternal Word Television Network</channel>
|
||||
<channel lang="en" xmltv_id="FaithAfrica.za" site_id="nga#341">FAITH</channel>
|
||||
<channel lang="en" xmltv_id="FoodNetworkEMEA.us" site_id="nga#175">Food Network</channel>
|
||||
@@ -105,7 +104,6 @@
|
||||
<channel lang="en" xmltv_id="Rok.uk" site_id="nga#168">ROK</channel>
|
||||
<channel lang="en" xmltv_id="Rok2.uk" site_id="nga#169">ROK 2</channel>
|
||||
<channel lang="en" xmltv_id="RokGH.uk" site_id="nga#164">ROK GH</channel>
|
||||
<channel lang="pt" xmltv_id="RTPInternacional.pt" site_id="nga#525">RTPi (P)</channel>
|
||||
<channel lang="en" xmltv_id="SABCNews.za" site_id="nga#404">SABC News</channel>
|
||||
<channel lang="en" xmltv_id="SBNTVInternational.us" site_id="nga#345">SBN</channel>
|
||||
<channel lang="en" xmltv_id="SilverbirdTV.ng" site_id="nga#252">SILVERBIRD</channel>
|
||||
@@ -150,5 +148,7 @@
|
||||
<channel lang="en" xmltv_id="WWEChannel.za" site_id="nga#128">WWE Channel</channel>
|
||||
<channel lang="en" xmltv_id="ZeeWorld.za" site_id="nga#166">Zee World</channel>
|
||||
<channel lang="en" xmltv_id="ZhejiangSatelliteTV.cn" site_id="nga#484">Zhejiang TV</channel>
|
||||
<channel lang="fr" xmltv_id="CGTNFrench.cn" site_id="nga#449">CGTN French</channel>
|
||||
<channel lang="pt" xmltv_id="RTPInternacional.pt" site_id="nga#525">RTPi (P)</channel>
|
||||
</channels>
|
||||
</site>
|
||||
@@ -10,7 +10,6 @@
|
||||
<channel lang="en" xmltv_id="BayTV.za" site_id="zaf#260">Bay TV</channel>
|
||||
<channel lang="en" xmltv_id="BBCBritAfrica.uk" site_id="zaf#120">BBC Brit HD</channel>
|
||||
<channel lang="en" xmltv_id="BBCEarthAfrica.uk" site_id="zaf#184">BBC Earth HD</channel>
|
||||
<!-- <channel lang="en" xmltv_id="" site_id="zaf#119">BBC First HD</channel> -->
|
||||
<channel lang="en" xmltv_id="BBCLifestyleAfrica.uk" site_id="zaf#174">BBC Lifestyle</channel>
|
||||
<channel lang="en" xmltv_id="BBCWorldNewsAfrica.uk" site_id="zaf#400">BBC World News</channel>
|
||||
<channel lang="en" xmltv_id="BETAfrica.us" site_id="zaf#129">BET</channel>
|
||||
@@ -98,7 +97,6 @@
|
||||
<channel lang="en" xmltv_id="RealTimeAfrica.us" site_id="zaf#155">Real Time</channel>
|
||||
<channel lang="en" xmltv_id="Rok.uk" site_id="zaf#168">ROK</channel>
|
||||
<channel lang="en" xmltv_id="RT.ru" site_id="zaf#407">Russia Today</channel>
|
||||
<channel lang="pt" xmltv_id="RTPInternacional.pt" site_id="zaf#435">RTPI</channel>
|
||||
<channel lang="en" xmltv_id="SABC1.za" site_id="zaf#191">SABC 1 HD</channel>
|
||||
<channel lang="en" xmltv_id="SABC2.za" site_id="zaf#192">SABC 2 HD</channel>
|
||||
<channel lang="en" xmltv_id="SABC3.za" site_id="zaf#193">SABC 3 HD</channel>
|
||||
@@ -146,5 +144,7 @@
|
||||
<channel lang="en" xmltv_id="WildEarth.za" site_id="zaf#183">WildEarth</channel>
|
||||
<channel lang="en" xmltv_id="WWEChannel.za" site_id="zaf#236">WWE</channel>
|
||||
<channel lang="en" xmltv_id="ZeeWorld.za" site_id="zaf#166">Zee World HD</channel>
|
||||
<channel lang="pt" xmltv_id="RTPInternacional.pt" site_id="zaf#435">RTPI</channel>
|
||||
<!-- <channel lang="en" xmltv_id="" site_id="zaf#119">BBC First HD</channel> -->
|
||||
</channels>
|
||||
</site>
|
||||
Reference in new issue
Block a user