add france.tv, fix movistarplus, new tataplay channels

This commit is contained in:
theofficialomega
2026-02-19 15:12:30 +01:00
parent 2648af5698
commit 5bb220f428
15 changed files with 7802 additions and 5101 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="france.tv" site_id="arte" lang="fr" xmltv_id="arte.fr@HD">Arte</channel>
<channel site="france.tv" site_id="france-2" lang="fr" xmltv_id="France2.fr@HD">France 2</channel>
<channel site="france.tv" site_id="france-3" lang="fr" xmltv_id="France3.fr@HD">France 3</channel>
<channel site="france.tv" site_id="france-4" lang="fr" xmltv_id="France4.fr@HD">France 4</channel>
<channel site="france.tv" site_id="france-5" lang="fr" xmltv_id="France5.fr@HD">France 5</channel>
<channel site="france.tv" site_id="france-24" lang="fr" xmltv_id="France24.fr@HD">France 24</channel>
<channel site="france.tv" site_id="france-info" lang="fr" xmltv_id="FranceInfo.fr@HD">franceinfo:</channel>
<channel site="france.tv" site_id="lcp-public-senat" lang="fr" xmltv_id="LCPPublicSenat.fr@HD">LCP Public Sénat</channel>
<channel site="france.tv" site_id="mieux" lang="fr" xmltv_id="">Mieux</channel>
<channel site="france.tv" site_id="tv5-monde" lang="fr" xmltv_id="TV5Monde.fr@HD">TV5 Monde</channel>
<channel site="france.tv" site_id="sport" lang="fr" xmltv_id="">France.tv Sport</channel>
<channel site="france.tv" site_id="docs" lang="fr" xmltv_id="">France.tv Docs</channel>
<channel site="france.tv" site_id="series" lang="fr" xmltv_id="">France.tv Séries</channel>
<channel site="france.tv" site_id="ina" lang="fr" xmltv_id="">INA</channel>
<!--Channel below is for specific events, won't be used a lot-->
<channel site="france.tv" site_id="francetv" lang="fr" xmltv_id="">France.tv</channel>
</channels>

View File

@@ -0,0 +1,110 @@
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)
dayjs.tz.setDefault('Europe/Paris')
// Because France is excellent at pointing hours, their programs ALL start at 5/6 am,
// so we need to keep track of the earlier day's program to get the midnight programming. How... odd.
module.exports = {
site: 'france.tv',
days: 2,
url: function ({ channel, date }) {
return `https://www.france.tv/api/epg/videos/?date=${date.format('YYYY-MM-DD')}&channel=${channel.site_id}`
},
parser: function ({ content, date }) {
const programs = []
let items = []
try {
items = JSON.parse(content)
} catch {
return programs
}
items.forEach(item => {
const { start, stop } = parseDuration(date, item)
if (!start.isValid() || !stop.isValid()) return
// Can contain Season and Episode in title, but not always. If title is missing, skip the program
if (!item?.content?.title) return
let title = item.content.title
let season = null
let episode = null
const seMatch = title.match(/\s*-?\s*S(\d+)\s+E(\d+)\s*-?\s*/)
if (seMatch) {
season = parseInt(seMatch[1])
episode = parseInt(seMatch[2])
title = title.replace(seMatch[0], ' ').replace(/^\s+/, '').replace(/\s+$/, '').trim()
}
const fullTitle = (item.content.titleLeading ? item.content.titleLeading + (title ? ' - ' : '') : '') + title
programs.push({
title: fullTitle,
description: item.content.description,
image: getImageUrl(item),
icon: getImageUrl(item),
start,
stop,
season: season,
episode: episode,
rating: item.content.csa
})
})
return programs
}
}
let reachedNextDay = false
function parseDuration(date, item) {
const current_date = date.format('YYYY-MM-DD')
const time = item.content?.broadcastBeginDate
const duration = item.content?.duration // e.g. "11 min 45 s", "1 h 30 min", "30 min"
if (!time) return { start: dayjs(null), stop: dayjs(null) }
const timeParts = time.split('h')
const hour = parseInt(timeParts[0])
// Once we've seen programs and encounter 00h, mark as next day
if (reachedNextDay) {
return { start: dayjs(null), stop: dayjs(null) }
}
if (hour === 0) {
reachedNextDay = true
return { start: dayjs(null), stop: dayjs(null) }
}
let durationInSeconds = 0
if (duration) {
const durationParts = duration.split(' ')
for (let i = 0; i < durationParts.length; i++) {
const part = durationParts[i]
if (part === 'h' && i > 0) {
durationInSeconds += parseInt(durationParts[i - 1]) * 3600
} else if (part === 'min' && i > 0) {
durationInSeconds += parseInt(durationParts[i - 1]) * 60
} else if (part === 's' && i > 0) {
durationInSeconds += parseInt(durationParts[i - 1])
}
}
}
const start = dayjs.utc(`${current_date} ${timeParts[0]}:${timeParts[1]}`, 'YYYY-MM-DD HH:mm')
const stop = start.add(durationInSeconds, 'second')
return { start, stop }
}
function getImageUrl(item) {
const url = item.content?.thumbnail?.x1
return url
}

View File

@@ -0,0 +1,49 @@
const { parser, url } = require('./france.tv.config.js')
const fs = require('fs')
const path = require('path')
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('2026-02-19', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'france2',
xmltv_id: 'France2.fr@HD'
}
it('can generate valid url', () => {
expect(url({ channel, date })).toBe('https://www.france.tv/api/epg/videos/?date=2026-02-19&channel=france2')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const results = parser({ content, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results.length).toBe(18)
expect(results[0]).toMatchObject({
title: 'Le 6h info - Émission du jeudi 19 février 2026',
description: "Un rendez-vous réveil-matin, avec un point sur l'actualité assorti de différentes rubriques qui permettent d'en explorer certains aspects plus en profondeur.",
image: 'https://medias.france.tv/S9p5NdAs4OR2UbyC1NIQWsYV-K4/240x0/filters:quality(85):format(webp)/b/f/3/e85c2e8fed4a4955965dfff63c3843fb.jpg',
start: '2026-02-19T06:00:00.000Z',
stop: '2026-02-19T06:30:00.000Z'
})
expect(results[17]).toMatchObject({
title: 'JO Club - Émission du jeudi 19 février 2026',
description: "Tous les soirs, tout au long de ces Jeux olympiques d'hiver de Milan-Cortina, Laurent Luyat revient, avec les journalistes et consultants de France Télévisions, sur les épreuves de la journée. Il accueille les athlètes et les médaillés du jour. La journée a été marquée par du combiné nordique, avec l'épreuve par équipes messieurs, les demi-final...",
image: 'https://medias.france.tv/xuxaBPNFyhMiVB5eeYrZV_1nPj4/240x0/filters:quality(85):format(webp)/v/p/h/phpmhbhpv.jpg',
start: '2026-02-19T23:00:00.000Z',
stop: '2026-02-20T00:00:00.000Z'
})
})
it('can handle empty guide', () => {
const results = parser({ content: [], date })
expect(results).toMatchObject([])
})

21
sites/france.tv/readme.md Normal file
View File

@@ -0,0 +1,21 @@
# france.tv
https://www.france.tv/
### Download the guide
```sh
npm run grab --- --site=france.tv
```
### Update channel list
```sh
npm run channels:parse --- --config=./sites/france.tv/france.tv.config.js --output=./sites/france.tv/france.tv.channels.xml
```
### Test
```sh
npm test --- france.tv
```

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,374 @@
{
"DatosAccesoAnonimo": {
"TipoEmision": "Pase",
"TipoComercial": "Subscripcion",
"TipoComercial2": {
"Tipo": "Subscripcion",
"Descripcion": null
},
"Freemium": false,
"TiposComerciales": [
{
"Tipo": "Subscripcion",
"Descripcion": null
}
],
"Logos": [
{
"id": "default",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpmos/SEXTA"
},
{
"id": "default",
"state": "over",
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpmos/SEXTA"
},
{
"id": "bg_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpepg/SEXTA"
},
{
"id": "bg_light",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpepg/SEXTA"
},
{
"id": "nobox_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-NEONEGR/wpmarcaficha/SEXTA"
}
],
"Precio": null,
"HoraInicio": "1770587100000",
"FechaFinPublicacion": null,
"FormatoVideo": null,
"FormatoAudio": null,
"VersionIdioma": null,
"HoraInicioSaltoCanal": "1770583500000",
"HoraFinSaltoCanal": "1770605100000",
"Subtitulos": [],
"Subtitulos2012": [],
"IndicadorSubtitulosSordos": null
},
"Id": 4235944,
"SerialId": 63188236,
"TipoContenido": "Episodio",
"CodSubTipoContenido": "E",
"SubTipoContenido": "episodio",
"SubTipoContedor": "temporada",
"TipoComercial": "Subscripcion",
"Titulo": "Especial ARV... (T2026): El análisis",
"catalogItemType": "LiveEpisode",
"TipoComercial2": {
"Tipo": "Subscripcion",
"Descripcion": null
},
"Contenedor": {
"Id": 4235938,
"Path": "T-4235940|E-4235944",
"TituloSerie": "Especial ARV elecciones Aragón",
"Temporada": "(T2026)",
"Ficha": "https://ottcache.dof6.com/movistarplus/webplayer/contents/4235938/details?mediaType=FOTOV&profile=OTT&mode=VODRU7D&channels=SEXTA&version=8&tlsStream=true&mdrm=true&showNonRated=true",
"Padre": "https://ottcache.dof6.com/movistarplus/webplayer/contents/4235940/details?mediaType=FOTOV&profile=OTT&mode=VODRU7D&version=8&tlsStream=true&mdrm=true&showNonRated=true"
},
"TituloEpisodio": "El análisis",
"TiposComerciales": [
{
"Tipo": "Subscripcion",
"Descripcion": null
}
],
"NumeroEpisodio": "01",
"TituloEpisodioLargo": "T2026 E1 \"El análisis\"",
"TituloVerLinea1": "Especial ARV elecciones Aragón",
"TituloVerLinea2": "T2026 E1",
"Directo": false,
"Estreno": false,
"TituloHorLinea1": "Especial ARV elecciones Aragón",
"TituloHorLinea2": "T2026 E1 \"El análisis\"",
"NivelMoral": null,
"Lanzable": false,
"TituloSeguimiento": "T2026 E1",
"Serie": {
"Id": 4235940,
"SeasonId": 4235940,
"TituloSerie": "Especial ARV elecciones Aragón",
"Temporada": "(T2026)",
"Ficha": "https://ottcache.dof6.com/movistarplus/webplayer/contents/4235940/details?mediaType=FOTOV&profile=OTT&mode=VODRU7D&version=8&tlsStream=true&mdrm=true&showNonRated=true",
"Descargable": false
},
"ratingLabels": [],
"IdSerie": 4235938,
"Seguible": false,
"OrdenacionDescendente": false,
"Genero": {
"ComAntena": "Política"
},
"Imagen": "https://estatico.emisiondof6.com/recorte/n/dispficha/MSEXTAP4235944",
"DisponibleVOD": false,
"Imagenes": [
{
"id": "default",
"uri": "https://estatico.emisiondof6.com/recorte/n/dispficha/MSEXTAP4235944"
},
{
"id": "horizontal",
"uri": "https://estatico.emisiondof6.com/recorte/n/ywcatalogoh/MSEXTAT4235944"
},
{
"id": "watch2tgr-start",
"uri": "https://estatico.emisiondof6.com/recorte/n/vegtooltip/MSEXTAF4235944.jpg"
},
{
"id": "watch2tgr-end",
"uri": "https://estatico.emisiondof6.com/recorte/n/vegend/MSEXTAF4235944.jpg"
}
],
"Competicion": {
"Fase": null,
"Jornada": null
},
"Descripcion": "Antonio García Ferreras y Ana Pastor analizan y debaten sobre el recuento y los resultados que arrojen las urnas con analistas como Lluís Orriols, Antonio Maestre, Ignacio Escolar, Pilar Velasco, Santiago Martínez Vares y Pablo Montesinos.",
"Sinopsis": "Antonio García Ferreras y Ana Pastor analizan y debaten sobre el recuento y los resultados que arrojen las urnas con analistas como Lluís Orriols, Antonio Maestre, Ignacio Escolar, Pilar Velasco, Santiago Martínez Vares y Pablo Montesinos.",
"Duracion": 136,
"Nacionalidad": "España",
"Anno": "2026",
"Actores": null,
"Directores": null,
"Descargable": false,
"Valoracion": {
"Valoracion": 2.8,
"Valoraciones": 33
},
"TituloNormalizado": "especial-arv-elecciones-aragon-t2026/el-analisis",
"RutaNormalizada": "entretenimiento/especial-arv-elecciones-aragon-t2026/el-analisis",
"Pases": [
{
"catalogItemType": "LiveEpisode",
"HoraInicio": "1770587100000",
"Duracion": 136,
"HoraInicioSaltoCanal": "1770583500000",
"Grabable": false,
"HoraFinSaltoCanal": "1770605100000",
"TemporadaGrabable": true,
"Canal": {
"CodCadenaTv": "SEXTA",
"Nombre": "La Sexta",
"Uid": 444099,
"CasId": "4526",
"ServiceUid": "717",
"ServiceUid2": "4526",
"ServiceId": 6,
"PuntoReproduccion": "https://lasexta-dash-movistarplus.emisiondof6.com/manifest.mpd",
"Logos": [
{
"id": "default",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpmos/SEXTA"
},
{
"id": "default",
"state": "over",
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpmos/SEXTA"
},
{
"id": "bg_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpepg/SEXTA"
},
{
"id": "bg_light",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpepg/SEXTA"
},
{
"id": "nobox_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-NEONEGR/wpmarcaficha/SEXTA"
}
],
"Dial": 6,
"HomeZone": false,
"FormatoAudio": null,
"FormatoVideo": "HD",
"LogoTaquilla": null,
"Logo": "https://estatico.emisiondof6.com/recorte/m-DP/wpmos/SEXTA",
"HDR": false,
"EsVirtual": false,
"CDN": "tcdn",
"EsSatelite": false,
"QMWatermark": false,
"links": []
},
"Fase": null,
"CodEventoRejilla": null,
"ShowId": 63188242,
"SerialId": 63188236,
"tvProducts": [
"BOBFUT2",
"DIFUSION",
"DO0001",
"DO0002",
"DO0003",
"DO0004",
"FUSICE",
"MOVFAM",
"NDDEM2",
"NDDEMO",
"PAQINI",
"PR01H",
"PR01S",
"TRIDIS",
"TVBACH",
"TVBAFU",
"TVBALI",
"TVCOMU",
"UTX00",
"UTX0Y",
"UTX1H",
"UTX1I",
"UTX2A",
"UTX2C",
"UTX2J",
"UTX2N",
"UTX2P",
"UTX2Q",
"UTX2R",
"UTX32",
"UTX37",
"UTX38",
"UTX4I",
"UTX4N",
"UTX4P",
"UTX5M",
"UTX5V",
"UTX6C",
"UTX7T",
"UTX7U",
"UTX90",
"UTXAH",
"UTXC7",
"UTXC8",
"UTXCL",
"UTXCN",
"UTXCP",
"UTXD0",
"UTXD3",
"UTXHA",
"UTXHB",
"UTXHC",
"UTXHD",
"UTXIC",
"UTXIE",
"UTXIF",
"UTXIH",
"UTXII",
"UTXIR",
"UTXIS"
],
"BlackOutU7D": false,
"links": [
{
"rel": "start-over",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id=63188242&svc=startover",
"state": null
},
{
"rel": "catch-up",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id=63188242&svc=cutv",
"state": null
},
{
"rel": "npvr",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id=63188242&svc=npvr",
"state": null
}
]
}
],
"LenguajeSignos": false,
"Upselling": "PKS--1",
"audioDescription": {
"available": false,
"audios": []
},
"Trailers": [],
"Eventos": [],
"BingeWatchingAction": "none",
"StreamTag": false,
"VodItems": [],
"OpcionesFavoritos": [
{
"Id": 63188236,
"Family": "tv",
"Texto": "TEMPORADA"
}
],
"links": [
{
"rel": "mas_info",
"href": "https://estatico.emisiondof6.com/ficha/especial-arv-elecciones-aragon-t2026/el-analisis/?tipo=E&id=4235944"
},
{
"rel": "ver_ahora",
"href": "https://ver.movistarplus.es/ficha/especial-arv-elecciones-aragon-t2026/el-analisis/?id=4235944"
},
{
"rel": "shows",
"href": "/movistarplus/contents/4235944/shows"
},
{
"rel": "alternate",
"href": "appmovistar://movistarplus.es/ficha?id=4235944&referrer=api",
"class": "entryPoint",
"hints": {
"devices": [
"android.cell",
"iphone",
"amazon.tv"
]
}
},
{
"rel": "alternate",
"href": "https://wl.movistarplus.es/ficha/?id=4235944&referrer=api",
"class": "entryPoint",
"hints": {
"devices": [
"web"
]
}
},
{
"rel": "alternate",
"href": "https://wl.movistarplus.es/play?id=4235944&referrer=api",
"class": "play",
"hints": {
"devices": [
"web"
]
}
},
{
"rel": "untrack2",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/users/bookmarks/vod/4235944",
"hints": {
"allow": [
"DELETE"
],
"auth-req": [
{
"scheme": "asmgr"
}
]
}
},
{
"rel": "self",
"href": "https://ottcache.dof6.com/movistarplus/webplayer/contents/63188242/details?mediaType=FOTOV&profile=OTT&mode=U7D2&channels=SEXTA&version=8&tlsStream=true&mdrm=true&catalog=catchup&showNonRated=true",
"id": 63188236
}
]
}

View File

@@ -0,0 +1,378 @@
{
"DatosAccesoAnonimo": {
"TipoEmision": "Pase",
"TipoComercial": "Subscripcion",
"TipoComercial2": {
"Tipo": "Subscripcion",
"Descripcion": null
},
"Freemium": false,
"TiposComerciales": [
{
"Tipo": "Subscripcion",
"Descripcion": null
}
],
"Logos": [
{
"id": "default",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpmos/SEXTA"
},
{
"id": "default",
"state": "over",
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpmos/SEXTA"
},
{
"id": "bg_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpepg/SEXTA"
},
{
"id": "bg_light",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpepg/SEXTA"
},
{
"id": "nobox_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-NEONEGR/wpmarcaficha/SEXTA"
}
],
"Precio": null,
"HoraInicio": "1770669060000",
"FechaFinPublicacion": null,
"FormatoVideo": null,
"FormatoAudio": null,
"VersionIdioma": null,
"HoraInicioSaltoCanal": "1770665460000",
"HoraFinSaltoCanal": "1770687060000",
"Subtitulos": [],
"Subtitulos2012": [],
"IndicadorSubtitulosSordos": null
},
"Id": 4236939,
"SerialId": 62244130,
"TipoContenido": "Episodio",
"CodSubTipoContenido": "E",
"SubTipoContenido": "episodio",
"SubTipoContedor": "temporada",
"TipoComercial": "Subscripcion",
"Titulo": "El intermedio (T20): Ep.624",
"catalogItemType": "LiveEpisode",
"TipoComercial2": {
"Tipo": "Subscripcion",
"Descripcion": null
},
"Contenedor": {
"Id": 901510,
"Path": "T-4105626|E-4236939",
"TituloSerie": "El intermedio",
"Temporada": "(T20)",
"Ficha": "https://ottcache.dof6.com/movistarplus/webplayer/contents/901510/details?mediaType=FOTOV&profile=OTT&mode=VODRU7D&channels=SEXTA&version=8&tlsStream=true&mdrm=true&showNonRated=true",
"Padre": "https://ottcache.dof6.com/movistarplus/webplayer/contents/4105626/details?mediaType=FOTOV&profile=OTT&mode=VODRU7D&version=8&tlsStream=true&mdrm=true&showNonRated=true"
},
"TituloEpisodio": "Episodio 624",
"TiposComerciales": [
{
"Tipo": "Subscripcion",
"Descripcion": null
}
],
"NumeroEpisodio": "624",
"TituloEpisodioLargo": "T20 E624 \"Episodio 624\"",
"TituloVerLinea1": "El intermedio",
"TituloVerLinea2": "T20 E624",
"Directo": false,
"Estreno": false,
"TituloHorLinea1": "El intermedio",
"TituloHorLinea2": "T20 E624 \"Episodio 624\"",
"NivelMoral": {
"_id": "08",
"Id": "+12",
"Logo": "https://voddelivery.emisiondof6.com/images/logos/logos_nivelmoral/12.png"
},
"Lanzable": false,
"TituloSeguimiento": "T20 E624",
"Serie": {
"Id": 4105626,
"SeasonId": 4105626,
"TituloSerie": "El intermedio",
"Temporada": "(T20)",
"Ficha": "https://ottcache.dof6.com/movistarplus/webplayer/contents/4105626/details?mediaType=FOTOV&profile=OTT&mode=VODRU7D&version=8&tlsStream=true&mdrm=true&showNonRated=true",
"Descargable": false
},
"ratingLabels": [],
"IdSerie": 901510,
"Seguible": false,
"OrdenacionDescendente": false,
"Genero": {
"ComAntena": "Humor"
},
"Imagen": "https://estatico.emisiondof6.com/recorte/n/dispficha/MSEXTAP4236939",
"DisponibleVOD": false,
"Imagenes": [
{
"id": "default",
"uri": "https://estatico.emisiondof6.com/recorte/n/dispficha/MSEXTAP4236939"
},
{
"id": "horizontal",
"uri": "https://estatico.emisiondof6.com/recorte/n/ywcatalogoh/MSEXTAT4236939"
},
{
"id": "watch2tgr-start",
"uri": "https://estatico.emisiondof6.com/recorte/n/vegtooltip/MSEXTAF4236939.jpg"
},
{
"id": "watch2tgr-end",
"uri": "https://estatico.emisiondof6.com/recorte/n/vegend/MSEXTAF4236939.jpg"
}
],
"Competicion": {
"Fase": null,
"Jornada": null
},
"Descripcion": "El Gran Wyoming, con la ayuda de sus colaboradores, analiza en clave de humor las noticias más importantes del día. El sello inconfundible del cómico sirve para completar la información desde un punto de vista más distendido e irónico.",
"Sinopsis": "El Gran Wyoming, con la ayuda de sus colaboradores, analiza en clave de humor las noticias más importantes del día. El sello inconfundible del cómico sirve para completar la información desde un punto de vista más distendido e irónico.",
"Duracion": 93,
"Nacionalidad": "España",
"Anno": "2025",
"Actores": null,
"Directores": null,
"Descargable": false,
"Valoracion": {
"Valoracion": 3,
"Valoraciones": 30
},
"TituloNormalizado": "el-intermedio-t20/episodio-624",
"RutaNormalizada": "entretenimiento/el-intermedio-t20/episodio-624",
"Pases": [
{
"catalogItemType": "LiveEpisode",
"HoraInicio": "1770669060000",
"Duracion": 93,
"HoraInicioSaltoCanal": "1770665460000",
"Grabable": false,
"HoraFinSaltoCanal": "1770687060000",
"TemporadaGrabable": true,
"Canal": {
"CodCadenaTv": "SEXTA",
"Nombre": "La Sexta",
"Uid": 444099,
"CasId": "4526",
"ServiceUid": "717",
"ServiceUid2": "4526",
"ServiceId": 6,
"PuntoReproduccion": "https://lasexta-dash-movistarplus.emisiondof6.com/manifest.mpd",
"Logos": [
{
"id": "default",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpmos/SEXTA"
},
{
"id": "default",
"state": "over",
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpmos/SEXTA"
},
{
"id": "bg_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DP/wpepg/SEXTA"
},
{
"id": "bg_light",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-DPBLAN/wpepg/SEXTA"
},
{
"id": "nobox_dark",
"state": null,
"uri": "https://estatico.emisiondof6.com/recorte/m-NEONEGR/wpmarcaficha/SEXTA"
}
],
"Dial": 6,
"HomeZone": false,
"FormatoAudio": null,
"FormatoVideo": "HD",
"LogoTaquilla": null,
"Logo": "https://estatico.emisiondof6.com/recorte/m-DP/wpmos/SEXTA",
"HDR": false,
"EsVirtual": false,
"CDN": "tcdn",
"EsSatelite": false,
"QMWatermark": false,
"links": []
},
"Fase": null,
"CodEventoRejilla": null,
"ShowId": 63182873,
"SerialId": 62244130,
"tvProducts": [
"BOBFUT2",
"DIFUSION",
"DO0001",
"DO0002",
"DO0003",
"DO0004",
"FUSICE",
"MOVFAM",
"NDDEM2",
"NDDEMO",
"PAQINI",
"PR01H",
"PR01S",
"TRIDIS",
"TVBACH",
"TVBAFU",
"TVBALI",
"TVCOMU",
"UTX00",
"UTX0Y",
"UTX1H",
"UTX1I",
"UTX2A",
"UTX2C",
"UTX2J",
"UTX2N",
"UTX2P",
"UTX2Q",
"UTX2R",
"UTX32",
"UTX37",
"UTX38",
"UTX4I",
"UTX4N",
"UTX4P",
"UTX5M",
"UTX5V",
"UTX6C",
"UTX7T",
"UTX7U",
"UTX90",
"UTXAH",
"UTXC7",
"UTXC8",
"UTXCL",
"UTXCN",
"UTXCP",
"UTXD0",
"UTXD3",
"UTXHA",
"UTXHB",
"UTXHC",
"UTXHD",
"UTXIC",
"UTXIE",
"UTXIF",
"UTXIH",
"UTXII",
"UTXIR",
"UTXIS"
],
"BlackOutU7D": false,
"links": [
{
"rel": "start-over",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id=63182873&svc=startover",
"state": null
},
{
"rel": "catch-up",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id=63182873&svc=cutv",
"state": null
},
{
"rel": "npvr",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id=63182873&svc=npvr",
"state": null
}
]
}
],
"LenguajeSignos": false,
"Upselling": "PKS--1",
"audioDescription": {
"available": false,
"audios": []
},
"Trailers": [],
"Eventos": [],
"BingeWatchingAction": "none",
"StreamTag": false,
"VodItems": [],
"OpcionesFavoritos": [
{
"Id": 62244130,
"Family": "tv",
"Texto": "TEMPORADA"
}
],
"links": [
{
"rel": "mas_info",
"href": "https://estatico.emisiondof6.com/ficha/el-intermedio-t20/episodio-624/?tipo=E&id=4236939"
},
{
"rel": "ver_ahora",
"href": "https://ver.movistarplus.es/ficha/el-intermedio-t20/episodio-624/?id=4236939"
},
{
"rel": "shows",
"href": "/movistarplus/contents/4236939/shows"
},
{
"rel": "alternate",
"href": "appmovistar://movistarplus.es/ficha?id=4236939&referrer=api",
"class": "entryPoint",
"hints": {
"devices": [
"android.cell",
"iphone",
"amazon.tv"
]
}
},
{
"rel": "alternate",
"href": "https://wl.movistarplus.es/ficha/?id=4236939&referrer=api",
"class": "entryPoint",
"hints": {
"devices": [
"web"
]
}
},
{
"rel": "alternate",
"href": "https://wl.movistarplus.es/play?id=4236939&referrer=api",
"class": "play",
"hints": {
"devices": [
"web"
]
}
},
{
"rel": "untrack2",
"href": "https://grmovistar.imagenio.telefonica.net/asfe/rest/users/bookmarks/rec/63182873",
"hints": {
"allow": [
"DELETE"
],
"auth-req": [
{
"scheme": "asmgr"
}
]
}
},
{
"rel": "self",
"href": "https://ottcache.dof6.com/movistarplus/webplayer/contents/63182873/details?mediaType=FOTOV&profile=OTT&mode=VODREJILLA&channels=SEXTA&version=8&tlsStream=true&mdrm=true&catalog=events&showNonRated=true",
"id": 63182873
}
]
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,181 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="movistarplus.es" site_id="7tvmur" lang="es" xmltv_id="">7 TV Región Murcia</channel>
<channel site="movistarplus.es" site_id="13tv" lang="es" xmltv_id="">TRECE</channel>
<channel site="movistarplus.es" site_id="24h" lang="es" xmltv_id="">24 Horas</channel>
<channel site="movistarplus.es" site_id="3_24" lang="es" xmltv_id="">3 24</channel>
<channel site="movistarplus.es" site_id="a3" lang="es" xmltv_id="">Antena 3</channel>
<channel site="movistarplus.es" site_id="aljaze" lang="es" xmltv_id="">Al Jazeera English</channel>
<channel site="movistarplus.es" site_id="andatv" lang="es" xmltv_id="">Andalucía TV</channel>
<channel site="movistarplus.es" site_id="antv" lang="es" xmltv_id="">Canal Sur Andalucía</channel>
<channel site="movistarplus.es" site_id="apunt" lang="es" xmltv_id="">À Punt</channel>
<channel site="movistarplus.es" site_id="aragon" lang="es" xmltv_id="">Aragón TV Int</channel>
<channel site="movistarplus.es" site_id="aragtv" lang="es" xmltv_id="">Aragón TV</channel>
<channel site="movistarplus.es" site_id="arirhd" lang="es" xmltv_id="">Arirang TV HD</channel>
<channel site="movistarplus.es" site_id="arthur" lang="es" xmltv_id="">M+ Deportes 2</channel>
<channel site="movistarplus.es" site_id="atress" lang="es" xmltv_id="">Atreseries</channel>
<channel site="movistarplus.es" site_id="axn" lang="es" xmltv_id="">AXN</channel>
<channel site="movistarplus.es" site_id="baby" lang="es" xmltv_id="">Baby TV</channel>
<channel site="movistarplus.es" site_id="bbc" lang="es" xmltv_id="">BBC World</channel>
<channel site="movistarplus.es" site_id="bbdra" lang="es" xmltv_id="">BBC Drama</channel>
<channel site="movistarplus.es" site_id="bbfoo" lang="es" xmltv_id="">BBC Food</channel>
<channel site="movistarplus.es" site_id="bbgea" lang="es" xmltv_id="">BBC Top Gear</channel>
<channel site="movistarplus.es" site_id="bbhis" lang="es" xmltv_id="">BBC History</channel>
<channel site="movistarplus.es" site_id="bemad" lang="es" xmltv_id="">BE MAD</channel>
<channel site="movistarplus.es" site_id="bl" lang="es" xmltv_id="">Bloomberg</channel>
<channel site="movistarplus.es" site_id="boing" lang="es" xmltv_id="">Boing</channel>
<channel site="movistarplus.es" site_id="btv" lang="es" xmltv_id="">Betevé</channel>
<channel site="movistarplus.es" site_id="c4" lang="es" xmltv_id="">Cuatro</channel>
<channel site="movistarplus.es" site_id="c33" lang="es" xmltv_id="">SX3</channel>
<channel site="movistarplus.es" site_id="can33" lang="es" xmltv_id="">33</channel>
<channel site="movistarplus.es" site_id="canar" lang="es" xmltv_id="">TV Canaria</channel>
<channel site="movistarplus.es" site_id="cansur" lang="es" xmltv_id="">Canal Sur</channel>
<channel site="movistarplus.es" site_id="casman" lang="es" xmltv_id="">Castilla la Mancha TV</channel>
<channel site="movistarplus.es" site_id="cazpes" lang="es" xmltv_id="">Caza y Pesca</channel>
<channel site="movistarplus.es" site_id="cctv-e" lang="es" xmltv_id="">CGTN Español</channel>
<channel site="movistarplus.es" site_id="cgtnd" lang="es" xmltv_id="">CGTN Documentary</channel>
<channel site="movistarplus.es" site_id="cgtndo" lang="es" xmltv_id="">CGTN Documentary HD</channel>
<channel site="movistarplus.es" site_id="cgtnen" lang="es" xmltv_id="">CGTN English HD</channel>
<channel site="movistarplus.es" site_id="cgtnfr" lang="es" xmltv_id="">CGTN Français HD</channel>
<channel site="movistarplus.es" site_id="chap1" lang="es" xmltv_id="">M+ Liga de Campeones 2</channel>
<channel site="movistarplus.es" site_id="chap2" lang="es" xmltv_id="">M+ Liga de Campeones 3</channel>
<channel site="movistarplus.es" site_id="chap3" lang="es" xmltv_id="">M+ Liga de Campeones 4</channel>
<channel site="movistarplus.es" site_id="chap4" lang="es" xmltv_id="">M+ Liga de Campeones 5</channel>
<channel site="movistarplus.es" site_id="chap5" lang="es" xmltv_id="">M+ Liga de Campeones 6</channel>
<channel site="movistarplus.es" site_id="chap6" lang="es" xmltv_id="">M+ Liga de Campeones 7</channel>
<channel site="movistarplus.es" site_id="chap7" lang="es" xmltv_id="">M+ Liga de Campeones 8</channel>
<channel site="movistarplus.es" site_id="chap8" lang="es" xmltv_id="">M+ Liga de Campeones 9</channel>
<channel site="movistarplus.es" site_id="chap9" lang="es" xmltv_id="">M+ Liga de Campeones 10</channel>
<channel site="movistarplus.es" site_id="chap10" lang="es" xmltv_id="">M+ Liga de Campeones 11</channel>
<channel site="movistarplus.es" site_id="chap11" lang="es" xmltv_id="">M+ Liga de Campeones 12</channel>
<channel site="movistarplus.es" site_id="chap12" lang="es" xmltv_id="">M+ Liga de Campeones 13</channel>
<channel site="movistarplus.es" site_id="chapio" lang="es" xmltv_id="">M+ Liga de Campeones</channel>
<channel site="movistarplus.es" site_id="chile" lang="es" xmltv_id="">TV Chile</channel>
<channel site="movistarplus.es" site_id="cl13" lang="es" xmltv_id="">Calle 13</channel>
<channel site="movistarplus.es" site_id="clantv" lang="es" xmltv_id="">Clan TVE</channel>
<channel site="movistarplus.es" site_id="classd" lang="es" xmltv_id="">Classica</channel>
<channel site="movistarplus.es" site_id="cnn" lang="es" xmltv_id="">CNN Int</channel>
<channel site="movistarplus.es" site_id="colomb" lang="es" xmltv_id="">TV Colombia</channel>
<channel site="movistarplus.es" site_id="cosmo" lang="es" xmltv_id="">COSMO</channel>
<channel site="movistarplus.es" site_id="cpacci" lang="es" xmltv_id="">M+ Acción</channel>
<channel site="movistarplus.es" site_id="cpcole" lang="es" xmltv_id="">M+ Drama</channel>
<channel site="movistarplus.es" site_id="cpcome" lang="es" xmltv_id="">M+ Comedia</channel>
<channel site="movistarplus.es" site_id="cpdep" lang="es" xmltv_id="">M+ Deportes</channel>
<channel site="movistarplus.es" site_id="csurhd" lang="es" xmltv_id="">Canal Sur HD</channel>
<channel site="movistarplus.es" site_id="cubav" lang="es" xmltv_id="">Cubavisión</channel>
<channel site="movistarplus.es" site_id="cyltv" lang="es" xmltv_id="">La 7</channel>
<channel site="movistarplus.es" site_id="dayst" lang="es" xmltv_id="">Daystar Español HD</channel>
<channel site="movistarplus.es" site_id="dazn3" lang="es" xmltv_id="">DAZN 3</channel>
<channel site="movistarplus.es" site_id="dazn4" lang="es" xmltv_id="">DAZN 4</channel>
<channel site="movistarplus.es" site_id="daznl2" lang="es" xmltv_id="">DAZN LALIGA 2</channel>
<channel site="movistarplus.es" site_id="daznli" lang="es" xmltv_id="">DAZN LALIGA</channel>
<channel site="movistarplus.es" site_id="dcesp" lang="es" xmltv_id="">M+ Cine Español</channel>
<channel site="movistarplus.es" site_id="dch" lang="es" xmltv_id="">Disney Channel</channel>
<channel site="movistarplus.es" site_id="dcr" lang="es" xmltv_id="">Discovery</channel>
<channel site="movistarplus.es" site_id="dcrmax" lang="es" xmltv_id="">DMAX</channel>
<channel site="movistarplus.es" site_id="divini" lang="es" xmltv_id="">Divinity</channel>
<channel site="movistarplus.es" site_id="dkiss" lang="es" xmltv_id="">DKISS</channel>
<channel site="movistarplus.es" site_id="dwsp" lang="es" xmltv_id="">Dreamworks</channel>
<channel site="movistarplus.es" site_id="energy" lang="es" xmltv_id="">Energy</channel>
<channel site="movistarplus.es" site_id="enw" lang="es" xmltv_id="">Euronews</channel>
<channel site="movistarplus.es" site_id="esp" lang="es" xmltv_id="">Eurosport 1</channel>
<channel site="movistarplus.es" site_id="esp2" lang="es" xmltv_id="">Eurosport 2</channel>
<channel site="movistarplus.es" site_id="esp3" lang="es" xmltv_id="">Esport 3</channel>
<channel site="movistarplus.es" site_id="esp4k" lang="es" xmltv_id="">Eurosport 4K</channel>
<channel site="movistarplus.es" site_id="etb" lang="es" xmltv_id="">EITB Basque</channel>
<channel site="movistarplus.es" site_id="etb1" lang="es" xmltv_id="">ETB 1</channel>
<channel site="movistarplus.es" site_id="etb2" lang="es" xmltv_id="">ETB 2</channel>
<channel site="movistarplus.es" site_id="etb3" lang="es" xmltv_id="">ETB 3</channel>
<channel site="movistarplus.es" site_id="ewtn" lang="es" xmltv_id="">EWTN</channel>
<channel site="movistarplus.es" site_id="extre" lang="es" xmltv_id="">Canal Extremadura</channel>
<channel site="movistarplus.es" site_id="extrem" lang="es" xmltv_id="">Canal Extremadura Sat</channel>
<channel site="movistarplus.es" site_id="fdfic" lang="es" xmltv_id="">Factoría de Ficción</channel>
<channel site="movistarplus.es" site_id="foxge" lang="es" xmltv_id="">STAR Channel</channel>
<channel site="movistarplus.es" site_id="france" lang="es" xmltv_id="">FRANCE24 (FR)</channel>
<channel site="movistarplus.es" site_id="futrep" lang="es" xmltv_id="">Canal Fútbol Replay</channel>
<channel site="movistarplus.es" site_id="galav" lang="es" xmltv_id="">Canal de las Estrellas</channel>
<channel site="movistarplus.es" site_id="garage" lang="es" xmltv_id="">El Garage TV</channel>
<channel site="movistarplus.es" site_id="gol" lang="es" xmltv_id="">GOL PLAY</channel>
<channel site="movistarplus.es" site_id="golf2" lang="es" xmltv_id="">M+ Golf 2</channel>
<channel site="movistarplus.es" site_id="golf+" lang="es" xmltv_id="">M+ Golf</channel>
<channel site="movistarplus.es" site_id="hdtq10" lang="es" xmltv_id="">Alquiler HD</channel>
<channel site="movistarplus.es" site_id="ib3" lang="es" xmltv_id="">IB3</channel>
<channel site="movistarplus.es" site_id="iberal" lang="es" xmltv_id="">Iberalia TV</channel>
<channel site="movistarplus.es" site_id="inteco" lang="es" xmltv_id="">El Toro TV</channel>
<channel site="movistarplus.es" site_id="inteua" lang="es" xmltv_id="">1+1 Internacional</channel>
<channel site="movistarplus.es" site_id="la2" lang="es" xmltv_id="">LA 2</channel>
<channel site="movistarplus.es" site_id="m1sd" lang="es" xmltv_id="">DAZN 1</channel>
<channel site="movistarplus.es" site_id="m2sd" lang="es" xmltv_id="">DAZN 2</channel>
<channel site="movistarplus.es" site_id="maxava" lang="es" xmltv_id="">Max Avances</channel>
<channel site="movistarplus.es" site_id="mcapra" lang="es" xmltv_id="">M+E: Demi Moore</channel>
<channel site="movistarplus.es" site_id="mclas" lang="es" xmltv_id="">M+ Clásicos</channel>
<channel site="movistarplus.es" site_id="mcopa" lang="es" xmltv_id="">M+ Copa del Rey</channel>
<channel site="movistarplus.es" site_id="mdoc" lang="es" xmltv_id="">M+ Documentales</channel>
<channel site="movistarplus.es" site_id="medite" lang="es" xmltv_id="">La Ocho TV</channel>
<channel site="movistarplus.es" site_id="mega" lang="es" xmltv_id="">Mega</channel>
<channel site="movistarplus.es" site_id="mellav" lang="es" xmltv_id="">M+ Ellas V</channel>
<channel site="movistarplus.es" site_id="mezzli" lang="es" xmltv_id="">Mezzo Live</channel>
<channel site="movistarplus.es" site_id="mezzo" lang="es" xmltv_id="">Mezzo</channel>
<channel site="movistarplus.es" site_id="mgoya" lang="es" xmltv_id="">M+ Los Goya</channel>
<channel site="movistarplus.es" site_id="mindi" lang="es" xmltv_id="">M+ Indie</channel>
<channel site="movistarplus.es" site_id="mlig1" lang="es" xmltv_id="">M+ LALIGA TV 2</channel>
<channel site="movistarplus.es" site_id="mlig2" lang="es" xmltv_id="">M+ LALIGA TV 3</channel>
<channel site="movistarplus.es" site_id="mlig3" lang="es" xmltv_id="">M+ LALIGA TV 4</channel>
<channel site="movistarplus.es" site_id="mliga" lang="es" xmltv_id="">M+ LALIGA TV</channel>
<channel site="movistarplus.es" site_id="mligs" lang="es" xmltv_id="">LALIGA TV HYPERMOTION</channel>
<channel site="movistarplus.es" site_id="mligs2" lang="es" xmltv_id="">LALIGA TV HYPERMOTION 2</channel>
<channel site="movistarplus.es" site_id="mligs3" lang="es" xmltv_id="">LALIGA TV HYPERMOTION 3</channel>
<channel site="movistarplus.es" site_id="mliguh" lang="es" xmltv_id="">M+ LALIGA TV UHD</channel>
<channel site="movistarplus.es" site_id="morig" lang="es" xmltv_id="">M+ Originales</channel>
<channel site="movistarplus.es" site_id="mplus" lang="es" xmltv_id="">Movistar Plus+</channel>
<channel site="movistarplus.es" site_id="mplus2" lang="es" xmltv_id="">Movistar Plus+ 2</channel>
<channel site="movistarplus.es" site_id="mtv" lang="es" xmltv_id="">MTV</channel>
<channel site="movistarplus.es" site_id="multi6" lang="es" xmltv_id="">M+ Deportes 7</channel>
<channel site="movistarplus.es" site_id="multi8" lang="es" xmltv_id="">M+ Deportes 6</channel>
<channel site="movistarplus.es" site_id="mv1" lang="es" xmltv_id="">M+ Cine</channel>
<channel site="movistarplus.es" site_id="mv2" lang="es" xmltv_id="">M+ Series</channel>
<channel site="movistarplus.es" site_id="mvf1" lang="es" xmltv_id="">DAZN F1</channel>
<channel site="movistarplus.es" site_id="natgeo" lang="es" xmltv_id="">National Geographic</channel>
<channel site="movistarplus.es" site_id="natgw" lang="es" xmltv_id="">Nat Geo Wild</channel>
<channel site="movistarplus.es" site_id="nava" lang="es" xmltv_id="">Navarra TV</channel>
<channel site="movistarplus.es" site_id="nbc" lang="es" xmltv_id="">CNBC</channel>
<channel site="movistarplus.es" site_id="negotv" lang="es" xmltv_id="">Negocios TV</channel>
<channel site="movistarplus.es" site_id="neox" lang="es" xmltv_id="">Neox</channel>
<channel site="movistarplus.es" site_id="nick" lang="es" xmltv_id="">Nickelodeon</channel>
<channel site="movistarplus.es" site_id="nickjr" lang="es" xmltv_id="">NICK JR</channel>
<channel site="movistarplus.es" site_id="nova" lang="es" xmltv_id="">Nova</channel>
<channel site="movistarplus.es" site_id="otra" lang="es" xmltv_id="">La Otra</channel>
<channel site="movistarplus.es" site_id="parch" lang="es" xmltv_id="">Paramount Network</channel>
<channel site="movistarplus.es" site_id="pcm" lang="es" xmltv_id="">Comedy Central</channel>
<channel site="movistarplus.es" site_id="playdc" lang="es" xmltv_id="">Disney Junior</channel>
<channel site="movistarplus.es" site_id="realm" lang="es" xmltv_id="">Real Madrid TV</channel>
<channel site="movistarplus.es" site_id="resist" lang="es" xmltv_id="">La Resistencia</channel>
<channel site="movistarplus.es" site_id="sci-fi" lang="es" xmltv_id="">SYFY</channel>
<channel site="movistarplus.es" site_id="set" lang="es" xmltv_id="">AXN Movies</channel>
<channel site="movistarplus.es" site_id="sexta" lang="es" xmltv_id="">La Sexta</channel>
<channel site="movistarplus.es" site_id="skynw" lang="es" xmltv_id="">Sky News</channel>
<channel site="movistarplus.es" site_id="skysho" lang="es" xmltv_id="">SkyShowtime 1</channel>
<channel site="movistarplus.es" site_id="t5" lang="es" xmltv_id="">Telecinco</channel>
<channel site="movistarplus.es" site_id="tcm" lang="es" xmltv_id="">TCM</channel>
<channel site="movistarplus.es" site_id="tdep" lang="es" xmltv_id="">Teledeporte</channel>
<channel site="movistarplus.es" site_id="telmad" lang="es" xmltv_id="">Telemadrid</channel>
<channel site="movistarplus.es" site_id="telmin" lang="es" xmltv_id="">Telemadrid Int.</channel>
<channel site="movistarplus.es" site_id="ten" lang="es" xmltv_id="">Ten</channel>
<channel site="movistarplus.es" site_id="tlesur" lang="es" xmltv_id="">Telesur</channel>
<channel site="movistarplus.es" site_id="tnt" lang="es" xmltv_id="">Warner TV</channel>
<channel site="movistarplus.es" site_id="tpa" lang="es" xmltv_id="">TPA</channel>
<channel site="movistarplus.es" site_id="tq1" lang="es" xmltv_id="">Alquiler 1</channel>
<channel site="movistarplus.es" site_id="tv3cat" lang="es" xmltv_id="">TV3</channel>
<channel site="movistarplus.es" site_id="tv5" lang="es" xmltv_id="">TV5MONDE</channel>
<channel site="movistarplus.es" site_id="tvc" lang="es" xmltv_id="">TV3 Cat</channel>
<channel site="movistarplus.es" site_id="tve" lang="es" xmltv_id="">LA 1</channel>
<channel site="movistarplus.es" site_id="tvg" lang="es" xmltv_id="">TVG Europa</channel>
<channel site="movistarplus.es" site_id="tvg2" lang="es" xmltv_id="">TVG 2</channel>
<channel site="movistarplus.es" site_id="tvgal" lang="es" xmltv_id="">TVG -TV Galicia</channel>
<channel site="movistarplus.es" site_id="ubeat" lang="es" xmltv_id="">Ubeat</channel>
<channel site="movistarplus.es" site_id="usop2" lang="es" xmltv_id="">M+ Deportes 3</channel>
<channel site="movistarplus.es" site_id="usop3" lang="es" xmltv_id="">M+ Deportes 4</channel>
<channel site="movistarplus.es" site_id="usop11" lang="es" xmltv_id="">M+ Deportes 5</channel>
<channel site="movistarplus.es" site_id="vamosd" lang="es" xmltv_id="">M+ Vamos</channel>
<channel site="movistarplus.es" site_id="vh1" lang="es" xmltv_id="">MTV 00s</channel>
<channel site="movistarplus.es" site_id="13TV" lang="es" xmltv_id="">TRECE</channel>
<channel site="movistarplus.es" site_id="24H" lang="es" xmltv_id="">24 Horas</channel>
<channel site="movistarplus.es" site_id="A3" lang="es" xmltv_id="">Antena 3</channel>
<channel site="movistarplus.es" site_id="ALJAZE" lang="es" xmltv_id="">Al Jazeera English</channel>
<channel site="movistarplus.es" site_id="ANTV" lang="es" xmltv_id="">Canal Sur Andalucía</channel>
<channel site="movistarplus.es" site_id="ARAGON" lang="es" xmltv_id="">Aragón TV Int</channel>
<channel site="movistarplus.es" site_id="ARTHUR" lang="es" xmltv_id="">M+ Deportes 2</channel>
<channel site="movistarplus.es" site_id="ATRESS" lang="es" xmltv_id="">Atreseries</channel>
<channel site="movistarplus.es" site_id="AXN" lang="es" xmltv_id="">AXN</channel>
<channel site="movistarplus.es" site_id="BABY" lang="es" xmltv_id="">Baby TV</channel>
<channel site="movistarplus.es" site_id="BBC" lang="es" xmltv_id="">BBC News</channel>
<channel site="movistarplus.es" site_id="BBCEAR" lang="es" xmltv_id="">BBC Earth</channel>
<channel site="movistarplus.es" site_id="BBCLIF" lang="es" xmltv_id="">BBC Lifestyle</channel>
<channel site="movistarplus.es" site_id="BBDRA" lang="es" xmltv_id="">BBC Series</channel>
<channel site="movistarplus.es" site_id="BBFOO" lang="es" xmltv_id="">BBC Food</channel>
<channel site="movistarplus.es" site_id="BBGEA" lang="es" xmltv_id="">BBC Top Gear</channel>
<channel site="movistarplus.es" site_id="BBHIS" lang="es" xmltv_id="">BBC History</channel>
<channel site="movistarplus.es" site_id="BEMAD" lang="es" xmltv_id="">BE MAD</channel>
<channel site="movistarplus.es" site_id="BL" lang="es" xmltv_id="">Bloomberg</channel>
<channel site="movistarplus.es" site_id="BOING" lang="es" xmltv_id="">Boing</channel>
<channel site="movistarplus.es" site_id="C4" lang="es" xmltv_id="">Cuatro</channel>
<channel site="movistarplus.es" site_id="CAZPES" lang="es" xmltv_id="">Caza y Pesca</channel>
<channel site="movistarplus.es" site_id="CCTV-E" lang="es" xmltv_id="">CGTN Español</channel>
<channel site="movistarplus.es" site_id="CHAP1" lang="es" xmltv_id="">M+ Liga de Campeones 2</channel>
<channel site="movistarplus.es" site_id="CHAP2" lang="es" xmltv_id="">M+ Liga de Campeones 3</channel>
<channel site="movistarplus.es" site_id="CHAP3" lang="es" xmltv_id="">M+ Liga de Campeones 4</channel>
<channel site="movistarplus.es" site_id="CHAP4" lang="es" xmltv_id="">M+ Liga de Campeones 5</channel>
<channel site="movistarplus.es" site_id="CHAP5" lang="es" xmltv_id="">M+ Liga de Campeones 6</channel>
<channel site="movistarplus.es" site_id="CHAP6" lang="es" xmltv_id="">M+ Liga de Campeones 7</channel>
<channel site="movistarplus.es" site_id="CHAP7" lang="es" xmltv_id="">M+ Liga de Campeones 8</channel>
<channel site="movistarplus.es" site_id="CHAP8" lang="es" xmltv_id="">M+ Liga de Campeones 9</channel>
<channel site="movistarplus.es" site_id="CHAP9" lang="es" xmltv_id="">M+ Liga de Campeones 10</channel>
<channel site="movistarplus.es" site_id="CHAP10" lang="es" xmltv_id="">M+ Liga de Campeones 11</channel>
<channel site="movistarplus.es" site_id="CHAP11" lang="es" xmltv_id="">M+ Liga de Campeones 12</channel>
<channel site="movistarplus.es" site_id="CHAP12" lang="es" xmltv_id="">M+ Liga de Campeones 13</channel>
<channel site="movistarplus.es" site_id="CHAPIO" lang="es" xmltv_id="">M+ Liga de Campeones</channel>
<channel site="movistarplus.es" site_id="CL13" lang="es" xmltv_id="">Calle 13</channel>
<channel site="movistarplus.es" site_id="CLANTV" lang="es" xmltv_id="">Clan TVE</channel>
<channel site="movistarplus.es" site_id="CLASSD" lang="es" xmltv_id="">Classica</channel>
<channel site="movistarplus.es" site_id="CNN" lang="es" xmltv_id="">CNN Int</channel>
<channel site="movistarplus.es" site_id="COSMO" lang="es" xmltv_id="">COSMO</channel>
<channel site="movistarplus.es" site_id="CPACCI" lang="es" xmltv_id="">M+ Acción</channel>
<channel site="movistarplus.es" site_id="CPCOLE" lang="es" xmltv_id="">M+ Drama</channel>
<channel site="movistarplus.es" site_id="CPCOME" lang="es" xmltv_id="">M+ Comedia</channel>
<channel site="movistarplus.es" site_id="CPDEP" lang="es" xmltv_id="">M+ Deportes</channel>
<channel site="movistarplus.es" site_id="DAZB2" lang="es" xmltv_id="">DAZN Baloncesto 2</channel>
<channel site="movistarplus.es" site_id="DAZB3" lang="es" xmltv_id="">DAZN Baloncesto 3</channel>
<channel site="movistarplus.es" site_id="DAZBA" lang="es" xmltv_id="">DAZN Baloncesto</channel>
<channel site="movistarplus.es" site_id="DAZN3" lang="es" xmltv_id="">DAZN 3</channel>
<channel site="movistarplus.es" site_id="DAZN4" lang="es" xmltv_id="">DAZN 4</channel>
<channel site="movistarplus.es" site_id="DAZNL2" lang="es" xmltv_id="">DAZN LALIGA 2</channel>
<channel site="movistarplus.es" site_id="DAZNLI" lang="es" xmltv_id="">DAZN LALIGA</channel>
<channel site="movistarplus.es" site_id="DCESP" lang="es" xmltv_id="">M+ Cine Español</channel>
<channel site="movistarplus.es" site_id="DCR" lang="es" xmltv_id="">Discovery</channel>
<channel site="movistarplus.es" site_id="DCRMAX" lang="es" xmltv_id="">DMAX</channel>
<channel site="movistarplus.es" site_id="DIVINI" lang="es" xmltv_id="">Divinity</channel>
<channel site="movistarplus.es" site_id="DKISS" lang="es" xmltv_id="">DKISS</channel>
<channel site="movistarplus.es" site_id="DWSP" lang="es" xmltv_id="">Dreamworks</channel>
<channel site="movistarplus.es" site_id="ENERGY" lang="es" xmltv_id="">Energy</channel>
<channel site="movistarplus.es" site_id="ENW" lang="es" xmltv_id="">Euronews</channel>
<channel site="movistarplus.es" site_id="ESP" lang="es" xmltv_id="">Eurosport 1</channel>
<channel site="movistarplus.es" site_id="ESP2" lang="es" xmltv_id="">Eurosport 2</channel>
<channel site="movistarplus.es" site_id="ETB" lang="es" xmltv_id="">EITB Basque</channel>
<channel site="movistarplus.es" site_id="EXTREM" lang="es" xmltv_id="">Canal Extremadura Sat</channel>
<channel site="movistarplus.es" site_id="FDFIC" lang="es" xmltv_id="">Factoría de Ficción</channel>
<channel site="movistarplus.es" site_id="FLIX1" lang="es" xmltv_id="">Canal FlixOlé 1</channel>
<channel site="movistarplus.es" site_id="FLIX2" lang="es" xmltv_id="">Canal FlixOlé 2</channel>
<channel site="movistarplus.es" site_id="FOXGE" lang="es" xmltv_id="">STAR Channel</channel>
<channel site="movistarplus.es" site_id="FRANCE" lang="es" xmltv_id="">FRANCE24 (FR)</channel>
<channel site="movistarplus.es" site_id="GARAGE" lang="es" xmltv_id="">El Garage TV</channel>
<channel site="movistarplus.es" site_id="GOL" lang="es" xmltv_id="">GOL</channel>
<channel site="movistarplus.es" site_id="GOLF2" lang="es" xmltv_id="">M+ Golf 2</channel>
<channel site="movistarplus.es" site_id="GOLF+" lang="es" xmltv_id="">M+ Golf</channel>
<channel site="movistarplus.es" site_id="INTECO" lang="es" xmltv_id="">El Toro TV</channel>
<channel site="movistarplus.es" site_id="INTEUA" lang="es" xmltv_id="">1+1 Internacional</channel>
<channel site="movistarplus.es" site_id="LA2" lang="es" xmltv_id="">LA 2</channel>
<channel site="movistarplus.es" site_id="M1SD" lang="es" xmltv_id="">DAZN 1</channel>
<channel site="movistarplus.es" site_id="M2SD" lang="es" xmltv_id="">DAZN 2</channel>
<channel site="movistarplus.es" site_id="MAXAVA" lang="es" xmltv_id="">HBO Max Avances</channel>
<channel site="movistarplus.es" site_id="MCIBE" lang="es" xmltv_id="">M+ Cine bélico</channel>
<channel site="movistarplus.es" site_id="MCLAS" lang="es" xmltv_id="">M+ Clásicos</channel>
<channel site="movistarplus.es" site_id="MCOPA" lang="es" xmltv_id="">Primera Federación</channel>
<channel site="movistarplus.es" site_id="MDOC" lang="es" xmltv_id="">M+ Documentales</channel>
<channel site="movistarplus.es" site_id="MEGA" lang="es" xmltv_id="">Mega</channel>
<channel site="movistarplus.es" site_id="MELLAV" lang="es" xmltv_id="">M+ Ellas V</channel>
<channel site="movistarplus.es" site_id="MEZZLI" lang="es" xmltv_id="">Mezzo Live</channel>
<channel site="movistarplus.es" site_id="MEZZO" lang="es" xmltv_id="">Mezzo</channel>
<channel site="movistarplus.es" site_id="MHITS" lang="es" xmltv_id="">M+ Hits</channel>
<channel site="movistarplus.es" site_id="MINDI" lang="es" xmltv_id="">M+ Indie</channel>
<channel site="movistarplus.es" site_id="MLIG1" lang="es" xmltv_id="">M+ LALIGA 2</channel>
<channel site="movistarplus.es" site_id="MLIG2" lang="es" xmltv_id="">M+ LALIGA 3</channel>
<channel site="movistarplus.es" site_id="MLIG3" lang="es" xmltv_id="">M+ LALIGA 4</channel>
<channel site="movistarplus.es" site_id="MLIGA" lang="es" xmltv_id="">M+ LALIGA</channel>
<channel site="movistarplus.es" site_id="MLIGS" lang="es" xmltv_id="">LALIGA TV HYPERMOTION</channel>
<channel site="movistarplus.es" site_id="MLIGS2" lang="es" xmltv_id="">LALIGA TV HYPERMOTION 2</channel>
<channel site="movistarplus.es" site_id="MLIGS3" lang="es" xmltv_id="">LALIGA TV HYPERMOTION 3</channel>
<channel site="movistarplus.es" site_id="MORIG" lang="es" xmltv_id="">M+ Originales</channel>
<channel site="movistarplus.es" site_id="MPLUS" lang="es" xmltv_id="">Movistar Plus+</channel>
<channel site="movistarplus.es" site_id="MTV" lang="es" xmltv_id="">MTV</channel>
<channel site="movistarplus.es" site_id="MULTI6" lang="es" xmltv_id="">M+ Deportes 7</channel>
<channel site="movistarplus.es" site_id="MULTI8" lang="es" xmltv_id="">M+ Deportes 6</channel>
<channel site="movistarplus.es" site_id="MULTI9" lang="es" xmltv_id="">M+ Deportes 8</channel>
<channel site="movistarplus.es" site_id="MV1" lang="es" xmltv_id="">M+ Estrenos</channel>
<channel site="movistarplus.es" site_id="MVF1" lang="es" xmltv_id="">DAZN F1</channel>
<channel site="movistarplus.es" site_id="NATGEO" lang="es" xmltv_id="">National Geographic</channel>
<channel site="movistarplus.es" site_id="NATGW" lang="es" xmltv_id="">Nat Geo Wild</channel>
<channel site="movistarplus.es" site_id="NBC" lang="es" xmltv_id="">CNBC</channel>
<channel site="movistarplus.es" site_id="NEGOTV" lang="es" xmltv_id="">Negocios TV</channel>
<channel site="movistarplus.es" site_id="NEOX" lang="es" xmltv_id="">Neox</channel>
<channel site="movistarplus.es" site_id="NICK" lang="es" xmltv_id="">Nickelodeon</channel>
<channel site="movistarplus.es" site_id="NICKJR" lang="es" xmltv_id="">NICK JR</channel>
<channel site="movistarplus.es" site_id="NOVA" lang="es" xmltv_id="">Nova</channel>
<channel site="movistarplus.es" site_id="PCM" lang="es" xmltv_id="">Comedy Central</channel>
<channel site="movistarplus.es" site_id="PLAYDC" lang="es" xmltv_id="">Disney Junior</channel>
<channel site="movistarplus.es" site_id="REALM" lang="es" xmltv_id="">Real Madrid TV</channel>
<channel site="movistarplus.es" site_id="SCI-FI" lang="es" xmltv_id="">SYFY</channel>
<channel site="movistarplus.es" site_id="SET" lang="es" xmltv_id="">AXN Movies</channel>
<channel site="movistarplus.es" site_id="SEXTA" lang="es" xmltv_id="">La Sexta</channel>
<channel site="movistarplus.es" site_id="SKYSHO" lang="es" xmltv_id="">SkyShowtime 1</channel>
<channel site="movistarplus.es" site_id="SQUI" lang="es" xmltv_id="">Squirrel</channel>
<channel site="movistarplus.es" site_id="T5" lang="es" xmltv_id="">Telecinco</channel>
<channel site="movistarplus.es" site_id="TCM" lang="es" xmltv_id="">TCM</channel>
<channel site="movistarplus.es" site_id="TDEP" lang="es" xmltv_id="">Teledeporte</channel>
<channel site="movistarplus.es" site_id="TELMIN" lang="es" xmltv_id="">Telemadrid Int.</channel>
<channel site="movistarplus.es" site_id="TEN" lang="es" xmltv_id="">Ten</channel>
<channel site="movistarplus.es" site_id="TNT" lang="es" xmltv_id="">Warner TV</channel>
<channel site="movistarplus.es" site_id="TV5" lang="es" xmltv_id="">TV5MONDE</channel>
<channel site="movistarplus.es" site_id="TVC" lang="es" xmltv_id="">TV3 Cat</channel>
<channel site="movistarplus.es" site_id="TVE" lang="es" xmltv_id="">LA 1</channel>
<channel site="movistarplus.es" site_id="TVG" lang="es" xmltv_id="">TVG Europa</channel>
<channel site="movistarplus.es" site_id="UBEAT" lang="es" xmltv_id="">Ubeat</channel>
<channel site="movistarplus.es" site_id="UCL" lang="es" xmltv_id="">UCL</channel>
<channel site="movistarplus.es" site_id="USOP2" lang="es" xmltv_id="">M+ Deportes 3</channel>
<channel site="movistarplus.es" site_id="USOP3" lang="es" xmltv_id="">M+ Deportes 4</channel>
<channel site="movistarplus.es" site_id="USOP11" lang="es" xmltv_id="">M+ Deportes 5</channel>
<channel site="movistarplus.es" site_id="VAM2SD" lang="es" xmltv_id="">M+ Vamos 2</channel>
<channel site="movistarplus.es" site_id="VAMOSD" lang="es" xmltv_id="">M+ Vamos</channel>
<channel site="movistarplus.es" site_id="VEO7" lang="es" xmltv_id="">Veo7</channel>
</channels>

View File

@@ -1,97 +1,93 @@
const axios = require('axios')
const cheerio = require('cheerio')
const dayjs = require('dayjs')
const timezone = require('dayjs/plugin/timezone')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.tz.setDefault('Europe/Madrid')
module.exports = {
site: 'movistarplus.es',
days: 2,
url({ channel, date }) {
return `https://www.movistarplus.es/programacion-tv/${channel.site_id}/${date.format('YYYY-MM-DD')}`
return `https://ottcache.dof6.com/movistarplus/webplayer/OTT/epg?from=${date.format('YYYY-MM-DDTHH:mm:ss')}&span=1&channel=${channel.site_id}&version=8&mdrm=true&tlsstream=true&demarcation=18`
},
async parser({ content }) {
let programs = []
let items = parseItems(content)
let items = await parseItems(content)
if (!items.length) return programs
const $ = cheerio.load(content)
const programElements = $('div[id^="ele-"]').get()
for (let i = 0; i < items.length; i++) {
const el = items[i]
let description = null
if (programElements[i]) {
const programDiv = $(programElements[i])
const programLink = programDiv.find('a').attr('href')
if (programLink) {
const idMatch = programLink.match(/id=(\d+)/)
if (idMatch && idMatch[1]) {
description = await getProgramDescription(programLink).catch(() => null)
}
}
}
items.forEach(el => {
programs.push({
title: el.item.name,
description: description,
start: dayjs(el.item.startDate),
stop: dayjs(el.item.endDate)
title: el.title,
description: el.description,
season: el.season,
episode: el.episode,
start: el.start,
stop: el.stop
})
})
}
return programs
},
async channels() {
const html = await axios
.get('https://www.movistarplus.es/programacion-tv')
const json = await axios
.get('https://ottcache.dof6.com/movistarplus/webplayer/OTT/contents/channels?mdrm=true&tlsstream=true&demarcation=18&version=8')
.then(r => r.data)
.catch(console.log)
const $ = cheerio.load(html)
let scheme = $('script:contains(ItemList)').html()
scheme = JSON.parse(scheme)
return scheme.itemListElement.map(el => {
const urlParts = el.item.url.split('/')
const site_id = urlParts.pop().toLowerCase()
// Load JSON, CodCadenaTv is the closest to the old MVSTR site ch. ID
return json.map(channel => {
return {
lang: 'es',
name: el.item.name,
site_id
site_id: channel.CodCadenaTv,
name: channel.Nombre,
logo: channel.Logo ? channel.Logos[0].url : null
}
})
}
}
function parseItems(content) {
async function parseItems(content) {
try {
const $ = cheerio.load(content)
let scheme = $('script:contains("@type": "ItemList")').html()
scheme = JSON.parse(scheme)
if (!scheme || !Array.isArray(scheme.itemListElement)) return []
return scheme.itemListElement
const data = JSON.parse(content)
const programs = Array.isArray(data) ? data : [data]
return await Promise.all(programs.map(async (json) => {
const start = dayjs.utc(Number(json?.FechaHoraInicio))
const stop = dayjs.utc(Number(json?.FechaHoraFin))
const ficha = json?.Ficha || null
if (!ficha) {
return {
title: json?.Titulo || '',
description: json?.Resena || '',
start,
stop
}
} else {
try {
const fichaJson = await axios.get(ficha).then(r => r.data)
return {
title: json?.Titulo || fichaJson?.Titulo || '',
description: fichaJson?.Descripcion || json?.Resena || '',
actors: fichaJson?.Actores || [],
directors: fichaJson?.Directores || [],
classification: fichaJson?.Clasificacion || '',
season: fichaJson?.Temporada || null,
episode: fichaJson?.NumeroEpisodio || null,
start,
stop
}
} catch {
return {
title: json?.Titulo || '',
description: json?.Resena || '',
start,
stop
}
}
}
}))
} catch {
return []
}
}
async function getProgramDescription(programUrl) {
try {
const response = await axios.get(programUrl, {
headers: {
'Referer': 'https://www.movistarplus.es/programacion-tv/'
}
})
const $ = cheerio.load(response.data)
const description = $('.show-content .text p').first().text().trim() || null
return description
} catch (error) {
console.error(`Error fetching description from ${programUrl}:`, error.message)
return null
}
}
}

View File

@@ -9,7 +9,7 @@ dayjs.extend(utc)
const axios = require('axios')
jest.mock('axios')
const date = dayjs.utc('2025-05-30', 'YYYY-MM-DD').startOf('d')
const date = dayjs.utc('2026-02-09', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'sexta',
xmltv_id: 'LaSexta.es'
@@ -17,32 +17,31 @@ const channel = {
it('can generate valid url', () => {
expect(url({ channel, date })).toBe(
'https://www.movistarplus.es/programacion-tv/sexta/2025-05-30'
'https://ottcache.dof6.com/movistarplus/webplayer/OTT/epg?from=2026-02-09T00:00:00&span=1&channel=sexta&version=8&mdrm=true&tlsstream=true&demarcation=18'
)
})
it('can parse response', async () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'), 'utf8')
// Ficha for both results
axios.get.mockImplementation(url => {
if (
url ===
'https://www.movistarplus.es/entretenimiento/venta-prime-t1/ficha?tipo=E&id=3414523'
'https://ottcache.dof6.com/movistarplus/webplayer/contents/63188242/details?mediaType=FOTOV&profile=OTT&mode=U7D2&channels=SEXTA&version=8&tlsStream=true&mdrm=true&catalog=catchup&showNonRated=true'
) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/program1.html'))
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/ficha.json'), 'utf8'))
})
} else if (
url ===
'https://www.movistarplus.es/deportes/programa/pokerstars-casino-1/ficha?tipo=E&id=2057641'
url === 'https://ottcache.dof6.com/movistarplus/webplayer/contents/63182873/details?mediaType=FOTOV&profile=OTT&mode=VODREJILLA&channels=SEXTA&version=8&tlsStream=true&mdrm=true&catalog=events&showNonRated=true'
) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/program2.html'))
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/ficha2.json'), 'utf8'))
})
} else {
return Promise.resolve({ data: '' })
}
})
let results = await parser({ content, date })
results = results.map(p => {
@@ -51,20 +50,18 @@ it('can parse response', async () => {
return p
})
expect(results.length).toBe(23)
expect(results.length).toBe(21)
expect(results[0]).toMatchObject({
start: '2025-05-30T03:15:00.000Z',
stop: '2025-05-30T04:25:00.000Z',
title: 'Venta Prime',
description:
'Espacio de televenta.'
start: '2026-02-08T21:45:00.000Z',
stop: '2026-02-09T00:30:00.000Z',
title: 'Especial ARV elecciones Aragón',
description: 'Antonio García Ferreras y Ana Pastor analizan y debaten sobre el recuento y los resultados que arrojen las urnas con analistas como Lluís Orriols, Antonio Maestre, Ignacio Escolar, Pilar Velasco, Santiago Martínez Vares y Pablo Montesinos.'
})
expect(results[19]).toMatchObject({
start: '2025-05-31T00:45:00.000Z',
stop: '2025-05-31T01:25:00.000Z',
title: 'Pokerstars casino',
description:
'El programa trae cada día toda la emoción de su ruleta en vivo, Spin & Win, una versión exclusiva del clásico juego de casino.'
start: '2026-02-09T20:30:00.000Z',
stop: '2026-02-09T22:00:00.000Z',
title: 'El intermedio',
description: 'El Gran Wyoming, con la ayuda de sus colaboradores, analiza en clave de humor las noticias más importantes del día. El sello inconfundible del cómico sirve para completar la información desde un punto de vista más distendido e irónico.'
})
})

File diff suppressed because it is too large Load Diff