PageSourceSearch

https://ver.movistarplus.es/js/yomvi/player.js?m=1788497367

js movistarplus.es collected 2026-10-01 10:25:01 UTC 19,339 bytes, 547 lines download raw bytes

1(function (window) {
2    "use strict";
3
4    yomvi.addPackage('yomvi.player', function () {
5
6        var installed = false;
7        var objPlayer;
8        var dataPlayer;
9        var loadDataPlayer;
10        var params = { subtitleID: -1 };
11        var drmSystem = [];
12        var preload = true;
13        this.data_next = {};
14
15        this.errors = 0;
16
17        function _appendVideo() {
18            if (yomvi.player.open()) {
19                $('#' + yomvi.player.getTag('video')).remove();
20            }
21            $("#" + yomvi.player.getTag('container')).append('<video id="' + yomvi.player.getTag('video') + '" autoplay></video>');
22        }
23
24        function _showPlayer() {
25
26            $('#' + yomvi.player.getTag('object')).removeClass('playend');
27
28            $('#' + yomvi.player.getTag('object')).show();
29            $('html').addClass('objetoPlayer');
30        }
31
32        function _hidePlayer() {
33            if (yomvi.player.getData().following == true) {
34                $('#' + yomvi.player.getTag('object')).addClass('playend');
35            }
36            $('#' + yomvi.player.getTag('object')).hide();
37            $('html').removeClass('objetoPlayer');
38
39        }
40
41        this.getConfiguration = function (_type) {
42            var _min = parseInt(yomvi.system.directorio.getContext('min_bitrate'))|| 400000;
43            var _max = parseInt(yomvi.system.directorio.getContext('max_bitrate')) || 5200000;
44            var _conf = {
45                "abr": {
46                    "defaultBandwidthEstimate": _min,
47                    "restrictions": {
48                        "minBandwidth": _min,
49                        "maxBandwidth": _max
50                    }
51                },
52                "streaming": {
53                    //"bufferingGoal": 120,
54                    "bufferingGoal": 12,
55                    "rebufferingGoal": 6,
56                    "jumpLargeGaps": true,
57                    "stallSkip": 1,
58                    "retryParameters": {
59                        "maxAttempts": 7,
60                        "baseDelay": 2000
61                    }
62                },
63                "manifest": {
64                    "defaultPresentationDelay": 18 // 404 con 18 seg
65                }
66            };
67            return _conf;
68        };
69
70        function _actualizarData() {
71            if (yomvi.ficha.activa() || yomvi.struct.ajax_carrusel_default || yomvi.struct.ajax_catalogo_default) {
72                setTimeout(function () {
73                    $(document).trigger('actualizarFicha');
74                }, 1000);
75            }
76        }
77
78        function _reset() {
79            yomvi.player.events.unload();
80            _actualizarData();
81        }
82
83        this.getTag = function (_tag) {
84            switch (_tag) {
85                case 'object':
86                    return 'object-player-multidrm';
87                case 'container':
88                    return 'video-player-content';
89                case 'mid_roll':
90                    return 'player_mid_roll';
91                case 'video':
92                default:
93                    return 'player-multidrm';
94            }
95        };
96
97        this.getVideo = function () {
98
99            return document.getElementById('player_mid_roll') || document.getElementById('player-multidrm');
100        };
101
102        this.getPlayer = function () {
103            return objPlayer;
104        };
105
106        this.install = function () {
107            if (installed) {
108                return true;
109            }
110            shaka.polyfill.installAll();
111            shaka.polyfill.PatchedMediaKeysApple.install();
112
113            if (shaka.Player.isBrowserSupported()) {
114                //installed = true;
115                return true;
116            }else {
117                console.log ('NOT SUPPORTED');
118                return false;
119            }
120
121        };
122
123        this.setPlayer = function () {
124            var _video = yomvi.player.getVideo();
125            if (!_video) {
126                return false;
127            }
128            objPlayer = new shaka.Player(_video);
129            window.shakaPlayer = objPlayer;
130            return objPlayer;
131        };
132
133        function _tryDRMSystem(_system, _drm) {
134            return new Promise(function (resolve) {
135                var _config = [{
136                    'initDataTypes': ['cenc'],
137                    'audioCapabilities': [{
138                        'contentType': 'audio/mp4;codecs=\"mp4a.40.2\"'
139                    }],
140                    'videoCapabilities': [{
141                        'contentType': 'video/mp4;codecs=\"avc1.42E01E\"'
142                    }]
143                }];
144                try {
145                    navigator.requestMediaKeySystemAccess(_system, _config).then(function () {
146                        resolve(_drm);
147                    }).catch(function (_err) {
148                        resolve(null);
149                    });
150                } catch (_err) {
151                    resolve(null);
152                }
153            });
154        }
155        this.streamParams = function (){
156
157            var _params = {};
158            switch (yomvi.player.getDRMSystem()) {
159                case 'widevine':
160                    _params.streamDRM = 'Widevine';
161                    _params.streamFormat = 'DASH';
162                    break;
163                case 'playready':
164                    _params.streamDRM = 'PlayReady';
165                    _params.streamFormat = 'DASH';
166                    break;
167                case 'fairplay':
168                default:
169                    _params.streamDRM = 'FairPlay';
170                    _params.streamFormat = 'HLS';
171                    break;
172            }
173            return _params;
174
175        }
176
177        this.checkStartOver = function({urlStartOver, streamFormat, streamDRM, streamProtocol}){
178
179
180            var params = { type: 'get', url:urlStartOver, bearer: true, dataType: 'json', cache: true};
181            var replace_params = {  streamFormat, streamDRM: streamDRM, streamProtocol: streamProtocol };
182
183            yomvi.system.directorio.urlService(params, replace_params).done(function(data) {
184                //Esperamos que sea data.url pero puede ser diferente
185                let urlManifest = data;
186                const url = new URL(urlManifest);
187                const urlSearchParams = url.searchParams.entries();
188                const urlObject = Object.fromEntries(urlSearchParams);
189                let currentTime = Date.now();
190                if (urlObject.end_time){
191                    let parsedEndTime = Date.parse (urlObject.end_time)
192                    if (currentTime > parsedEndTime){
193                        return(urlManifest);
194                    }
195                }
196                return (false);
197
198            }).fail(function(error) {
199                return(false);
200            });
201
202
203        }
204
205        this.setDRMSystem = function () {
206            return new Promise(function (resolve, reject) {
207                if (drmSystem.length) {
208                    return resolve(drmSystem);
209                }
210                if (window.YomviGetNavigator() == YOMVI_NAVIGATOR.SAFARI) {
211                    //var _drm = 'widevine';
212                    var _drm = 'fairplay';
213                    drmSystem.push(_drm);
214                    return resolve([_drm]);
215                }
216                if (navigator.requestMediaKeySystemAccess) {
217                    //var systems = [ { drm: 'widevine', mediakey: 'com.widevine.alpha' }, { drm: 'playready', mediakey: 'com.microsoft.playready' } ];
218                    var _systems = [{ drm: 'playready', mediakey: 'com.microsoft.playready' }, { drm: 'widevine', mediakey: 'com.widevine.alpha' }];
219                    var _promises = [];
220                    _.each(_systems, function (_system) {
221                        _promises.push(_tryDRMSystem(_system.mediakey, _system.drm));
222                    });
223                    Promise.all(_promises).then(function (_results) {
224                        var _drmSystem = _results.filter(function (_result) {
225                            return _result != null;
226                        });
227                        drmSystem = _drmSystem;
228                        resolve(_drmSystem);
229                    }).catch(function (_err) {
230                        var _err = { msg: yomvi.txt('ERROR_PLAYER_MULTIDRM') };
231                        reject(_err);
232                    });
233                } else {
234                    var _err = { msg: yomvi.txt('ERROR_PLAYER_MULTIDRM') };
235                    reject(_err);
236                }
237            });
238        };
239
240        this.getDRMSystem = function () {
241            return drmSystem[0];
242        };
243
244        this.getData = function () {
245            return dataPlayer || {};
246        };
247
248        this.getLoadData = function () {
249            return loadDataPlayer || {};
250        };
251
252        this.getParams = function () {
253            return params || {};
254        };
255
256         //this.closeAndFinalize = function () {
257            //yomvi.player.events.finalize();
258        this.closeAndFinalize = function (manualclose = false) {
259            const withBeacon = false;
260
261            yomvi.player.events.finalize(false, manualclose);
262            yomvi.player.remove();
263            _reset();
264        };
265
266        this.remove = function () {
267            let url = yomvi.util.parseURL();
268            yomvi.player.exitFullScreen();
269            _hidePlayer();
270            /*
271            if (yomvi.player.getVideo()) {
272                yomvi.player.getVideo().src = '';
273            }
274            */
275            $('.container').removeClass('reproplayer');
276            $('#' + yomvi.player.getTag('video')).remove();
277            yomvi.player.stop().then(function () {
278                yomvi.player.toolbar.remove();
279            });
280
281
282        };
283        this.bingeWatchingNext = function () {
284            _reset();
285            yomvi.player.events.finalize();
286            $('.container').removeClass('reproplayer');
287            $('#' + yomvi.player.getTag('object')).addClass('playend');
288            $('#' + yomvi.player.getTag('video')).remove();
289            yomvi.player.stop().then(function () {
290                yomvi.player.toolbar.remove();
291            });
292
293        }
294        this.toggleFullScreen = function () {
295            if (!document.fullscreenElement) {
296                document.documentElement.requestFullscreen();
297            } else {
298                if (document.exitFullscreen) {
299                    document.exitFullscreen();
300                }
301            }
302        }
303
304        this.getFullScreen = function () {
305            const elem = document.documentElement;
306            if (elem.webkitRequestFullscreen) {
307                elem.webkitRequestFullscreen();
308            } else if (elem.requestFullscreen) {
309                elem.requestFullscreen();
310            }
311        }
312
313        this.exitFullScreen = function () {
314            if (document.fullscreenElement) {
315                document.exitFullscreen();
316            } else if (document.webkitFullscreenElement) {
317                document.webkitExitFullscreen();
318            }
319        }
320
321        this.showSpinner = function (info = false) {
322            if (info){
323                document.getElementById('spinner-player').classList.add('info');
324            }
325            $('#spinner-player').show();
326        };
327
328        this.hideSpinner = function () {
329            if ( document.getElementById('spinner-player').classList.contains('info')){
330                document.getElementById('spinner-player').classList.remove('info')
331            }
332            $('#spinner-player').hide();
333        };
334
335        this.open = function () {
336            return $('#' + yomvi.player.getTag('container') + ' #' + yomvi.player.getTag('video')).length > 0;
337        };
338
339        this.getDeviceId = function () {
340            var _deviceId = this.deviceId || yomvi.usuario.prefs('did');
341            return _deviceId;
342        };
343        this.stop = function (_objPlayer) {
344            return new Promise(function (resolve) {
345                _objPlayer = _objPlayer || objPlayer;
346                if (_objPlayer) {
347                    _objPlayer.unload().then(function () {
348                        _objPlayer.destroy().then(function () {
349                            resolve();
350                        });
351                    });
352                } else {
353                    resolve();
354                }
355            });
356        };
357
358        this.play = function () {
359            if (!objPlayer) {
360                return false;
361            }
362            switch (window.YomviGetNavigator()) {
363                case YOMVI_NAVIGATOR.EDGE:
364                    yomvi.player.getVideo().play();
365                    $('#popup_player').hide();
366                    break;
367                default:
368                    yomvi.player.getVideo().play().then(function () {
369                        $('#popup_player').hide();
370                    }).catch(function (_evt) {
371
372
373
374
375                    });
376                    break;
377            }
378        };
379
380        this.pause = function () {
381            if (!yomvi.player.getVideo()) {
382                return false;
383            }
384            yomvi.player.getVideo().pause();
385        };
386
387        this.seek = function (gotoTime) {
388            //console.log('hago ir a', gotoTime);
389            yomvi.player.getVideo().currentTime = gotoTime
390        };
391
392        this.seekRange = function () {
393            if (!objPlayer) {
394                return false;
395            }
396            return objPlayer.seekRange();
397        };
398
399        this.enableSubtitles = function (_boolean) {
400            if (!objPlayer) {
401                return false;
402            }
403            _boolean = _boolean || false;
404            objPlayer.setTextTrackVisibility(_boolean);
405        };
406
407        this.selectTrack = function (_media, _new_track) {
408            if (!objPlayer) {
409                return false;
410            }
411            switch (_media) {
412                case 'audio':
413                    var _safeMargin = 2, _clearBuffer = true;
414                    objPlayer.selectVariantTrack(_new_track, _clearBuffer, _safeMargin);
415                    break;
416                case 'text':
417                    objPlayer.setTextTrackVisibility(true);
418                    objPlayer.selectTextTrack(_new_track);
419                    break;
420            }
421
422        };
423
424        this.getTracks = function (_media) {
425            if (!objPlayer) {
426                return false;
427            }
428            switch (_media) {
429                case 'audio':
430                    return objPlayer.getVariantTracks();
431                case 'text':
432                    return objPlayer.getTextTracks()
433            }
434        };
435
436        this.removeMidRoll = function () {
437            yomvi.player.getData().mid_roll = false;
438            yomvi.player.getData().publi = false;
439            var _video_id = yomvi.player.getTag('mid_roll');
440            $('#' + _video_id).remove();
441            yomvi.player.toolbar.remove('player_toolbar_mid_roll');
442
443        };
444
445        this.loadMidRoll = function (_mid_roll) {
446            return new Promise(function (resolve) {
447                yomvi.player.getData().mid_roll = _mid_roll;
448                yomvi.player.getData().publi = true;
449                yomvi.player.publi.config.load().then(function (_breaks) {
450                    _breaks = _breaks || [];
451                    if (_breaks.length > 0) {
452                        yomvi.player.pause();
453                        var _video_id = yomvi.player.getTag('mid_roll');
454
455                        $("#video-player-content").prepend('<video id="' + _video_id + '" autoplay></video>');
456                        var _midroll_video = document.getElementById('player_mid_roll');
457                        var _midroll = new shaka.Player(_midroll_video);
458                        var _break = _breaks[0];
459                        var _infopub_url = _break.contentUrl;
460                        _midroll.load(_infopub_url).then(function () {
461                            yomvi.player.events.mid_roll(yomvi.player.getData(), _break);
462                        }).catch(function () {
463                            yomvi.player.removeMidRoll();
464                            $('#' + yomvi.player.getTag()).show();
465                            yomvi.player.toolbar.initControls(yomvi.player.getData());
466                            yomvi.player.play();
467                        });
468                    } else {
469                        yomvi.player.removeMidRoll();
470                    }
471                });
472            });
473        };
474
475        function _preload() {
476            return new Promise(function (resolve) {
477                switch (window.YomviGetNavigator()) {
478                    case YOMVI_NAVIGATOR.SAFARI:
479                        if (preload) {
480                            resolve();
481                        } else {
482                            var _video_id = 'preload_multidrm';
483                            $("body").append('<video style="display:none;" id="' + _video_id + '" autoplay muted></video>');
484                            var _preload_video = document.getElementById(_video_id);
485                            preload = new shaka.Player(_preload_video);
486                            preload.load('/preload.mp4').then(function () {
487                                $('#' + _video_id).remove();
488                                resolve();
489                            }).catch(function (_err) {
490                                $('#' + _video_id).remove();
491                                resolve();
492                            });
493                        }
494                        break;
495                    default:
496                        resolve();
497                        break;
498                }
499            });
500        }
501
502        function _loadPlayer() {
503            return new Promise(function (resolve) {
504                if (yomvi.player.data) {
505                    resolve();
506                } else {
507                    yomvi.loadPackage('player').done(function () {
508                        resolve();
509                    });
510                }
511            });
512        }
513
514        this.preloading = function (_preloading) {
515            if (_preloading) {
516                preload = false;
517            }
518        };
519
520        this.load = function (_data) {
521            yomvi.player.analytics.fireInit();
522            if (yomvi.player.install()) {
523                loadDataPlayer = _data;
524                _preload().then(function () {
525                    _loadPlayer().then(function () {
526                        yomvi.player.error.setCode();
527                        //yomvi.player.analytics.initialize();
528                        yomvi.player.control.check(_data).then(function (_dataPlayer) {
529                            dataPlayer = _dataPlayer;
530                            _appendVideo();
531                            yomvi.player.multidrm.load(_dataPlayer);
532                            _showPlayer();
533                            yomvi.player.showSpinner();
534                        }).catch(function (_err) {
535                            yomvi.player.analytics.fatalError();
536                        });
537                    });
538                });
539            } else {
540                var _err = { cabecera: 'Aviso', msg: yomvi.txt('ERROR_PLAYER_MULTIDRM') };
541                yomvi.struct.mostrarAviso(_err);
542            }
543        };
544
545    });
546
547}(window));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.