// ==UserScript== // @name Fake-Youtube Helper [Stopped update] // @name:zh-CN 假油管的助手【已停止更新】 // @namespace https://greasyfork.org/users/159546 // @version 1.3 // @description Fix so much problem. Caution: This script is not for really Youtube. // @description:zh-CN 修复了油管的很多问题。注意:这个脚本不是给真的油管使用。 // @author LEORChn // @match http*://youtu.be:8700/* // @run-at document-start // @grant none // @downloadURL none // ==/UserScript== var vip,fun; (function(){ recheck(); })(); function recheck(){ doEvents(); var a=ft('a'); for(var i=0,len=a.length;i15?'':'0')+parseInt(h[i],10).toString(16); for(var a=ft('a'),i=0,len=a.length;i0) a[i].href=a[i].href.replace(vip,'')+'&pid='+hexip; } function fix_img(){ for(var a=ft('img'),i=0,len=a.length;iFailed'; a.className=a.className.replace('off-screen-target',''); for(var i=0,b=ft('button'),len=b.length;i0){ vip=a[i].href.substring(0,fstr); return; } } gbakip(); } function gbakip(){ if(location.href.indexOf('pid=')==0)return; var ip=location.href.split('pid=')[1].split('&')[0].match(/[0-9a-fA-F]{2}/g); for(var i=0,len=4;i<4;i++) ip[i]=parseInt(ip[i],16); vip='http://'+ip.join('.')+':9999'; } function gfun(url){return url.split('?')[0].split('/')[3];} function gvid(){return location.href.split('v=')[1].split('&')[0];} function fv(id){return document.getElementById(id);} function ft(tag){return document.getElementsByTagName(tag);} function fc(cname){return document.getElementsByClassName(cname);} function ct(tag,to){to=document.createElement(tag);return to;} function tip(s){console.log(s);} function doEvents(){console.log('doEvents');} function absTop(e){var l=0;while(e){l+=e.offsetTop;e=e.parentElement;}return l;} function absLeft(e){var l=0;while(e){l+=e.offsetLeft;e=e.parentElement;}return l;} //----- ----- var vp,ctl; function addfeature(){ switch(fun){ case'watch': initPlayerControl(); } funny(); } function initPlayerControl(){ fv('placeholder-player').outerHTML+='
'; ctl=fv('vpctl'); vpctl.onselectstart=function(){return false;}; vpctl.style.cursor='default'; vshareEntry(); loopEntry(); downloadEntry(); fullPageEntry(); playSpeedEntry(); } function vshareEntry(){ var n=ct('a'); n.onclick=function(){prompt('Press Ctrl+C','http://youtu.be/'+gvid());}; n.innerText='share, '; ctl.appendChild(n); n=ct('a'); n.onclick=function(){prompt('Press Ctrl+C','http://youtu.be/'+gvid()+'?t='+parseInt(vp.currentTime)+'s');}; n.innerText='with timestamp'; ctl.appendChild(n); } function loopEntry(){ var n=ct('text'); n.innerHTML='loop '; ctl.appendChild(n); fv('looper').onchange=loopStatOC; fv('loopertext').onclick=loopStat; } function loopStat(){ var e=fv('looper'); e.checked=!e.checked; loopStatOC(); } function loopStatOC(){ vp.loop=fv('looper').checked; } function downloadEntry(){ var n=ct('text'); n.innerHTML='Download'; ctl.appendChild(n); download_seturl(); n=fv('vdltype'); n.onclick=download_seturl; } function download_seturl(){ var dl=vip+'/download?v='+gvid()+'&type=',vdlgo=fv('vdlgo'); switch(fv('vdltype').selectedIndex){ case 0:vdlgo.href=dl+'video';break; case 1:vdlgo.href=dl+'audio';break; case 2:vdlgo.href=fv('leorvp').src; } } function playSpeedEntry(){ var n=ct('text'); n.innerHTML='Playback speed'; ctl.appendChild(n); n.style.cssText='float:right'; fv('vpps').onclick=function(e){vp.playbackRate=parseFloat(e.target.options[e.target.selectedIndex].innerText);}; } function fullPageEntry(){ var n=ct('a'); n.innerText='Fullpage'; n.style.cssText='float:right;margin-left:5px'; ctl.appendChild(n); n.onclick=function(){ var pb=fv('playerbox'),o=fix_fullpage(),l=absLeft(o),t=absTop(o)-100; pb.style.cssText=pb.style.cssText?'':'position:absolute;left:'+l+'px;top:'+t+'px;z-index:5222'; pb.className=pb.style.cssText?'player-width player-height':'fullpagescreen'; }; vp.ondblclick=n.onclick; n=ct('style'); n.type='text/css'; n.innerHTML='.fullpagescreen{background-color:#404040;position:absolute;width:100%;height:100%;top:0px;left:0px;z-index:5222}'; //alert(n.outerHTML); ft('body')[0].appendChild(n); } function funny(){ //for(var i=0,b=fc('yt-uix-button-content'),len=b.length;i