Video.mediaset.it native video player and direct links

This script allows you to watch and download videos on Video Mediaset.

目前為 2018-06-23 提交的版本,檢視 最新版本

// ==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/programma/*
// @include     http://www.video.mediaset.it/player/*
// @include     https://*.mediasetplay.mediaset.it/*
// @include     http://www.mediaset.it/*
// @include     http://www.tgcom24.mediaset.it/video/
// @version     6.4.2
// @require     http://code.jquery.com/jquery-latest.min.js
// @grant       GM_xmlhttpRequest
// @grant       GM.xmlHttpRequest
// @connect     mediaset.it
// @connect     video.mediaset.it
// @connect     cdnselector.xuniplay.fdnames.com
// @connect     video.lazza.dk
// @license     GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// ==/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 is_abroad = document.cookie.indexOf("countryCode=") > 0 && document.cookie.indexOf("countryCode=IT") < 0;
var loc = window.location;
var isIframe = (loc.href.indexOf("player/") > 0) && (loc.href.indexOf('hidesocial') > 0);
var id = unsafeWindow.videoMetadataId || 0;

var silverlightSupported = function() {
	var unavailable = navigator.platform.indexOf('Win') < 0 && navigator.platform.indexOf('Mac') < 0;
	unavailable = unavailable || navigator.userAgent.indexOf('PPC') > 0;
	return !unavailable;
};

var boxStyle = function(selector, color, textcolor) {
	$(selector).css({
		'padding': '.5em',
		'margin': '1em 4em',
		'text-align': 'center',
		'background-color': color,
		'color': textcolor
	});
	$(selector + ' a').css('color', textcolor);
};

var writeLive = function(stream, highquality) {
	$('<div id="stream-url">').insertAfter('#video-player');
	$('#stream-url').append('<p>Flusso della diretta <strong>da aprire con VLC o <code>ffplay</code>:</strong></p>')
		.append('<pre><code>' + stream + '</code></pre>')
		.append('<p>Flusso a <strong>qualità più alta:</strong></p>')
		.append('<pre><code>' + highquality + '</code></pre>');
	boxStyle('#stream-url', 'rgba(255,255,255,0.5)', 'black');
	$('#stream-url p').css('font-size', '15px');

	// kill login timeout
	unsafeWindow.userNotLogged = function() { return; };
	setTimeout(function() {
        $('.countdown').remove();
    }, 1000);
};

var handleLive = function(playlistUri) {
	GM_xmlhttpRequest({
		method: 'GET',
		url: playlistUri,
		headers: {
			'Accept': 'application/atom+xml,application/xml,text/xml'
		},
		onload: function(responseDetails) {
			var r = responseDetails.responseText;
			var doc = $.parseXML(r);
			var $xml = $( doc );
			var videoID = $xml.find('videoUrl').text();
			GM_xmlhttpRequest({
				method: 'GET',
				url: 'http://cdnselector.xuniplay.fdnames.com/GetCDN.aspx?type=livehls&streamid=' + videoID,
				headers: {
					'Accept': 'application/atom+xml,application/xml,text/xml'
				},
				onload: function(responseDetails) {
					var r = responseDetails.responseText;
					var doc = $.parseXML(r);
					var $xml = $( doc );
					var src = $xml.find('video').attr('src');
					var highquality = src.replace('index.m3u8', 'Stream(04)/index.m3u8');
					writeLive(src, highquality);
				}
			});
		}
	});
};

var displayURLs = function(responseDetails) {
    var r = responseDetails.responseText;
    var doc = $.parseXML(r);
    var $xml = $( doc );
    var videos = $xml.find("video");
    var vlinks = [];

    var appended = {};
    // parse video URLs
    videos.each(function (i) {
        var url = $( videos.get(i) ).attr("src");
        var type = url.slice(-3);
        var name = "";
        switch(type) {
            case "est": name = "Smooth streaming"; break;
            case "3u8":
            case "pl)": name = "M3U8"; break;
            case "mpd": name = "skip"; break;
            case "flv": name = "Video FLV"; break;
            case "f4v": name = "Video F4V"; break;
            case "mp4": name = "Video MP4"; break;
            case "wmv": name = "Video WMV"; break;
        }
        var ending = url.slice(-20);
        if (name != "skip" && !appended[ending]) {
            vlinks.push( { na: name, url: url } );
            appended[ending] = true;
        }
    });

    // display video URLs
    var num = vlinks.length;

    if(isIframe) {
        $('<div id="video-links">').appendTo('body');
    }
    else {
        $('#box-apertura').css('padding-top', 0).after('<div id="video-links">');
    }
    for(var i = 0; i < num; i++) {
        var o = vlinks[i];
        var s = '<a href="'+o.url+'">'+o.na+'</a>';
        $(s).appendTo('#video-links');
        if(i != num-1) {
            $('<span>&nbsp;|&nbsp;</span>').appendTo('#video-links');
        }
    }
    boxStyle('#video-links', 'rgba(0,0,0,0.5)', 'white');
    if (!isIframe) {
        $("#video-links").after("<div id='video-links-actions'></div>");
        $("#video-links-actions")
            .append('<center style="opacity: 75%; font-size: 75%">' +
                    '<iframe allowtransparency="true" style="width: 94px; height: 20px; position: relative; vertical-align: middle; display: inline-block;" src="https://www.facebook.com/v2.12/plugins/like.php?href=https%3A%2F%2Ffacebook.com%2FAndreaLazzarottoSoftware&layout=button_count&sdk=joey&share=false&show_faces=false" frameborder="0"></iframe>' +
                    '&nbsp;&nbsp;—&nbsp;&nbsp;<a href="https://lazza.me/RecensioneScript">Recensisci lo script</a>' +
                    '&nbsp;&nbsp;—&nbsp;&nbsp;<a href="https://lazza.me/DonazioneScript">Fai una donazione</a>' +
                    '</center>')
            .find('a').css('text-decoration', 'underline');
        boxStyle('#video-links-actions', 'rgba(0,0,0,0.35)', 'white');
    }

    if(isIframe) {
        $('#video-links').css({
            'position': 'absolute',
            'bottom': '1.5em',
            'left': '5%',
            'right': '5%',
            'font-size': '.9em',
            'z-index': '9999'
        })
        .append("<span id='close'>&times;</span>");
        $("#close").css({
            'font-weight': 'bold',
            'position': 'absolute',
            'right': '1em',
            'cursor': 'pointer'
        }).click(function() {
            $("#video-links").fadeOut();
        });
        boxStyle('#video-links', 'rgba(255,255,255,0.5)', 'black');
    }

    $("#spinner").remove();
};

var get_urls = function() {
    var embeds = $('iframe[data-src*=guid]');
    console.log(embeds);
    var guid = id;
    if (embeds.length) {
        guid = embeds.data('src').split('guid=')[1].split('&')[0];
    }
    if (loc.href.indexOf('id=') > 0) {
        guid = loc.href.split('id=')[1].split('&')[0];
    }
    if (loc.href.indexOf('programGuid=') > 0) {
        guid = loc.href.split('programGuid=')[1].split('&')[0];
    }
    if (!!unsafeWindow.metainfo) {
        guid = unsafeWindow.metainfo.guId || unsafeWindow.metainfo.id || id;
    }

	fetch({
		method: 'GET',
		url: base_selector + guid,
		headers: {
			'Accept': 'application/atom+xml,application/xml,text/xml'
        }
    }).then(displayURLs);
}

var fix_videoplayer = function() {
	setTimeout(function() {
		if($('#videoPlayer').length) {
			$('#videoPlayer').remove();
		}
		else {
			setTimeout(arguments.callee, 400);
		}
	}, 400);
};

var wait_metainfo = function() {
	setTimeout(function() {
		if((!!unsafeWindow.metainfo) || $('iframe[data-src*=guid]').length || loc.href.indexOf('programGuid=') > 0 || loc.href.indexOf('id=') > 0) {
			get_urls();
		}
		else {
			setTimeout(arguments.callee, 400);
		}
	}, 400);
}

var initialize = function(id) {
	$('#myVideoContainer').remove();
	$('.video-player')
		.prepend('<div id="myVideoContainer" class="pf-container"></div>')
		.prepend(
			'<script type="text/javascript">' +
			'var initializer;' +
			'var id = "' + id + '"; initializer = ' +
			'new PlayerFramework.Initializer({ "containerElement":' +
			'document.getElementById("myVideoContainer"), "id": id });' +
			'</script>'
		);
	fix_videoplayer();
	console.debug('Initialized.');
};

$(document).ready(function(){
	// handle live stream
	var playlistUri = (unsafeWindow.playlistUri || null);
	if (playlistUri !== null) {
		return handleLive('http://www.mediaset.it' + playlistUri);
    }

	// check if it contains a video
	if (unsafeWindow.CDN_SELECTOR_URL === null) {
        return;
    }

	if (is_abroad || (!silverlightSupported())) {
		unsafeWindow.CDN_SELECTOR_URL = base_selector;
		unsafeWindow.CDN_SELECTOR_SECURE_URL = base_selector;
	}

    $('.contenitoreMed_Italia').remove();

	// kill ads
	unsafeWindow.adsEnabled = false;

	if (!id) {
		if(isIframe) {
            id = loc.href.split("id=")[1].split("&")[0];
        }
		else {
			var chunks = loc.pathname.replace(/[\._]/g, "/").split("/");
			id = parseInt(chunks[chunks.length - 2]);
		}
	}

	// kill registration request
	if (!!unsafeWindow.trafficlight) {
		initialize(id);
    }

    wait_metainfo();
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址