Merge pull request #339 from aarubui/skycom

Create sky.com.config.js
This commit is contained in:
Aleksandr Statciuk 2021-12-21 12:09:22 +03:00 committed by GitHub
commit aefabfa0c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 183 additions and 0 deletions

View file

@ -0,0 +1,35 @@
const dayjs = require('dayjs')
module.exports = {
site: 'sky.com',
url: function ({ date, channel }) {
return `https://epgservices.sky.com/5.2.2/api/2.0/channel/json/${channel.site_id}/${date.unix()}/86400/4`
},
logo: function ({ channel }) {
return `https://d2n0069hmnqmmx.cloudfront.net/epgdata/1.0/newchanlogos/400/160/skychb${channel.site_id}.png`
},
parser: function ({ content, date, channel }) {
const programs = []
const items = parseItems(content, channel)
items.forEach(item => {
programs.push({
title: item.t,
description: item.d,
start: dayjs.unix(item.s),
stop: dayjs.unix(item.s + item.m[1]),
icon: item.img
? `http://epgstatic.sky.com/epgdata/1.0/paimage/46/1/${item.img}`
: null
})
})
return programs
}
}
function parseItems(content, channel) {
const data = JSON.parse(content)
return data && data.listings ? data.listings[channel.site_id] : []
}

View file

@ -0,0 +1,59 @@
// npx epg-grabber --config=sites/sky.com/sky.com.config.js --channels=sites/sky.com/sky.com_uk.channels.xml --output=.gh-pages/guides/au/sky.com.epg.xml --days=2
const { parser, url, logo } = require('./sky.com.config.js')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-12-15', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '2002',
xmltv_id: 'BBCOneLondon.uk'
}
const content = `{"listings":{"2002":[{"s":1639446600,"t":"Question of Sport","audioDescription":false,"m":[27170,1800,1,1,"--"],"rr":"S","subtitleHearing":true,"sid":53228,"d":"14/36. In this Christmas special, Paddy, Sam and Ugo are joined by Anton Du Beke, Shaun Wallace, Big Zuu and Jules Breach. Also in HD. [S]","img":"lisa/5.2.2/linear/channel/7f80ef03-3d8a-4f73-bf7d-6b03f410c7a8/2002"},{"s":1639448400,"t":"Weather for the Week Ahead","audioDescription":false,"m":[27171,300,1,1,"--"],"rr":"S","subtitleHearing":true,"sid":64799,"d":"Detailed weather forecast. Also in HD. [S]","img":"lisa/5.2.2/linear/channel/8fcf08b7-4081-499a-bf63-d100908e2d75/2002"}]}}`
it('can generate valid url', () => {
expect(url({ channel, date })).toBe(
'https://epgservices.sky.com/5.2.2/api/2.0/channel/json/2002/1639526400/86400/4'
)
})
it('can generate valid logo url', () => {
expect(logo({ channel })).toBe(
'https://d2n0069hmnqmmx.cloudfront.net/epgdata/1.0/newchanlogos/400/160/skychb2002.png'
)
})
it('can parse response', () => {
const result = parser({ content, channel, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2021-12-14T01:50:00.000Z',
stop: '2021-12-14T02:20:00.000Z',
title: 'Question of Sport',
icon: 'http://epgstatic.sky.com/epgdata/1.0/paimage/46/1/lisa/5.2.2/linear/channel/7f80ef03-3d8a-4f73-bf7d-6b03f410c7a8/2002',
},
{
start: '2021-12-14T02:20:00.000Z',
stop: '2021-12-14T02:25:00.000Z',
title: 'Weather for the Week Ahead',
icon: 'http://epgstatic.sky.com/epgdata/1.0/paimage/46/1/lisa/5.2.2/linear/channel/8fcf08b7-4081-499a-bf63-d100908e2d75/2002',
}
])
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: `{"listings":{"2002":[]}}`
})
expect(result).toMatchObject([])
})

View file

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="sky.com">
<channels>
<channel lang="en" xmltv_id="4Music.uk" site_id="1758">4Music</channel>
<channel lang="en" xmltv_id="4Seven.uk" site_id="3150">4Seven</channel>
<channel lang="en" xmltv_id="5Select.uk" site_id="3028">5 Select</channel>
<channel lang="en" xmltv_id="5Star.uk" site_id="3023">5 Star</channel>
<channel lang="en" xmltv_id="5USA.uk" site_id="3022">5 USA</channel>
<channel lang="en" xmltv_id="92News.pk" site_id="3822">92 News</channel>
<channel lang="en" xmltv_id="AhlulbaytTV.uk" site_id="3701">Ahlulbayt TV</channel>
<channel lang="en" xmltv_id="AkaalChannelUK.uk" site_id="5087">Akaal Channel UK</channel>
<channel lang="en" xmltv_id="AljazeeraEnglish.qa" site_id="1023">Aljazeera English</channel>
<channel lang="en" xmltv_id="BBCFour.uk" site_id="2018">BBC Four</channel>
<channel lang="en" xmltv_id="BBCNews.uk" site_id="2011">BBC News</channel>
<channel lang="en" xmltv_id="BBCOne.uk" site_id="2076">BBC One</channel>
<channel lang="en" xmltv_id="BBCOneLondon.uk" site_id="2002">BBC One London</channel>
<channel lang="en" xmltv_id="BBCOneScotland.uk" site_id="2004">BBC One Scotland</channel>
<channel lang="en" xmltv_id="BBCParliament.uk" site_id="2072">BBC Parliament</channel>
<channel lang="en" xmltv_id="BBCRedButton1.uk" site_id="2051">BBC Red Button 1</channel>
<channel lang="en" xmltv_id="BBCTwo.uk" site_id="2006">BBC Two</channel>
<channel lang="en" xmltv_id="BlazeUK.us" site_id="1065">Blaze UK</channel>
<channel lang="en" xmltv_id="BoxHits.uk" site_id="1350">Box Hits</channel>
<channel lang="en" xmltv_id="BritAsiaTV.uk" site_id="3653">Brit Asia TV</channel>
<channel lang="en" xmltv_id="CBBC.uk" site_id="2020">CBBC</channel>
<channel lang="en" xmltv_id="CBeebiesUK.uk" site_id="2019">CBeebies UK</channel>
<channel lang="en" xmltv_id="CBSDramaUK.us" site_id="3617">CBS Drama UK</channel>
<channel lang="en" xmltv_id="CBSJusticeUK.us" site_id="4610">CBS Justice UK</channel>
<channel lang="en" xmltv_id="CBSRealityUK.us" site_id="3352">CBS Reality UK</channel>
<channel lang="en" xmltv_id="ChallengeUK.uk" site_id="2202">Challenge UK</channel>
<channel lang="en" xmltv_id="Channel5.uk" site_id="1800">Channel 5</channel>
<channel lang="en" xmltv_id="Channel5Plus1.uk" site_id="1839">Channel 5 +1</channel>
<channel lang="en" xmltv_id="CITV.uk" site_id="6273">CITV</channel>
<channel lang="en" xmltv_id="CreateandCraft.uk" site_id="1245">Create and Craft</channel>
<channel lang="en" xmltv_id="Cruise1stTV.uk" site_id="1018">Cruise 1st TV</channel>
<channel lang="en" xmltv_id="Davejavu.uk" site_id="2320">Dave ja vu</channel>
<channel lang="en" xmltv_id="DaveUK.uk" site_id="2306">Dave UK</channel>
<channel lang="en" xmltv_id="DMAXUK.us" site_id="3618">DMAX UK</channel>
<channel lang="en" xmltv_id="DramaUK.uk" site_id="2612">Drama UK</channel>
<channel lang="en" xmltv_id="DramaUKPlus1.uk" site_id="1081">Drama UK +1</channel>
<channel lang="en" xmltv_id="E4UK.uk" site_id="1628">E4 UK</channel>
<channel lang="en" xmltv_id="E4UKPlus1.uk" site_id="3300">E4 UK +1</channel>
<channel lang="en" xmltv_id="EmanChannel.uk" site_id="3111">Eman Channel</channel>
<channel lang="en" xmltv_id="Film4UK.uk" site_id="1627">Film 4 UK</channel>
<channel lang="en" xmltv_id="Film4UKPlus1.uk" site_id="1629">Film 4 UK +1</channel>
<channel lang="en" xmltv_id="FoodNetworkUK.us" site_id="3590">Food Network UK</channel>
<channel lang="en" xmltv_id="ForcesTV.uk" site_id="5415">Forces TV</channel>
<channel lang="en" xmltv_id="FreeSports.uk" site_id="1150">FreeSports</channel>
<channel lang="en" xmltv_id="GemsTV.us" site_id="3010">Gems TV</channel>
<channel lang="en" xmltv_id="HGTVUK.us" site_id="2301">HGTV UK</channel>
<channel lang="en" xmltv_id="HorrorChannelUK.uk" site_id="3605">Horror Channel UK</channel>
<channel lang="en" xmltv_id="IdealExtra.uk" site_id="5740">Ideal Extra</channel>
<channel lang="en" xmltv_id="IdealWorld.uk" site_id="1244">Ideal World</channel>
<channel lang="en" xmltv_id="ITV2.uk" site_id="6240">ITV 2</channel>
<channel lang="en" xmltv_id="ITV2Plus1.uk" site_id="6241">ITV 2 +1</channel>
<channel lang="en" xmltv_id="ITV3.uk" site_id="6260">ITV 3</channel>
<channel lang="en" xmltv_id="ITV3Plus1.uk" site_id="6261">ITV 3 +1</channel>
<channel lang="en" xmltv_id="ITV4.uk" site_id="6272">ITV 4</channel>
<channel lang="en" xmltv_id="ITV4Plus1.uk" site_id="6274">ITV 4 +1</channel>
<channel lang="en" xmltv_id="ITVBe.uk" site_id="6508">ITV Be</channel>
<channel lang="en" xmltv_id="ITVLondon.uk" site_id="6000">ITV London</channel>
<channel lang="en" xmltv_id="JewelleryMaker.uk" site_id="3354">Jewellery Maker</channel>
<channel lang="en" xmltv_id="KanshiTV.uk" site_id="3753">Kanshi TV</channel>
<channel lang="en" xmltv_id="LondonLive.uk" site_id="5090">London Live</channel>
<channel lang="en" xmltv_id="More4UK.uk" site_id="3340">More 4 UK</channel>
<channel lang="en" xmltv_id="Now80s.uk" site_id="3682">Now 80&apos;s</channel>
<channel lang="en" xmltv_id="ParamountNetworkUK.us" site_id="1036">Paramount Network UK</channel>
<channel lang="en" xmltv_id="PBSAmerica.us" site_id="5500">PBS America</channel>
<channel lang="en" xmltv_id="PickUK.uk" site_id="1832">Pick UK</channel>
<channel lang="en" xmltv_id="Pop.uk" site_id="3750">Pop</channel>
<channel lang="en" xmltv_id="QuestRedUK.us" site_id="2411">Quest Red UK</channel>
<channel lang="en" xmltv_id="QuestRedUKPlus1.us" site_id="4547">Quest Red UK +1</channel>
<channel lang="en" xmltv_id="QVCBeauty.us" site_id="4105">QVC Beauty</channel>
<channel lang="en" xmltv_id="QVCStyleUK.us" site_id="4410">QVC Style UK</channel>
<channel lang="en" xmltv_id="RacingTV.uk" site_id="3636">Racing TV</channel>
<channel lang="en" xmltv_id="ReallyUK.uk" site_id="2325">Really UK</channel>
<channel lang="en" xmltv_id="RTUK.ru" site_id="3213">RT UK</channel>
<channel lang="en" xmltv_id="SangatTV.uk" site_id="3355">Sangat TV</channel>
<channel lang="en" xmltv_id="SkyArtsUK.uk" site_id="1752">Sky Arts UK</channel>
<channel lang="en" xmltv_id="SmithsonianChannelUK.us" site_id="1089">Smithsonian Channel UK</channel>
<channel lang="en" xmltv_id="SpotlightTV.uk" site_id="4933">Spotlight TV</channel>
<channel lang="en" xmltv_id="TalkingPicturesTV.uk" site_id="5252">Talking Pictures TV</channel>
<channel lang="en" xmltv_id="TBNUK.us" site_id="3109">TBN UK</channel>
<channel lang="en" xmltv_id="TinyPop.uk" site_id="3780">Tiny Pop</channel>
<channel lang="en" xmltv_id="TJC.uk" site_id="1033">TJC</channel>
<channel lang="en" xmltv_id="TogetherTV.uk" site_id="1872">Together TV</channel>
<channel lang="en" xmltv_id="Yesterday.uk" site_id="2305">Yesterday</channel>
<channel lang="en" xmltv_id="YesterdayPlus1.uk" site_id="2615">Yesterday +1</channel>
</channels>
</site>