Stream to VLC

Opens VLC from streaming sites

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name         Stream to VLC
// @namespace    http://tampermonkey.net/
// @version      2.7
// @description  Opens VLC from streaming sites
// @author       mattiadr, giuseppe-dandrea
// @match        http*://openload.co/*
// @match        http*://openloads.co/*
// @match        http*://oload.download/*
// @match        http*://oload.fun/*
// @match        http*://turbovid.me/*
// @match        http*://www.flashx.to/*
// @match        http*://www.flashx.tv/*
// @match        http*://www.flashx.sx/*
// @match        http*://www.rapidvideo.com/*
// @match        http*://wstream.video/*
// @match        www.video.mediaset.it/*
// @match        http*://speedvideo.net/*
// @match        http*://*mp4upload.com/embed*
// @match        http*://didattica.polito.it/portal/pls/portal/sviluppo.videolezioni.vis*
// @match        http*://didattica.polito.it/portal/pls/portal/sviluppo.pagina_corso.main?t=3&p_sottopagina=VC*
// @grant        window.close
// @grant        GM_openInTab
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==

(function() {

/* global vars */
/*******************************************************************************************************************************************************************/
let url = null;
let suppress_close = false;

/* helper functions */
/*******************************************************************************************************************************************************************/
function play_url(url) {
	if (url !== null) {
		window.location.href = 'vlcs:' + url;
		if (GM_getValue("VLC_first_time", true)) {
			alert("Please always remember choice or you will need to edit source code (see Readme for more info)");
			GM_setValue("VLC_first_time", false);
		} else {
			new Promise((resolve) => setTimeout(resolve, 1000)).then(() => {
				//Comment the next line to be able  authorize xdg-open
				if (!suppress_close) window.close();
			});
		}
	}
}

function wait_until_video_click() {
	new Promise((resolve) => setTimeout(resolve, 1000)).then(() => {
		if ($('video')[0].src.indexOf('http') != -1) {
			url = $('video')[0].src;
			play_url(url);
		} else {
			wait_until_video_click();
		}
	});
}

function wait_until_wstream_click() {
	new Promise((resolve) => setTimeout(resolve, 1000)).then(() => {
		var video = $('video');
		url = find_valid_url(video);
		if (url) play_url(url)
		else wait_until_wstream_click();
	});
}

function wait_until_mediaset_ready() {
	new Promise((resolve) => setTimeout(resolve, 1000)).then(() => {
		if ($('video > source')[0].src.indexOf('http') != -1) {
			url = $('video > source')[0].src;
			play_url(url);
		} else {
			wait_until_mediaset_ready();
		}
	});
}

function find_valid_url(video_tag_list) {
	for (var i = 0; i < video_tag_list.length; i++) {
		if (video_tag_list[i].src && video_tag_list[i].src.indexOf('http') != -1 ) {
			return video_tag_list[i].src;
		}
	}
	return false;
}
/* pages functions */
/*******************************************************************************************************************************************************************/
let page = {};

page['openload.co'] = function() {
	$('#videooverlay').trigger('click');
	url = $('#olvideo_html5_api')[0].src;
}

page['openloads.co'] = page['openload.co'];
page['oload.download'] = page['openload.co'];
page['oload.fun'] = page['openload.co'];

page['turbovid.me'] = function() {
	$('html').removeClass(" js ");
	if ($('#video-content').length === 0) {
		//$('#container > h2').append("<h1 style=\"color:red;\">WAIT AND CLICK ON BUTTON</h1>");
		$('#container > h2').append("<h1 style=\"color:red;\">WAIT, THE BUTTON WILL BE PRESSED AUTOMATICALLY</h1>");
		new Promise((resolve) => setTimeout(resolve, 9000)).then(() => {
		   $('#btn_download').trigger('click');
		});
	} else {
		//$('#content > h2').append("<h1 style=\"color:red;\">CLICK ON VIDEO TO START VLC</h1>");
		wait_until_video_click();
	}
}

page['flashx.to'] = function() {
	if ($('video').size() === 0) {
		$('#main > center > h2').append("<h1 style=\"color:red;\">WAIT, THE BUTTON WILL BE PRESSED AUTOMATICALLY</h1>");
		new Promise((resolve) => setTimeout(resolve, 6000)).then(() => {
			$('#btn_download').trigger('click');
		});
	} else {
		new Promise((resolve) => setTimeout(resolve, 2000)).then(() => {
			url = $('video')[0].src;
			play_url(url);
		});
	}
}

page['flashx.tv'] = page['flashx.to'];

page['flashx.sx'] = function() {
	page['flashx.to']();

	$('body').append("<h1 id=\"info\" style=\"color:red;padding:20px\">CLICK ON VIDEO (until the ads end) TO START VLC.</h1>");
	$("#info").append("<h1 style=\"color:lime;padding:120px;font-size:15px;\">Remember to close the tab if the video is in an iframe, because the script cannot close tabs from iframes and probably there is a MINER in the site</h1>");
	$('body > center > div > div:nth-child(2) > div.BJPPopAdsOverlay').remove();
	wait_until_video_click();
}

page['rapidvideo.com'] = function() {
	url = $('video')[0].src;
}

page['wstream.video'] = function() {
	//$('#video-content > table > tbody > tr > td:nth-child(1) > h3').append("<h1 style=\"color:red;\">CLICK ON VIDEO TO START VLC</h1>");
	wait_until_wstream_click();
}

page['video.mediaset.it'] = function() {
	new Promise((resolve) => setTimeout(resolve, 3000)).then(() => {
		wait_until_mediaset_ready();
	});
}

page['speedvideo.net'] = function() {
	wait_until_video_click();
}

page['mp4upload.com'] = function() {
	new Promise((resolve) => setTimeout(resolve, 1000)).then(() => {
		url = $('video')[0].src;
		play_url(url);
	});
}

page['didattica.polito.it'] = function() {
	let vlcButton = $('<button class="btn btn-default btn-sm">PLAY ON VLC</button>');
	vlcButton.click(function() {
		let url_ = $('video > source')[0].src;
		play_url(url_);
	});
	$('#btnTag').after(vlcButton);
	$('#btnTag').after('\n&nbsp;&nbsp;\n');
	$('#portlet_corso_container > div > div > div.container-fluid > div > div.col-md-8 > div > div').append(vlcButton);
	suppress_close = true;
}

/* main */
/*******************************************************************************************************************************************************************/
for (let key in page) {
	// check if the key is inside page and not inherited from parent
	if (page.hasOwnProperty(key) && window.location.href.indexOf(key) != -1) {
		page[key]();
		play_url(url);
		break;
	}
}

})();