fixes movistar plus
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build docker container / build (push) Successful in 4m32s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build docker container / build (push) Successful in 4m32s
				
			This commit is contained in:
		| @@ -1,8 +1,5 @@ | ||||
| // credit for this fix goes to davidclaeysquinones for his PR on https://github.com/iptv-org/epg/pull/2440 | ||||
|  | ||||
| const { DateTime } = require('luxon') | ||||
|  | ||||
| const API_CHANNEL_ENDPOINT = 'https://www.movistarplus.es/programacion-tv' | ||||
| const API_PROGRAM_ENDPOINT = 'https://comunicacion.movistarplus.es' | ||||
| const API_IMAGE_ENDPOINT = 'https://www.movistarplus.es/recorte/n/caratulaH/'; | ||||
|  | ||||
| @@ -17,78 +14,60 @@ module.exports = { | ||||
|     headers: { | ||||
|       Origin: API_PROGRAM_ENDPOINT, | ||||
|       Referer: `${API_PROGRAM_ENDPOINT}/programacion/`, | ||||
|       "Content-Type" : 'application/x-www-form-urlencoded; charset=UTF-8' | ||||
|       "Content-Type" : 'application/x-www-form-urlencoded; charset=UTF-8', | ||||
|     }, | ||||
|     data: function ({ channel, date }) { | ||||
|       return { | ||||
|         action: 'getProgramation', | ||||
|         day: date.format('YYYY-MM-DD'), | ||||
|         "channels[]": channel.site_id | ||||
|       } | ||||
|     } | ||||
|         "channels[]": channel.site_id, | ||||
|       }; | ||||
|     }, | ||||
|   }, | ||||
|   parser({ content, channel, date }) { | ||||
|     let programs = [] | ||||
|     let items = parseItems(content, channel) | ||||
|     if (!items.length) return programs | ||||
|     let guideDate = date | ||||
|     let items = parseItems(content, channel); | ||||
|     if (!items.length) return programs; | ||||
|  | ||||
|     items.forEach(item => { | ||||
|       let startTime = DateTime.fromFormat( | ||||
|         `${item.f_evento_rejilla}`, | ||||
|         'yyyy-MM-dd HH:mm:ss', | ||||
|         { | ||||
|           zone: 'Europe/Madrid' | ||||
|         } | ||||
|       ).toUTC() | ||||
|         { zone: 'Europe/Madrid' } | ||||
|       ).toUTC(); | ||||
|  | ||||
|       let stopTime = DateTime.fromFormat( | ||||
|         `${item.f_fin_evento_rejilla}`, | ||||
|         'yyyy-MM-dd HH:mm:ss', | ||||
|         { | ||||
|           zone: 'Europe/Madrid' | ||||
|         } | ||||
|         { zone: 'Europe/Madrid' } | ||||
|       ).toUTC() | ||||
|  | ||||
|       // Adjust stop time if it's on the next day | ||||
|       if (stopTime < startTime) { | ||||
|         guideDate = guideDate.add(1, 'd') | ||||
|         stopTime = stopTime.plus({ days: 1 }) | ||||
|         stopTime = stopTime.plus({ days: 1 }); | ||||
|       } | ||||
|  | ||||
|       programs.push({ | ||||
|         title: item.des_evento_rejilla, | ||||
|         icon: parseIcon(item, channel), | ||||
|         category: item.des_genero, | ||||
|         start: startTime, | ||||
|         stop: stopTime | ||||
|         stop: stopTime, | ||||
|       }) | ||||
|     }) | ||||
|  | ||||
|     return programs | ||||
|   }, | ||||
|   async channels() { | ||||
|     const axios = require('axios') | ||||
|     const dayjs = require('dayjs') | ||||
|     const data = await axios | ||||
|       .get(`${API_CHANNEL_ENDPOINT}/${dayjs().format('YYYY-MM-DD')}?v=json`) | ||||
|       .then(r => r.data) | ||||
|       .catch(console.log) | ||||
|  | ||||
|     return Object.values(data.data).map(item => { | ||||
|       return { | ||||
|         lang: 'es', | ||||
|         site_id: item.DATOS_CADENA.CODIGO, | ||||
|         name: item.DATOS_CADENA.NOMBRE | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
| } | ||||
|  | ||||
| function parseIcon(item, channel) { | ||||
|   return `${API_IMAGE_ENDPOINT}/M${channel.site_id}P${item.ELEMENTO}`; | ||||
|   return `${API_IMAGE_ENDPOINT}/M${channel.site_id}P${item.cod_evento_rejilla}`; | ||||
| } | ||||
|  | ||||
| function parseItems(content, channel) { | ||||
|   const json = typeof content === 'string' ? JSON.parse(content) : content | ||||
|   const json = typeof content === 'string' ? JSON.parse(content) : content; | ||||
|   const data = json.channelsProgram; | ||||
|  | ||||
|   if(data.length != 1) | ||||
|     return [] | ||||
|   if (data.length !== 1) return []; | ||||
|   return data[0]; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user