// ==UserScript== // @name Video.mediaset.it native video player and direct links // @namespace http://andrealazzarotto.com // @description This script allows you to watch and download videos on Video Mediaset. // @include http://www.video.mediaset.it/video/* // @include http://www.video.mediaset.it/player/* // @include https://*.mediasetplay.mediaset.it/* // @include http://www.mediaset.it/* // @version 6.6.3 // @require http://code.jquery.com/jquery-latest.min.js // @require https://unpkg.com/@ungap/from-entries@0.1.2/min.js // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @connect mediaset.it // @connect video.mediaset.it // @connect cdnselector.xuniplay.fdnames.com // @connect video.lazza.dk // @connect execute-api.eu-west-1.amazonaws.com // @connect theplatform.eu // @connect akamaized.net // @connect mediaset.net // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html // @downloadURL none // ==/UserScript== /* Greasemonkey 4 wrapper */ if (typeof GM !== "undefined" && !!GM.xmlHttpRequest) { GM_xmlhttpRequest = GM.xmlHttpRequest; } function fetch(params) { return new Promise(function(resolve, reject) { params.onload = resolve; params.onerror = reject; GM_xmlhttpRequest(params); }); } var base_selector = "https://video.lazza.dk/mediaset?id="; var loc = unsafeWindow.location; var isIframe = loc.href.indexOf("player/") > 0; var isPlay = loc.href.indexOf("mediasetplay.mediaset.it/video/") > 0; function boxStyle(selector, color, textcolor) { $(selector).css({ 'padding': '.5em', 'margin': '1em 4em', 'text-align': 'center', 'background-color': color, 'color': textcolor }); $(selector + ' a').css('color', textcolor); $(selector + ' pre').css({ 'white-space': 'pre-wrap', 'word-break': 'break-all', }); $(selector + ' *').css('font-size', '15px'); } function writeLive(stream) { $('#stream-url').remove(); $('
').insertAfter($('#playerContainer').parent()); $('#stream-url').append('

Flusso della diretta da aprire con VLC o ffplay:

') .append('
' + stream + '
'); boxStyle('#stream-url', 'rgba(255,255,255,0.5)', 'black'); // kill login timeout unsafeWindow.userNotLogged = function() { return; }; setTimeout(function() { $('.countdown').remove(); }, 1000); } function handleLive(pageURI) { var baseURL = "https://api-ott-prod-fe.mediaset.net/PROD/play/alive/nownext/v1.0?channelId="; if (pageURI.indexOf('/diretta/') < 0) { return; } fetch({ method: 'GET', url: baseURL + pageURI.split('/diretta/')[1].split('_c')[1], headers: { 'Accept': 'application/json' } }).then(function(responseDetails) { var r = responseDetails.responseText; var data = $.parseJSON(r); var instruction = data.response.tuningInstruction; for (var i = 0; i < 5; i++) { var row = instruction['urn:theplatform:tv:location:any'][i]; var public = row.publicUrls[0]; var streaming = row.streamingUrl; if (row.format.indexOf('x-mpegURL') > 0) { return fetch({ method: 'GET', url: public, headers: { 'Accept': 'application/atom+xml,application/xml,text/xml' } }); } } }).then(function(responseDetails) { var src = responseDetails.finalUrl; writeLive(src); }); } function getInformation(vlink) { return fetch({ method: 'HEAD', url: vlink.url }).then((response) => { let headers = fromEntries(response.responseHeaders.split("\n").map(element => element.trim().toLowerCase().split(":"))); let size = +headers['content-length']; size = Math.round(size / 1024 / 1024); let result = Object.assign({}, vlink); result.size = size; return result; }); } function displayURLs(responseDetails) { var container = $('#playerContainer'); if (!isIframe && !container.length) { return setTimeout(function() { displayURLs(responseDetails) }, 1000); } if (isIframe) { $('