Opens VLC from streaming sites
当前为
// ==UserScript==
// @name Stream to VLC
// @namespace http://tampermonkey.net/
// @version 2.4
// @description Opens VLC from streaming sites
// @author mattiadr, giuseppe-dandrea
// @match http*://openload.co/*
// @match http*://openloads.co/*
// @match http*://oload.download/*
// @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*
// @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['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() {
url = $('video > source')[0].src;
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;
}
}
})();