From 7e180ad6094c962a8b477978dba8552297e38557 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sun, 19 Apr 2026 02:28:41 +0300 Subject: [PATCH 1/3] Update __data__/ --- sites/movistarplus.es/__data__/content.html | 2486 ------------------ sites/movistarplus.es/__data__/program1.html | 778 ------ sites/movistarplus.es/__data__/program2.html | 809 ------ 3 files changed, 4073 deletions(-) delete mode 100644 sites/movistarplus.es/__data__/content.html delete mode 100644 sites/movistarplus.es/__data__/program1.html delete mode 100644 sites/movistarplus.es/__data__/program2.html diff --git a/sites/movistarplus.es/__data__/content.html b/sites/movistarplus.es/__data__/content.html deleted file mode 100644 index 135a25f8e..000000000 --- a/sites/movistarplus.es/__data__/content.html +++ /dev/null @@ -1,2486 +0,0 @@ - - - - - - Programación TV de La Sexta viernes 30 de mayo | Movistar Plus+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - - -
- -
-
- - -
- -
- -
-
-
-
-

Programación - de La Sexta - hoy

- -
-
-
-
-
-
- -
-
-
-
- -
- Tus filtros: - - -
- -
-
-
-
-
- - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
- Ver día siguiente -
- - -
-
- -
- - -
-
-
- - - - - - - - - - - - - - - - - - diff --git a/sites/movistarplus.es/__data__/program1.html b/sites/movistarplus.es/__data__/program1.html deleted file mode 100644 index 174a44539..000000000 --- a/sites/movistarplus.es/__data__/program1.html +++ /dev/null @@ -1,778 +0,0 @@ - - - - - - Venta Prime (2024) | Movistar Plus+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - - -
- -
-
- - -
-
-
-
-
- - Logo Movistar Plus+ - -
-
-
- - - - -
- Venta Prime -
- -
-
-

Venta Prime

-

Ventaprime

-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
- Venta Prime -
-
-
Duración
0:00' -
-
Confiesa que te gusta
- - - - - - -
-
-
-
-

Valoración de usuarios

-
-
- 5 - 4 - 3 - 2 - 1 -
-
- 3 - 180 - votos -
-
- - -
-
-
-
-
-
- -
-
- - - Suscribirme ahora - -
- - - - - - - - - - - - - - - - Incluido en suscripción de 9,99€ -
-
-
- -
-
-
-
-

Sinopsis

-
-
-
-

Espacio de televenta.

-
-

Ver más

-
-
-
-
-

Info

-
-
    -
-

Televenta

(2024)

-
-
-

Calificación

-
- Apto para todos los públicos -
-
-
-
-
-
- -
-
-
- - - - - - - - - - - - - - diff --git a/sites/movistarplus.es/__data__/program2.html b/sites/movistarplus.es/__data__/program2.html deleted file mode 100644 index 2bd0a88e3..000000000 --- a/sites/movistarplus.es/__data__/program2.html +++ /dev/null @@ -1,809 +0,0 @@ - - - - - - Pokerstars casino (2022) | Movistar Plus+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - - -
- -
-
- - -
-
-
-
-
- - Logo Movistar Plus+ - -
-
-
- - - - -
- Pokerstars casino -
- -
-
-

Pokerstars casino

-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
- Pokerstars casino -
-
-
Duración
0:00' -
-
Confiesa que te gusta
- - - - - - -
-
-
-
-

Valoración de usuarios

-
-
- 5 - 4 - 3 - 2 - 1 -
-
- 3 - 107 - votos -
-
- - -
-
-
-
-
-
- -
-
- - - Suscribirme ahora - -
- - - - - - - - - - - - - - - - Incluido en suscripción de 9,99€ -
-
-
- -
-
-
-
-

Sinopsis

-
-
-
-

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.

-
-

Ver más

-
-
-
-
-

Info

-
-
    -
-

Programa deportes

España (2022)

-
-
-

Calificación

-
- No recomendado para menores de dieciocho años -
-
-
-
-
-
-
-
-
-

Equipo Técnico

-
-
-
-
-
-
- -
-
-
-
-
-

Presentador

-

Paco González

-
-
-
-
- -
-
-
- - - - - - - - - - - - - - From 5a5798ca0fcf49fbc326d8fbe00ce33215ed4c6d Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sun, 19 Apr 2026 02:28:46 +0300 Subject: [PATCH 2/3] Update movistarplus.es.test.js --- sites/movistarplus.es/movistarplus.es.test.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/sites/movistarplus.es/movistarplus.es.test.js b/sites/movistarplus.es/movistarplus.es.test.js index b6b082ab8..db9bc5eaa 100644 --- a/sites/movistarplus.es/movistarplus.es.test.js +++ b/sites/movistarplus.es/movistarplus.es.test.js @@ -34,14 +34,14 @@ it('can parse response', async () => { data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/ficha.json'), 'utf8')) }) } else if ( - 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' + 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: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/ficha2.json'), 'utf8')) }) } }) - let results = await parser({ content, date }) results = results.map(p => { @@ -55,21 +55,26 @@ it('can parse response', async () => { 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.' + 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.', + icon: 'https://estatico.emisiondof6.com/recorte/n/dispficha/MSEXTAP4235944', + images: ['https://estatico.emisiondof6.com/recorte/n/vegend/MSEXTAF4235944.jpg'] }) expect(results[19]).toMatchObject({ 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.' + 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.', + icon: 'https://estatico.emisiondof6.com/recorte/n/dispficha/MSEXTAP4236939', + images: ['https://estatico.emisiondof6.com/recorte/n/vegend/MSEXTAF4236939.jpg'] }) }) - it('can handle empty guide', async () => { const results = await parser({ date, - channel, + channel, content: '[]' }) From f403e5c1d1d9c997570e0cc4195463c4388f90e9 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sun, 19 Apr 2026 02:28:58 +0300 Subject: [PATCH 3/3] Update movistarplus.es.config.js --- .../movistarplus.es/movistarplus.es.config.js | 89 +++++++++++-------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/sites/movistarplus.es/movistarplus.es.config.js b/sites/movistarplus.es/movistarplus.es.config.js index eac40b510..dd4fa193b 100644 --- a/sites/movistarplus.es/movistarplus.es.config.js +++ b/sites/movistarplus.es/movistarplus.es.config.js @@ -29,20 +29,23 @@ module.exports = { items.forEach(el => { programs.push({ - title: el.title, - description: el.description, - season: el.season, - episode: el.episode, - start: el.start, - stop: el.stop - }) + title: el.title, + description: el.description, + icon: el.icon, + images: el.images, + season: el.season, + episode: el.episode, + start: el.start, + stop: el.stop }) + }) return programs - }, async channels() { const json = await axios - .get('https://ottcache.dof6.com/movistarplus/webplayer/OTT/contents/channels?mdrm=true&tlsstream=true&demarcation=18&version=8') + .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) @@ -58,45 +61,57 @@ module.exports = { } } +function parseImages(images) { + return images.filter(image => image.id === 'watch2tgr-end').map(image => image.uri) +} + async function parseItems(content) { try { 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 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 || '', + icon: json?.Imagen || '', + images: json.Imagenes ? parseImages(json.Imagenes) : [], 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 || '', + icon: fichaJson?.Imagen || '', + images: fichaJson.Imagenes ? parseImages(fichaJson.Imagenes) : [], + 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 || '', + icon: json?.Imagen || '', + images: json.Imagenes ? parseImages(json.Imagenes) : [], + start, + stop + } + } } - } - })) + }) + ) } catch { return [] }