Google Translate Video Links

By Hans Schmucker Last update Oct 2, 2005 — Installed 5,615 times. Daily Installs: 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 0, 1, 1, 1, 0, 2, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 0, 1, 3, 0, 1
// ==UserScript==
// @name          Google Translate Video Links
// @namespace     Hans Schmucker (hansschmucker@gmail.com)
// @description	  Changes Links to Google Videos directly to the Flash Player Swf
// @include       http://video.google.*/*
// ==/UserScript==

function IsLinkPlayButton(linktobecheckednum){
	var linktobechecked=document.links[linktobecheckednum].href;
	var clickonlinktobechecked=document.links[linktobecheckednum].getAttribute("onclick");
		if( linktobechecked.match( /void/ ) && clickonlinktobechecked.match( /switchflash/ )  ){
			return 1;
		}else{
			return 0;
		}

}

function GeneratePlayerUrl(linktobecheckednum){
				var SourceJS=document.links[linktobecheckednum].getAttribute("onclick")
				var id=SourceJS.replace( /.*\%3Fid\%3D(\w*).*/, '$1' );
				var docid=SourceJS.replace( /.*docid\%3D(\w*).*/ , '$1' );
				var itag=SourceJS.replace( /.*itag\%3D(\w*).*/ , '$1' );
				var urlcreated=SourceJS.replace( /.*urlcreated\%3D(\w*).*/ , '$1' );
				var sigh=SourceJS.replace( /.*sigh\%3D(\w*).*/ , '$1' );
				return "http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideoplayback%3Fid%3D"+id+"%26docid%3D"+docid+"%26itag%3D"+itag+"%26urlcreated%3D"+urlcreated+"%26sigh%3D"+sigh+"&autoPlay=true";

}

function GenerateFileUrl(linktobecheckednum){
				var SourceJS=document.links[linktobecheckednum].getAttribute("onclick")
				var id=SourceJS.replace( /.*\%3Fid\%3D(\w*).*/, '$1' );
				var docid=SourceJS.replace( /.*docid\%3D(\w*).*/ , '$1' );
				var itag=SourceJS.replace( /.*itag\%3D(\w*).*/ , '$1' );
				var urlcreated=SourceJS.replace( /.*urlcreated\%3D(\w*).*/ , '$1' );
				var sigh=SourceJS.replace( /.*sigh\%3D(\w*).*/ , '$1' );
				return "http://vp.video.google.com/videoplayback?id="+id+"&docid="+docid+"&itag="+itag+"&urlcreated="+urlcreated+"&sigh="+sigh;

}

function FindLink(StartNum,LinkName){
		for(i=(StartNum+1);i<document.links.length;i++){
			var curhref=document.links[i].href;
			if((curhref==LinkName)){
				return i;
			}
		}
		return -1;
}

function NextWithDocID(CurrentLinkNum,TypeOfLink){
	var inhref=document.links[CurrentLinkNum].href;
	var inonclick=document.links[CurrentLinkNum].getAttribute("onclick");
	var indocid=inonclick.replace( /.*docid\%3D(\w*).*/ , '$1' );
	for(i=(0);i<document.links.length;i++){
		var curhref=document.links[i].href;
		var curdocid=curhref.replace( /.*docid\=(\w*).*/ , '$1' );

		if((curdocid==indocid) && ( document.links[i].firstChild.nodeType!=TypeOfLink )){
			return i;
		}
	}
	return 0;
}


function main(){
	for(mi=0;mi<document.links.length;mi++){
		if( IsLinkPlayButton(mi) ){
			var NewUrl=GeneratePlayerUrl(mi);
			var TextLinkID=NextWithDocID(mi,3);

			document.links[TextLinkID].href=GenerateFileUrl(mi);

			document.links[mi].href=NewUrl;

			document.links[mi].setAttribute("onclick","");


		}
	}

	var NumOfVidAboutLink=FindLink(0,"http://video.google.com/video_about.html");
	if( NumOfVidAboutLink!= (-1) ){
		var AboutLinkParent=document.links[NumOfVidAboutLink].parentNode;

		var SWFLink=document.createElement("a");
			SWFLink.href="javascript:var PlayerURL='http://video.google.com/googleplayer.swf?videoUrl=';top.location=PlayerURL+document.getElementById('playfile').value;";

		var LinkFont=document.createElement("font");
			LinkFont.setAttribute("size","2");
			LinkFont.value="c:\examplefile.flv";
			LinkFont.setAttribute("face","Tahoma,Verdana,Arial");
			LinkFont.appendChild(document.createTextNode('Play Saved File'));

		SWFLink.appendChild(LinkFont);

		var SelectFileForm=document.createElement("form");
			SelectFileForm.setAttribute("enctype","multipart/form-data");
			SelectFileForm.setAttribute("action","");

		var SelectFileField=document.createElement("input");
			SelectFileField.setAttribute("maxlength","1024000000");
			SelectFileField.setAttribute("type","file");
			SelectFileField.setAttribute("size","50");
			SelectFileField.setAttribute("id","playfile");

		SelectFileForm.appendChild(SelectFileField);



		document.getElementsByTagName("body")[0].insertBefore(SelectFileForm, AboutLinkParent);
		document.getElementsByTagName("body")[0].insertBefore(SWFLink, AboutLinkParent);
		document.getElementsByTagName("body")[0].insertBefore(document.createElement("br"), AboutLinkParent);
	}

}

main();