Torrentz IMDB Rating

By dgt Last update Feb 1, 2009 — Installed 2,848 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name           Torrentz IMDB Rating
// @description   Adds  IMDB ratings to movie torrents on torrentz.com
// @namespace      http://userscripts.org/users/68426
// @include        http://www.torrentz.com/*
// ==/UserScript==

var loggingOn=false;

function addScore(){
	
	a_dt = document.getElementsByTagName('dt');
	for(i=0; i<a_dt.length; i++) {
		currElement=a_dt[i];
		descText = currElement.getElementsByTagName('a');
		movieTitle = descText[0].innerHTML;
		if(m=descText[0].innerHTML.match(/aXXo|FXG|FxM/)){
			temp = a_dt[i].firstChild.innerHTML;
			temp = temp.toLowerCase();
			temp = temp.substring(0, temp.indexOf('dvdrip'));
			temp = temp.replace(/<b>/g, '');
			temp = temp.replace(/<\/b>/g, '');
			temp = temp.replace(/\[/, ' (');
			temp = temp.replace(/\]/, ')');
			temp = temp.replace(/\./g, ' ');
			temp = temp.replace(/_/g, ' ');
			searchTitle = temp.replace(/' '/g, '+');
			loggingOn?GM_log(m+" movieName: "+searchTitle):void(0);
			handleDTentry(searchTitle, currElement);
			
		} else if(descText[0].innerHTML.match(/KLAXXON/)) {
			temp = currElement.firstChild.innerHTML;
			searchTitle = temp.substring(0, temp.indexOf('KLAXXON'));
			handleDTentry(searchTitle, currElement);
		} else {
			match = movieTitle.search(/([^\w ]|dvd|hdtv|720p|1080p|proper|r5|limited|italian|french|german| ts|telesync|avi|xvid|bluray|hddvd|nhd| ws|spanish).*$/gi);
            if (match >= 3) movieTitle = movieTitle.substring(0, match);
			movieTitle = movieTitle.replace(/<b>|<\/b>/g, '')
                                   .replace(/\./g, ' ')
                                   .replace(/_/g, ' ')
                                   .replace(/[\',]/g, '');
			movieTitle = movieTitle.replace(/\[.*?\]/g, '')
                                   .replace(/ +/g, ' ')
                                   .replace(/^ +| +$/g, '');
			handleDTentry(movieTitle, currElement);					   
		}		
	}
}

function handleDTentry(searchTitle, element){
	var googleUrl = 'http://www.google.com/search?q=intitle:[' + searchTitle + ']+site:imdb.com/title'+"&btnI=I'm Feeling Lucky";
	var cachedValue = GM_getValue("cache_"+searchTitle);
	if (cachedValue && (cachedValue == -1 || cachedValue.charAt(0)=='[')) {
		cachedratingLink = eval(cachedValue);
		loggingOn?GM_log("found cached version for: "+searchTitle+ " rating is: "+(cachedValue == -1?"-1":cachedratingLink[0])):void(0);
		if (cachedValue != -1) {
			addratingLinkToElement(element, cachedratingLink);
		}
	} else {
		loggingOn?GM_log("couldn not find cached version for: " +searchTitle):void(0);
		GM_xmlhttpRequest({
			method: 'GET',
			url: googleUrl,
			headers: {
				'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
				'Accept': 'application/atom+xml,application/xml,text/xml',
			},
			onload: function(responseDetails) {
				var res = responseDetails.responseText;  
				loggingOn?GM_log("got response text from imdb for:" +searchTitle):void(0);
				var ratingMatch = res.match(/<div class="meta">\s*<b>(\d\.\d)\/10<\/b>/);
				if (ratingMatch) {
					rating = ratingMatch[1];
					GM_setValue("cache_"+searchTitle, uneval([rating, responseDetails.finalUrl]));
					addratingLinkToElement(element, [rating, responseDetails.finalUrl]);
				} else {
					loggingOn?GM_log("could not match: "+searchTitle):void(0);
					loggingOn?GM_log("final URL = "+responseDetails.finalUrl):void(0);
					loggingOn? GM_log(res) : void(0);
					GM_setValue("cache_"+searchTitle, -1);
				}
			}
		});
	}
}

function addratingLinkToElement(element, ratingLink){
	loggingOn?GM_log("now in function addratingLinkToElement"):void(0);
	if (ratingLink && ratingLink != -1) {
		ratingElement = document.createElement('a');
		ratingElement.setAttribute("href", ratingLink[1]);
		ratingElement.setAttribute("style", "background-color:yellow");
		ratingElement.innerHTML = ""+ratingLink[0];
		text=element.innerHTML;
		newText=text+"&nbsp;";
		element.innerHTML=newText;
		element.appendChild(ratingElement);
	}
}
addScore();