您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
[FTVO GONE!][Works in FF and Chrome!] converts links for free-tv-video-online.info (projectfree.tv) to bypass advert page, plus multiple other tools
// ==UserScript== // @name [FTVO GONE!]Project Free Tv - link altering + tools for free-tv-video-online.info // @namespace http://www.free-tv-video-online.info/ // @version [FTVO GONE!] // @description [FTVO GONE!][Works in FF and Chrome!] converts links for free-tv-video-online.info (projectfree.tv) to bypass advert page, plus multiple other tools // @author William H // @match *://www.free-tv-video-online.info/internet/* // @include *://www.free-tv-video-online.info/video/* // @grant none // @require http://code.jquery.com/jquery-latest.js // ==/UserScript== var preferredHosts = ["vidbull", "vodlocker", "gorillavid"]; var preferredOn = true; //uses the above hosts to set preferred host(s) to keep, and delete all others. var colorsOn = true; //sets coloring of hosts, colors are through colorHosts var vidAid = true;//enables tools on player page to go to next episode, etc. var collectHosts = true;//enables collecting of hosts.. vidAir and this should be true to work var collapseToggleOn = true; //sets episode collapsing var colorHosts = { "vidbull":"87CEFA", "vodlocker" : "F0FFF0", "gorillavid":"FF69B4", "vidto":"FFFFFF", "allmyvideos":"FFFFFF", "vidspot":"FFFFFF", "nosvideo":"FFFFFF", "nowvideo":"FFFFFF", "videoweed":"FFFFFF", "novamov":"FFFFFF", "movshare":"FFFFFF", "divxstage":"FFFFFF", "mooshare":"FFFFFF", "180upload":"FFFFFF", "vidbux":"FFFFFF", "vidxden":"FFFFFF", "video":"FF0000", "modovideo":"FFFFFF", "movreel":"FFFFFF" }; if (window.location.href.search("/video/") > -1 && vidAid){ window.addEventListener("load", videoAid, false); $("body").attr('style', 'padding:0px; margin:0px;'); if(document.readyState == "complete"){ videoAid(); } }else{ window.addEventListener("load", convertMyLinks($("[onclick^=visited]")), false); if(document.readyState == "complete"){ convertMyLinks($("[onclick^=visited]")); } } function convertMyLinks(elemArray){ $("body").attr('style', 'padding:0px; margin:0px;'); if(window.location.href.split('/internet/')[1]) { seriesTitle = window.location.href.split('/internet/')[1].split('/')[0].replace("%28", "").replace("%29", ""); } if(window.location.href.search("/season") > -1) { seriesSeason = "season" + window.location.href.split("/season")[1].split(".")[0]; episodeArray = {}; episodeArray[seriesSeason] = []; } if($('.info') != ''){ for(p=0; p < $(".info").length; p++){ $($(".info")[p]).attr("title", $($(".none > td")[p]).text().trim()); } $('.none').remove(); } for(i=0; i < elemArray.length; i++){ currentNode = $(elemArray[i]); if($($(elemArray[i])).attr("onclick")){ currentNHost = $(elemArray[i]).text().trim().replace(/ /g, "").split("\n")[3].split(" ")[1].split(".")[0]; seasonEpisode = $(elemArray[i]).attr('href').split("&ttl=")[1].split("+Episode+")[1]; seasonEpisode = seasonEpisode.toLowerCase(); $(elemArray[i]).attr('href', ($(elemArray[i]).attr('href').replace("/interstitial2.html?lnk=", "").split("&ttl=")[0].replace(/%2F/g, "/").replace(/%2F/g, "/").replace(/%3F/g, "?").replace(/%3D/g, "=")) + "&rnd=" + Math.random()).removeAttr('target'); if( $(elemArray[i]).attr('href').search("http%3A") > -1 ){ $(elemArray[i]).attr('href', ("http://" + $(elemArray[i]).attr('href').split("http%3A")[1])); } if(preferredOn || collectHosts){ if( $.inArray(currentNHost, preferredHosts) == -1 ){ $(elemArray[i]).parent().parent().remove(); }else if(collectHosts && preferredOn && seriesSeason){ if($.inArray(currentNHost, preferredHosts) > -1){ preferredHost = currentNHost; } if(!episodeArray[seriesSeason][seasonEpisode-1]){ episodeArray[seriesSeason][seasonEpisode-1] = {}; } if(episodeArray[seriesSeason][seasonEpisode-1][preferredHost]){ episodeArray[seriesSeason][seasonEpisode-1][preferredHost].push($(elemArray[i]).attr('href')); }else{ episodeArray[seriesSeason][seasonEpisode-1][preferredHost] = []; episodeArray[seriesSeason][seasonEpisode-1][preferredHost].push($(elemArray[i]).attr('href')); } } } if(colorsOn && !$(elemArray[i]).hasClass("down")){ if(colorHosts[(currentNHost)]){ $(elemArray[i]).parent().parent().css({'background-color': "#" + (colorHosts[(currentNHost)])}); } } } } if(collectHosts){ if(!seriesLoad(seriesTitle,false)){ seriesSave(seriesTitle, JSON.stringify(episodeArray)); }else{ tInfo = {}; tInfo = JSON.parse(seriesLoad(seriesTitle,true)); tInfo[seriesSeason]= episodeArray[seriesSeason]; seriesSave(seriesTitle, JSON.stringify(tInfo)); } } if(collapseToggleOn){ $("head").append('<style type="text/css">.episodeHeader .episodeToggle:after{ content:"[+]"; display:inline-block; } .episodeHeader.expanded .episodeToggle:after{ content:"[-]"; }</style>'); $('.3 > .mnllinklist > .right').append('<a class="episodeToggle"></a>'); $($('.3')[0]).parent().parent().attr('class', 'episodeTable'); if($('.none')) { $('.none').remove(); } $('.3').attr('class', 'episodeHeader expanded').attr('id', 'episode'); $('.episodeHeader').click(function(){ $(this).toggleClass('expanded').nextUntil('tr.episodeHeader').slideToggle(10); }); } } function videoAid(){ pftvTools = '<div class="FTVOPlug" style="z-index:9990!important;position: absolute;right: 0px;height: 460px;width: ' + $("[src*=season-side]").attr("width") + 'px;background-color:#CCCCCC;"><div style="position:top;z-index:9991;height:35px;width:100%" class="options"></div><div class="relHosts" border="1" style="position:top;z-index:9991;height:400px;width:100%;overflow:scroll;"></div><div class="epiNav" style="position:top;z-index:9991;height:25;width:100%;display:inline-block;"></div></div>'; $($($('table')[1]).children('tbody').children('tr').children('td')[2]).prepend(pftvTools); sC = []; sC[0] = $('.mnlhighlightheading > div > h1').text().toLowerCase(); sC[1] = sC[0].split(' episode '); sC[2] = sC[1][0].split(' season '); sC[3] = sC[2][0]; sC[1] = sC[1][1]-1; sC[2] = sC[2][1]; sC[3] = sC[3].replace("(", "").replace(")", "").replace(" ", "_").replace(" ", "_"); /************************* # sC[0] = whole title # sC[1] = episode # sC[2] = season # sC[3] = stored title *************************/ if(seriesLoad(sC[3],false)){ myEpA = JSON.parse(seriesLoad(sC[3],true)); if(myEpA["season_"+sC[2]]){ for(t=0;t < preferredHosts.length; t++) { for(x=0; x < myEpA["season_"+ sC[2]][sC[1]][preferredHosts[t]].length; x++){ $('.relHosts').append('<div role="link" onclick="javascript:window.location.href = $(this).attr(\'link\'); " link="' + myEpA["season_"+ sC[2]][sC[1]][preferredHosts[t]][x] +'" style="height:35px;width:100%;z-index:9992;border-bottom:1px solid #000000;text-align:center;background-color:' + (colorHosts && colorHosts[preferredHosts[t]]) + ';' + (myEpA["season_"+ sC[2]][sC[1]][preferredHosts[t]][x].search(window.location.search.split("&")[0].split("?id=")[1]) != -1 && "color:#fcfcfc;") +'"> '+ preferredHosts[t] + ' [' + (x+1) + '] </div>') } } if(sC[1] != 0 && sC[1] != myEpA["season_"+ sC[2]].length){ $('.epiNav').append('<button style="float:left;" onclick="javascript: window.location.href = $(this).attr(\'link\'); " link="' + myEpA["season_"+ sC[2]][(sC[1]-1)][preferredHosts[0]][0] + '">Episode ' + sC[1] + '</button><button style="float:right;" onclick="javascript: window.location.href = $(this).attr(\'link\'); " link="' + myEpA["season_"+ sC[2]][(sC[1]+1)][preferredHosts[0]][0] + '">Episode ' + (sC[1]+2) + '</button>'); }else if(sC[1] == 0){ $('.epiNav').append('<button style="float:right;" onclick="javascript: window.location.href = $(this).attr(\'link\'); " link="' + myEpA["season_"+ sC[2]][(sC[1]+1)][preferredHosts[0]][0] + '">Episode ' + (sC[1]+2) + '</button>'); } } } } function seriesSave(sN, eHV) { localStorage.setItem(sN, eHV); } function seriesLoad(seriesName, infoload) { if(localStorage.getItem(seriesName)){ if(infoload){ return localStorage.getItem(seriesName) }else{ return true; } }else{ return false; } }