diff --git a/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.channels.xml b/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.channels.xml index 929c7a1c..c2b57d21 100644 --- a/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.channels.xml +++ b/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.channels.xml @@ -1,5 +1,29 @@ + TF1 + France 2 + France 3 + France 4 + France 5 + M6 + Arte + LCP Assemblée Nationale + W9 + TMC + TFX + Gulli + BFM TV + CNEWS + LCI + Franceinfo + CSTAR + T18 + TF1 Séries Films + L'Équipe + 6ter + RMC STORY + RMC Découverte + Chérie 25 LA CHAINE DU PERE NOEL FRANCE 3 ALPES FRANCE 3 ALSACE @@ -41,7 +65,7 @@ FRANCE 24 Espagnol CARTOONITO SQOOL TV - CANAL+BOX OFFICE + CANAL+BOX OFFICE TVMONACO DAZN 1 TRACE URBAN @@ -147,12 +171,10 @@ SEN TV TRACE TERANGA 2M MONDE - 6TER AB1 ACTION AL JAZEERA Anglais ANIMAUX - ARTE AUTOMOTO, la chaine BBC ENTERTAINMENT BBC NEWS @@ -168,34 +190,30 @@ BEIN SPORTS MAX 9 BET BFM BUSINESS - BFM TV BLOOMBERG EUROPE BOOMERANG BOOMERANG +1 CANAL J CANAL+ - CANAL+CINEMA(S) + CANAL+CINEMA(S) CANAL+DOCS CANAL+GRAND ECRAN CANAL+kids CANAL+SERIES CANAL+SPORT CHASSE PECHE - CHERIE 25 CINE+CLASSIC - CINE+CLUB + CINE+FESTIVAL CINE+EMOTION CINE+FAMIZ CINE+FRISSON CINE+PREMIER CLUBBING TV CNBC - CNEWS CNN INTERNATIONAL COMEDIE+ COMEDY CENTRAL CRIME DISTRICT - CSTAR DEMAIN DISNEY CHANNEL DISNEY JUNIOR @@ -204,28 +222,19 @@ EUROCHANNEL EURONEWS Français FASHIONTV PARIS - FRANCE 2 FRANCE 24 Anglais FRANCE 24 Français - FRANCE 3 FRANCE 3 CORSE VIA STELLA - FRANCE 4 - FRANCE 5 - FRANCEINFO: GAME ONE GAME ONE +1 GOLF CHANNEL - GULLI HISTOIRE TV I24NEWS J-ONE KTO - LCI LCP 100% - LA CHAINE L'EQUIPE LUCKY JACK LUXE TV - M6 M6MUSIC MAISON ET TRAVAUX TV MANGAS @@ -261,13 +270,10 @@ PLANETE+AVENTURE PLANETE+CRIME POLAR+ - LCP/PS RAI UNO RAI DUE RAI TRE RAI NEWS 24 - RMC DECOUVERTE - RMC STORY RTL9 RTPI SCIENCE & VIE TV @@ -275,17 +281,12 @@ SPORT EN FRANCE STINGRAY CLASSICA SUNU YEUF - T18 TCM CINEMA TELETOON+ TELETOON +1 TEVA - TF1 TF1 +1 - TF1 SERIES FILMS - TFX TIJI - TMC TMC +1 TOUTE L'HISTOIRE TV5MONDE @@ -294,5 +295,7 @@ TV PITCHOUN USHUAIA TV VOXAFRICA - W9 + + + diff --git a/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.config.js b/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.config.js index 3ed3ebc4..74fa5f20 100644 --- a/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.config.js +++ b/sites/chaines-tv.orange.fr/chaines-tv.orange.fr.config.js @@ -9,12 +9,29 @@ module.exports = { .add(1, 'd') .valueOf()}&after=${channel.site_id}&limit=1` }, - parser: function ({ content, channel }) { + async parser({ content, channel }) { let programs = [] const items = parseItems(content, channel) - items.forEach(item => { + + for (const item of items) { const start = parseStart(item) const stop = parseStop(item, start) + const url = parseDetailURL(item) + let itemDetails = null + if (url) { + try { + const response = await axios.get(url, {}, { + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } + }) + itemDetails = response.data + } catch (err) { + console.error(`Erreur lors du fetch des détails pour l'item: ${url}`, err) + } + } + programs.push({ title: item.title, subTitle: item.season?.serie?.title, @@ -24,9 +41,13 @@ module.exports = { episode: parseEpisode(item), image: parseImage(item), start: start.toJSON(), - stop: stop.toJSON() + stop: stop.toJSON(), + date: itemDetails?.productionDate, + directors: parseDirectors(itemDetails), + actors: parseActors(itemDetails), + country: itemDetails?.productionCountries }) - }) + } return programs }, @@ -52,6 +73,28 @@ module.exports = { } } +function parseDetailURL(item) { + return item.links && item.links.length ? item.links[0].href : null +} + +function parseDirectors(itemDetails) { + if (!itemDetails) return [] + if (!itemDetails?.contributors) return [] + if (!itemDetails?.contributors?.directors) return [] + // Add value in the array of directors instead of firstName + lastName see: + // https://www.npmjs.com/package/epg-grabber + return itemDetails?.contributors?.directors.map(director => ({value: `${director.firstName} ${director.lastName}`})) +} + +function parseActors(itemDetails) { + if (!itemDetails) return [] + if (!itemDetails?.contributors) return [] + if (!itemDetails?.contributors?.actors) return [] + // Add value in the array of actors instead of firstName + lastName see: + // https://www.npmjs.com/package/epg-grabber + return itemDetails?.contributors?.actors.map(actor => ({value: `${actor.firstName} ${actor.lastName}`})) +} + function parseImage(item) { return item.covers && item.covers.length ? item.covers[0].url : null } @@ -74,6 +117,7 @@ function parseEpisode(item) { function parseItems(content, channel) { const data = JSON.parse(content) + //console.log(data) // For debug return data && data[channel.site_id] ? data[channel.site_id] : [] }