diff --git a/sites/guidatv.sky.it/__data__/content.json b/sites/guidatv.sky.it/__data__/content.json
index a391e8bf..eefa90e0 100644
--- a/sites/guidatv.sky.it/__data__/content.json
+++ b/sites/guidatv.sky.it/__data__/content.json
@@ -1 +1 @@
-{"events": [ { "channel": { "id": 10458, "logo": "/logo/545820mediasethd_Light_Fit.png", "logoPadding": "/logo/545820mediasethd_Light_Padding.png", "logoDark": "/logo/545820mediasethd_Dark_Fit.png", "logoDarkPadding": "/logo/545820mediasethd_Dark_Padding.png", "logoLight": "/logo/545820mediasethd_Light_Padding.png", "name": "20Mediaset HD", "number": 151, "category": { "id": 3, "name": "Intrattenimento" } }, "content": { "uuid": "77c630aa-4744-44cb-a88e-3e871c6b73d9", "contentTitle": "Distretto di Polizia", "episodeNumber": 26, "seasonNumber": 6, "url": "/serie-tv/distretto-di-polizia/stagione-6/episodio-26/77c630aa-4744-44cb-a88e-3e871c6b73d9", "genre": { "id": 1, "name": "Intrattenimento" }, "subgenre": { "id": 9, "name": "Fiction" }, "imagesMap": [ { "key": "background", "img": { "url": "/uuid/77c630aa-4744-44cb-a88e-3e871c6b73d9/background?md5ChecksumParam=88d3f48ce855316f4be25ab9bb846d32" } }, { "key": "cover", "img": { "url": "/uuid/77c630aa-4744-44cb-a88e-3e871c6b73d9/cover?md5ChecksumParam=61135b999a63e3d3f4a933b9edeb0c1b" } }, { "key": "scene", "img": { "url": "/uuid/77c630aa-4744-44cb-a88e-3e871c6b73d9/16-9?md5ChecksumParam=f41bfe414bec32505abdab19d00b8b43" } } ] }, "eventId": "139585132", "starttime": "2022-05-06T00:35:40Z", "endtime": "2022-05-06T01:15:40Z", "eventTitle": "Distretto di Polizia", "eventSynopsis": "S6 Ep26 La resa dei conti - Fino all'ultimo la sfida tra Ardenzi e Carrano, nemici di vecchia data, riserva clamorosi colpi di scena. E si scopre che non e' tutto come sembrava.", "epgEventTitle": "S6 Ep26 - Distretto di Polizia", "primeVision": false, "resolutions": [ { "resolutionType": "resolution4k", "value": false } ] }]}
\ No newline at end of file
+{"events": [ { "channel": { "id": 10458, "logo": "/logo/545820mediasethd_Light_Fit.png", "logoPadding": "/logo/545820mediasethd_Light_Padding.png", "logoDark": "/logo/545820mediasethd_Dark_Fit.png", "logoDarkPadding": "/logo/545820mediasethd_Dark_Padding.png", "logoLight": "/logo/545820mediasethd_Light_Padding.png", "name": "20Mediaset HD", "number": 151, "category": { "id": 3, "name": "Intrattenimento" } }, "content": { "uuid": "77c630aa-4744-44cb-a88e-3e871c6b73d9", "contentTitle": "Distretto di Polizia", "episodeNumber": 26, "seasonNumber": 6, "url": "/serie-tv/distretto-di-polizia/stagione-6/episodio-26/77c630aa-4744-44cb-a88e-3e871c6b73d9", "genre": { "id": 1, "name": "Intrattenimento" }, "subgenre": { "id": 9, "name": "Fiction" }, "imagesMap": [ { "key": "background", "img": { "url": "/uuid/77c630aa-4744-44cb-a88e-3e871c6b73d9/background?md5ChecksumParam=88d3f48ce855316f4be25ab9bb846d32" } }, { "key": "cover", "img": { "url": "/uuid/77c630aa-4744-44cb-a88e-3e871c6b73d9/cover?md5ChecksumParam=61135b999a63e3d3f4a933b9edeb0c1b" } }, { "key": "scene", "img": { "url": "/uuid/77c630aa-4744-44cb-a88e-3e871c6b73d9/16-9?md5ChecksumParam=f41bfe414bec32505abdab19d00b8b43" } } ] }, "eventId": "139585132", "starttime": "2022-05-06T00:35:40Z", "endtime": "2022-05-06T01:15:40Z", "eventTitle": "Distretto di Polizia", "eventSynopsis": "S6 Ep26 La resa dei conti - Fino all'ultimo la sfida tra Ardenzi e Carrano, nemici di vecchia data, riserva clamorosi colpi di scena. E si scopre che non e' tutto come sembrava.", "epgEventTitle": "S6 Ep26 - Distretto di Polizia", "primeVision": false, "resolutions": [ { "resolutionType": "resolution4k", "value": false } ] }]}
diff --git a/sites/guidatv.sky.it/guidatv.sky.it.channels.xml b/sites/guidatv.sky.it/guidatv.sky.it.channels.xml
index 9ce5c458..8aaf24a8 100644
--- a/sites/guidatv.sky.it/guidatv.sky.it.channels.xml
+++ b/sites/guidatv.sky.it/guidatv.sky.it.channels.xml
@@ -1,64 +1,157 @@
- Boomerang
- Canale 5
- Cartoon Network
- cielo
- CNN Intl.
- Comedy Central
- DeAJunior
+ Al Jazeera Intl. HD
+ Bloomberg
+ CNN Intl.
+ Euronews
+ Fox Business
+ Fox News
+ France 24 English HD
+ France 24 Francais HD
+ 20Mediaset HD
+ ACI Sport TV
+ BBC World News
+ BIKE
+ Boing
+ Boomerang
+ Boomerang +1
+ CACCIA e Pesca
+ Canale 5 HD
+ CARTOONITO DTT
+ Cartoon Network
+ Cartoon Network +1
+ cielo
+ Cine34 HD
+ Class CNBC
+ Sky Classica
+ CNBC HD
+ Comedy Central
+ Comedy +1
+ DeAJunior
DeAKids
- Gambero Rosso
- History
- Italia 1
- LA7
- MTV
+ DeAKids +1
+ Deejay TV
+ EQUtv
+ Fashion TV
+ Focus HD
+ Gambero Rosso HD
+ Gambero Rosso HD
+ History
+ History +1
+ Horse TV HD
+ Inter TV
+ Iris HD
+ Italia 1 HD
+ Mediaset Italia2 HD
+ La 5 HD
+ LA7D
+ LA7 HD
+ Mediaset Extra HD
+ Milan TV
+ MTV HD
+ MTV Music
+ MTV Music
+ NHK World TV HD
Nickelodeon
- Nick Jr
- Rai 1
- Rai 2
- Rai 3
- Rete 4
- Sky Adventure
- Sky Arte
- Sky Atlantic
- Sky Cinema Action
- Sky Cinema Collection
- Sky Cinema Comedy
- Sky Cinema Drama
- Sky Cinema Due
- Sky Cinema Family
- Sky Cinema Romance
- Sky Cinema Suspense
- Sky Cinema Uno
- Sky Crime
- Sky Documentaries
- Sky Investigation
- Sky Nature
- Sky Serie
- Sky Sport24
- Sky Sport 251
- Sky Sport 252
- Sky Sport 253
- Sky Sport 254
- Sky Sport 255
- Sky Sport 256
- Sky Sport 257
- Sky Sport 258
- Sky Sport 259
- Sky Sport Arena
- Sky Sport Calcio
- Sky Sport F1
- Sky Sport Golf
- Sky Sport Legend
- Sky Sport Max
- Sky Sport Mix
- Sky Sport MotoGP
- Sky Sport Basket
- Sky Sport Tennis
- Sky Sport Uno
- Sky TG24
- Sky Uno
- SuperTennis
- TV8
-
\ No newline at end of file
+ Nickelodeon +1
+ Nick Jr
+ Nick Jr. +1
+ Caccia e PESCA
+ QVC
+ RADIOFRECCIA HD
+ Radio Italia Trend Tv HD
+ Radio Italia TV HD
+ Radio Monte Carlo
+ RADIONORBA TV
+ Rai 1 HD
+ Rai 2 HD
+ Rai 3 HD
+ Rai 4
+ Rai 5
+ Rai Gulp
+ Rai Movie
+ Rai News 24
+ Rai Premium
+ RAI Sport
+ Rai Storia
+ Rai Yoyo
+ Rete 4 HD
+ RTL 102.5 HD
+ San Marino RTV
+ Sky Adventure
+ Sky Adventure
+ Sky Arte
+ Sky Arte
+ Sky Atlantic
+ Sky Atlantic HD +1
+ Sky Calcio 10
+ Sky Calcio 11
+ Sky Cinema Action
+ Sky Cinema Collection
+ Sky Cinema Comedy
+ Sky Cinema Drama
+ Sky Cinema Due
+ Sky Cinema Due +24
+ Sky Cinema Family
+ Sky Cinema Romance
+ Sky Cinema Suspense
+ Sky Cinema Uno
+ Sky Cinema Uno +24
+ Sky Crime
+ Sky Crime
+ Sky Documentaries
+ Sky Documentaries
+ Sky Documentaries +1 HD
+ Sky Documentaries +1 HD
+ Sky Investigation
+ Sky Investigation +1 HD
+ Sky Meteo24
+ Sky Nature
+ Sky Nature
+ Sky News
+ Sky Serie
+ Sky Serie +1
+ Sky Sport 4K
+ Sky Sport24
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport
+ Sky Sport Arena
+ Sky Sport Arena
+ Sky Sport Basket
+ Sky Sport Calcio
+ Sky Sport F1
+ Sky Sport Golf
+ Sky Sport Legend
+ Sky Sport Max
+ Sky Sport Mix
+ Sky Sport MotoGP
+ Sky Sport Basket
+ Sky Sport Tennis
+ Sky Sport Uno
+ Sky TG24
+ TG24PrimoPiano
+ Sky Uno
+ Sky Uno +1
+ Super!
+ SuperTennis HD
+ TgCom24 HD
+ TG NORBA 24
+ TOPcrime HD
+ TRM h24
+ TV8 HD
+ TV2000 HD
+ 27Twentyseven HD
+ VALUE 24 TV
+ Virgin Radio
+ DAZN 2
+ DAZN3
+ DAZN4
+ DAZN 1
+
diff --git a/sites/guidatv.sky.it/guidatv.sky.it.config.js b/sites/guidatv.sky.it/guidatv.sky.it.config.js
index 0649292f..cfd38653 100644
--- a/sites/guidatv.sky.it/guidatv.sky.it.config.js
+++ b/sites/guidatv.sky.it/guidatv.sky.it.config.js
@@ -1,4 +1,5 @@
const dayjs = require('dayjs')
+const axios = require('axios')
module.exports = {
site: 'guidatv.sky.it',
@@ -31,29 +32,21 @@ module.exports = {
return programs
},
async channels() {
- const axios = require('axios')
- const cheerio = require('cheerio')
+ const res = await axios.get('https://apid.sky.it/gtv/v1/channels?env=DTH')
+ const list = res.data?.channels || []
+ const channels = list.map(ch => {
+ const num = (ch.number >= 251 && ch.number <= 259) ? ch.number : ''
+ const hd = /\bHD\b/i.test(ch.name)
+ const plus = ch.name.match(/\+(1|24)\b/)?.[1]
+ const feeds = (hd ? '@HD' : '') + (plus ? (plus === '1' ? '@Plus1' : '@Plus24') : '')
- const data = await axios
- .get('https://guidatv.sky.it/canali')
- .then(r => r.data)
- .catch(console.log)
-
- const $ = cheerio.load(data)
-
- let channels = []
- $('.c-channelsCard__container').each((i, el) => {
- const name = $(el).find('.c-channelsCard__title').text()
- const url = $(el).find('.c-channelsCard__link').attr('href')
- const [, channelId] = url.match(/\/(\d+)$/)
-
- channels.push({
+ return {
lang: 'it',
- site_id: `DTH#${channelId}`,
- name
- })
+ site_id: `DTH#${ch.id}`,
+ name: ch.name,
+ xmltv_id: ch.name.replace(/ |HD|\+1/g, '') + num + '.it' + feeds,
+ }
})
-
return channels
}
}
diff --git a/sites/guidatv.sky.it/guidatv.sky.it.test.js b/sites/guidatv.sky.it/guidatv.sky.it.test.js
index 6ed28155..be1c2d1d 100644
--- a/sites/guidatv.sky.it/guidatv.sky.it.test.js
+++ b/sites/guidatv.sky.it/guidatv.sky.it.test.js
@@ -1,6 +1,7 @@
-const { parser, url } = require('./guidatv.sky.it.config.js')
+const { parser, url, channels } = require('./guidatv.sky.it.config.js')
const fs = require('fs')
const path = require('path')
+const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
@@ -50,3 +51,23 @@ it('can handle empty guide', () => {
})
expect(result).toMatchObject([])
})
+
+it('can parse channel list', async () => {
+ const mockResponse = fs.readFileSync(path.join(__dirname, '__data__', 'data.json'), 'utf8')
+ axios.get = jest.fn().mockResolvedValue({ data: JSON.parse(mockResponse) })
+ const results = await channels()
+
+ expect(results.length).toBe(154)
+ expect(results[0]).toMatchObject({
+ site_id: 'DTH#9115',
+ name: 'Sky Uno',
+ lang: 'it',
+ xmltv_id: 'SkyUno.it',
+ })
+ expect(results[29]).toMatchObject({
+ site_id: 'DTH#9094',
+ name: 'Sky Sport24',
+ lang: 'it',
+ xmltv_id: 'SkySport24.it',
+ })
+})