Paco8 / plugin.video.movistarplus

Movistarplus for Kodi
GNU General Public License v2.0
39 stars 3 forks source link

Algunos canales se ven y otros no #18

Closed feserdel closed 7 months ago

feserdel commented 7 months ago

Hola, hoy he visto que hay canales que se ven perfectamente pero otros no.

Por ejemplo, Eurosport 1 NO se ve, pero Eurosport 2 SI se ve.

Copio parte de los LOG:

Eurosport 1

2023-11-17 11:55:31.718 T:17288 warning <general>: [script.module.inputstreamhelper] Widevine update check was made on 2023-11-17 09:59
2023-11-17 11:55:31.926 T:18056    info <general>: VideoPlayer::OpenFile: plugin://plugin.video.movistarplus/?action=play&id=ESP&url=https%3A%2F%2Feurosport1-dash-movistarplus.emisiondof6.com%2Fmanifest.mpd&session_request=%7B%22contentID%22%3A%22ESP%22%2C+%22streamType%22%3A%22CHN%22%7D&stype=tv
2023-11-17 11:55:31.927 T:13080    info <general>: Creating InputStream
2023-11-17 11:55:31.928 T:13080 warning <general>: AddOnLog: inputstream.adaptive: Set headers to the manifest by using "inputstream.adaptive.stream_headers" property is a deprecated behaviour that will be removed in future.
                                                   To set headers to the manifest, use "inputstream.adaptive.manifest_headers" property.
2023-11-17 11:55:31.928 T:13080    info <general>: AddOnLog: inputstream.adaptive: [Repr. chooser] Resolution set: 1920x1080, max allowed: 1920x1080, Adjust refresh rate: 0
2023-11-17 11:55:31.929 T:13080   error <general>: XFILE::CDirectory::GetDirectory - Error getting C:\Program Files\Kodi\addons\inputstream.adaptive\
2023-11-17 11:55:32.092 T:23356   error <general>: 127.0.0.1 - - [17/Nov/2023 11:55:32] "GET /?manifest=https://eurosport1-dash-movistarplus.emisiondof6.com/manifest.mpd HTTP/1.1" 200 -

2023-11-17 11:55:32.092 T:13080 warning <general>: AddOnLog: inputstream.adaptive: No periods in the manifest
2023-11-17 11:55:32.093 T:13080   error <general>: AddOnLog: inputstream.adaptive: Could not open / parse manifest (http://127.0.0.1:57011/?manifest=https://eurosport1-dash-movistarplus.emisiondof6.com/manifest.mpd)
2023-11-17 11:55:32.093 T:13080   error <general>: CVideoPlayer::OpenInputStream - error opening [plugin://plugin.video.movistarplus/?action=play&id=ESP&url=https%3A%2F%2Feurosport1-dash-movistarplus.emisiondof6.com%2Fmanifest.mpd&session_request=%7B%22contentID%22%3A%22ESP%22%2C+%22streamType%22%3A%22CHN%22%7D&stype=tv]
2023-11-17 11:55:32.093 T:13080    info <general>: CVideoPlayer::OnExit()
2023-11-17 11:55:32.093 T:13080    info <general>: ADDON: Dll Destroyed - InputStream Adaptive
2023-11-17 11:55:32.109 T:18056    info <general>: CVideoPlayer::CloseFile()
2023-11-17 11:55:32.109 T:18056    info <general>: VideoPlayer: waiting for threads to exit
2023-11-17 11:55:32.109 T:18056    info <general>: VideoPlayer: finished waiting

Eurosport2:

2023-11-17 11:55:35.901 T:31992 warning <general>: [script.module.inputstreamhelper] Widevine update check was made on 2023-11-17 09:59
2023-11-17 11:55:35.977 T:18056    info <general>: VideoPlayer::OpenFile: plugin://plugin.video.movistarplus/?action=play&id=ESP2&url=https%3A%2F%2Feurosport2-dash-movistarplus.emisiondof6.com%2Fmanifest.mpd&session_request=%7B%22contentID%22%3A%22ESP2%22%2C+%22streamType%22%3A%22CHN%22%7D&stype=tv
2023-11-17 11:55:35.977 T:31080    info <general>: Creating InputStream
2023-11-17 11:55:35.978 T:31080 warning <general>: AddOnLog: inputstream.adaptive: Set headers to the manifest by using "inputstream.adaptive.stream_headers" property is a deprecated behaviour that will be removed in future.
                                                   To set headers to the manifest, use "inputstream.adaptive.manifest_headers" property.
2023-11-17 11:55:35.979 T:31080    info <general>: AddOnLog: inputstream.adaptive: [Repr. chooser] Resolution set: 1920x1080, max allowed: 1920x1080, Adjust refresh rate: 0
2023-11-17 11:55:35.979 T:31080   error <general>: XFILE::CDirectory::GetDirectory - Error getting C:\Program Files\Kodi\addons\inputstream.adaptive\
2023-11-17 11:55:36.240 T:9436    error <general>: 127.0.0.1 - - [17/Nov/2023 11:55:36] "GET /?manifest=https://eurosport2-dash-movistarplus.emisiondof6.com/manifest.mpd HTTP/1.1" 200 -

2023-11-17 11:55:36.242 T:31080    info <general>: AddOnLog: inputstream.adaptive: Successfully parsed manifest file (Periods: 1, Streams in first period: 4, Type: live)
2023-11-17 11:55:37.080 T:23068   error <general>: 127.0.0.1 - - [17/Nov/2023 11:55:37] "POST /license?token=***************&stype=tv&session_request=***************&session_token=**********&request_id=1700218535959 HTTP/1.1" 200 -

2023-11-17 11:55:37.241 T:31080    info <general>: Creating Demuxer
2023-11-17 11:55:37.241 T:31080    info <general>: Opening stream: 1001 source: 256
2023-11-17 11:55:37.296 T:31080    info <general>: Creating video codec with codec id: 27
2023-11-17 11:55:37.296 T:31080    info <general>: CDVDVideoCodecFFmpeg::Open() Using codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
2023-11-17 11:55:37.296 T:31080    info <general>: Creating video thread
2023-11-17 11:55:37.296 T:26356    info <general>: running thread: video_thread
2023-11-17 11:55:37.296 T:31080    info <general>: Opening stream: 1003 source: 256
2023-11-17 11:55:37.305 T:31080    info <general>: Finding audio codec for: 86018
2023-11-17 11:55:37.305 T:31080    info <general>: CDVDAudioCodecFFmpeg::Open() Successful opened audio decoder aac
2023-11-17 11:55:37.305 T:31080    info <general>: CVideoPlayerAudio::OpenStream: Allowing max Out-Of-Sync Value of 10 ms
2023-11-17 11:55:37.305 T:31080    info <general>: Creating audio thread
2023-11-17 11:55:37.305 T:17800    info <general>: running thread: CVideoPlayerAudio::Process()
2023-11-17 11:55:37.410 T:26356    info <general>: DXVA::CContext::CreateContext: creating discrete d3d11va device for decoding.
2023-11-17 11:55:37.423 T:17800    info <general>: CDVDAudioCodecFFmpeg::Open() Successful opened audio decoder aac
2023-11-17 11:55:37.423 T:17800    info <general>: Creating audio stream (codec id: 86018, channels: 2, sample rate: 48000, no pass-through)
2023-11-17 11:55:37.450 T:9632     info <general>: CActiveAESink::OpenSink - initialize sink
2023-11-17 11:55:37.451 T:26356    info <general>: DXVA::CDecoder::Open: Total video memory available is 8328 MB (dedicated = 495 MB, shared = 7832 MB)
2023-11-17 11:55:37.509 T:18056    info <general>: DXVA::CProcessorHD::InitProcessor: supported deinterlace methods: blend:no, bob:yes, adaptive:yes, mocomp:yes.
2023-11-17 11:55:37.510 T:18056 warning <general>: CRendererHQ::CheckVideoParameters: chosen scaling method 1 is not supported by renderer
2023-11-17 11:55:38.057 T:26356 warning <general>: CVideoPlayerVideo::OutputPicture - timeout waiting for buffer
2023-11-17 11:55:38.375 T:26356    info <general>: CDVDVideoCodecFFmpeg::CDropControl: calculated diff time: 40000
2023-11-17 11:55:41.932 T:32564   error <general>: 127.0.0.1 - - [17/Nov/2023 11:55:41] "GET /?manifest=https://eurosport2-dash-movistarplus.emisiondof6.com/manifest.mpd HTTP/1.1" 200 -

He probado en varios dispositivos (Windows, Android) y pasa lo mismo en todos. En cambio en la APP o decodificador de Movistar se ven bien.

Hay un porcentaje quizás del 50% de canales que fallan. Son siempre los mismos. No parece haber distinción entre canales abiertos o de pago.

Paco8 commented 7 months ago

Da error 403 al intentar cargar el fichero de manifiesto, supongo que ahora habrá que pasarle algún encabezado o algo para que cargue. Para eso tendría que ver lo que hace el navegador web cuando reproduce el canal. Pero ahora mismo no estoy abonado a Movistar, así que necesitaría que alguien me pasara su usuario y clave para poder mirarlo (email: mitvbox.spain arroba gmail.com).

O que alguien mire por mi los encabezados usando los devtools del navegador.

son-link commented 7 months ago

Da error 403 al intentar cargar el fichero de manifiesto, supongo que ahora habrá que pasarle algún encabezado o algo para que cargue. Para eso tendría que ver lo que hace el navegador web cuando reproduce el canal. Pero ahora mismo no estoy abonado a Movistar, así que necesitaría que alguien me pasara su usuario y clave para poder mirarlo (email: mitvbox.spain arroba gmail.com).

O que alguien mire por mi los encabezados usando los devtools del navegador.

¿Qué cabeceras necesitas exactamente?

Paco8 commented 7 months ago

En el chrome, abre la página de movistar. En el menú del chrome :: más herramientas :: herramientas para desarrolladores. En la ventana que se abre ve a la pestaña network. En filter pon "mpd". Reproduce eurosport 1 (o algún canal de los que no se ven). En la herramienta de desarrolladores deberá aparecer el mpd. Pulsa con el botón derecho sobre él (en la pestaña donde pone name) y selecciona copy :: copy as curl. Pega el resultado aquí.

son-link commented 7 months ago

Uso Firefox, pero vamos, quitando el User-Agent el resto será igual. Voy a ver que otros canales no me reproducen en Kodi curl 'https://eurosport1-dash-movistarplus.emisiondof6.com/manifest.mpd' -X OPTIONS -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0' -H 'Accept: */*' -H 'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br' -H 'Access-Control-Request-Method: GET' -H 'Access-Control-Request-Headers: x-tcdn-token' -H 'Referer: https://ver.movistarplus.es/' -H 'Origin: https://ver.movistarplus.es' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: cross-site' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache'

son-link commented 7 months ago

Aquí te dejo un archivo con más canales que fallan, pero no están todos. Más tarde te paso los que falten. movistar_curl.txt

Paco8 commented 7 months ago

Aún con esos encabezados las url siguen dado el error 403 forbidden. He visto que los datos del curl que has puesto usan el método options, ¿puedes mirar si hay encabezados diferentes cuando cargan con el método get?

maikeln80 commented 7 months ago

Aún con esos encabezados las url siguen dado el error 403 forbidden. He visto que los datos del curl que has puesto usan el método options, ¿puedes mirar si hay encabezados diferentes cuando cargan con el método get?

desde hace unos días varios canales necesitan un valor x-tcdn-token para que funcionen, te paso información por si puede ayudar, sería especialmente interesante poder extraer a un fichero ese valor, ya que cambia cada 24h

METHOD: GET URL https://1mcine-dash-movistarplus.emisiondof6.com/manifest.mpd HEADERS Accept: / Accept-Encoding: gzip, deflate, br Accept-Language: es,es-ES;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Connection: keep-alive Host: 1mcine-dash-movistarplus.emisiondof6.com Origin: https://ver.movistarplus.es Referer: https://ver.movistarplus.es/ sec-ch-ua: "Microsoft Edge";v="119", "Chromium";v="119", "Not?A_Brand";v="24" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Windows" Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0 x-tcdn-token:..........................

STATUS: 302 Found HEADERS Access-Control-Allow-Headers: ,X-TCDN-token,X-TCDN Access-Control-Allow-Origin: Access-Control-Expose-Headers: X-TCDN Connection: Close Content-Length: 0 Date: Mon, 20 Nov 2023 14:09:18 GMT Location: https://b46077-p199-h89-tef548c.1.cdn.telefonica.com/_46077/manifest.mpd

maikeln80 commented 7 months ago

hay que usar este encabezado, x-tcdn-token: con el valor que da

maikeln80 commented 7 months ago

hay que añadir esto para que funcione, #KODIPROP:inputstream.adaptive.stream_headers=x-tcdn-token=

la cosa esta en obtener ese valor

Paco8 commented 7 months ago

En Orange han puesto hace poco algo parecido y el dato necesario va en los encabezados de respuesta al pedir el listado de canales. Pero en Movistar no lo he visto ahí, debe estar en otro sitio.

LumitoLuma commented 7 months ago

He investigado un poco y lo obtiene a través de JavaScript. Hay una función llamada yomvi.usuario.prefs('tokenCDN') que devuelve el token x-tcdn-token. Además, hay otra llamada yomvi.usuario.refreshCDNToken() que genera un token nuevo. Finalmente, hay un parámetro yomvi.usuario.refreshCDNTokenInterval, que es 1251, que probablemente sea el tiempo en el que dicho token expire (deduzco por el nombre del parámetro, no lo sé).

La llamada a la primera función la realiza el archivo https://ver.movistarplus.es/js/yomvi/player/multidrm.js, con el código (líneas 239-242):

if (yomvi.player.multidrm.cdnSecurize()){
    request.headers['x-tcdn-token']= yomvi.usuario.prefs('tokenCDN');
    // request.headers['Authorization']='Bearer '+yomvi.usuario.prefs('tokenCDN');
}

No he mirado aún qué realiza exactamente dicha función (es decir, de dónde saca o genera dicho token), pero es un primer paso. Lo que sí puedo confirmar es que los tokens generados funcionan.

Puede interesar también a #19.

Paco8 commented 7 months ago

Gracias por la información. Mirando el código he visto que existe una url para renovar el token. Con esto creo que podré solucionar el problema.

betterligne commented 7 months ago

@LumitoLuma Hola, ¿puedes ayudarme a obtener el tcdn? ¿Debo instalar el software javascript? gracias de antemano

Paco8 commented 7 months ago

Creo que ya está solucionado el problema en la versión 0.7.15 ¿no?

maikeln80 commented 7 months ago

Creo que ya está solucionado el problema en la versión 0.7.15 ¿no?

Correcto!!!! Funciona!!!, muchas gracias.

¿podrías hacer un script que haga login en movistar y exporte el valor de x-tcdn-token a un fichero?

Bepllorens commented 7 months ago

Creo que ya está solucionado el problema en la versión 0.7.15 ¿no?

Correcto!!!! Funciona!!!, muchas gracias.

¿podrías hacer un script que haga login en movistar y exporte el valor de x-tcdn-token a un fichero?

Me uno a la petición...

Muchas gracias!!

betterligne commented 7 months ago

¿podrías hacer un script que haga login en movistar y exporte el valor de x-tcdn-token a un fichero?

Sí, esto es lo que quise decir, gracias de antemano.

Paco8 commented 7 months ago

¿Para qué queréis el script?

maikeln80 commented 7 months ago

¿Para qué queréis el script?

Como ya habías hecho este, https://github.com/Paco8/MSAuthenticationKey, por eso en mi caso pedía el del x-tcdn-token, por no estar todos los días con el http toolkit.

Muchas gracias

Paco8 commented 7 months ago

Modificar ese programa para que saque también el x-tcdn-token sería un lío, además de que ese token cambia todos los días a diferencia de la cookie.

maikeln80 commented 7 months ago

Modificar ese programa para que saque también el x-tcdn-token sería un lío, además de que ese token cambia todos los días a diferencia de la cookie.

Por eso lo de automatizarlo de alguna manera, un script que haga login y luego obtenga ese dato que exporta a un fichero. Pensaba que lo tendrías medio hecho al hacer el addon, que funciona de lujo, gracias por tu trabajo desinteresado.

elzari commented 7 months ago

Me uno a la petición.....casi lo tengo, pero me faltan datos....por favor, ayuda....Gracias.

feserdel commented 7 months ago

Por mi parte, confirmo que en la 0.7.15 funcionan todos los canales correctamente. Gracias!