// ==UserScript==
// @name TorrentZ [load IMDB info]
// @namespace
// @version 1.02
// @description Show info of movie/series (rating, poster, actors, ...) from IMDB on TorrentZ domains (torrentz.eu, torrentz.com, ...)
// @author hossam6236
// @license GNU General Public License v3.0
// @include https://torrentz.eu/*
// @include https://www.torrentz.eu/*
// @include https://torrentz.ph/*
// @include https://www.torrentz.ph/*
// @include https://torrentz.li/*
// @include https://www.torrentz.li/*
// @include https://torrentz.com/*
// @include https://www.torrentz.com/*
// @include https://torrentz.me/*
// @include https://www.torrentz.me/*
// @include https://torrentz.in/*
// @include https://www.torrentz.in/*
// @include https://torrentz.hk/*
// @include https://www.torrentz.hk/*
// @include https://torrentz.ch/*
// @include https://www.torrentz.ch/*
// @include https://torrents.de/*
// @include https://www.torrents.de/*
// @include https://tz.ai/*
// @include https://www.tz.ai/*
// @include https://torrentz-proxy.com/*
// @include https://www.torrentz-proxy.com/*
// @include https://bestdownload.eu/*
// @include https://www.bestdownload.eu/*
// @include https://torrentsmirror.com/*
// @include https://www.torrentsmirror.com/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
// @grant GM_xmlhttpRequest
// @downloadURL none
// ==/UserScript==
// regext for cleaning the titles
var reM = /\d{4}/;
var reS = /S\d{2}E\d{2}|\d{1}x\d{2}/;
movie_db = {};
try {
var c = localStorage.getItem('movie_db');
if (c) {
$.extend(movie_db, JSON.parse(c));
}
var count = 0;
var start_button = $('');
start_button.appendTo($('h1').first());
start_button.css({height: start_button.parent().height()>0 ? start_button.parents('div').height() : start_button.parents('div').height()});
var updateElement_dl = function(stor_title, dl_element){
//alert(stor_title);
var el_title = movie_db[stor_title].imdbVotes + ' votes - ' + movie_db[stor_title].Runtime + ' - Rated ' + movie_db[stor_title].Rated + ' - Awards: ' + movie_db[stor_title].Awards;
var star = '';
var reg_wins = /([0-9]+) win(s|)/;
var reg_noms = /([0-9]+) nomination(s|)/;
var reg_wins_sig = /won ([0-9]+) /;
var reg_noms_sig = /nominated for ([0-9]+) /;
var wins = reg_wins.exec(movie_db[stor_title].Awards.toLowerCase()); if(wins) wins = parseFloat(wins[1]);
var noms = reg_noms.exec(movie_db[stor_title].Awards.toLowerCase()); if(noms) noms = parseFloat(noms[1]);
var wins_sig = reg_wins_sig.exec(movie_db[stor_title].Awards.toLowerCase()); if(wins_sig) wins_sig = parseFloat(wins_sig[1]);
var noms_sig = reg_noms_sig.exec(movie_db[stor_title].Awards.toLowerCase()); if(noms_sig) noms_sig = parseFloat(noms_sig[1]);
//if(match) alert(match[1]);
if((wins_sig >= 1 || noms_sig >= 3) && (wins >= 5 || noms >= 10)){
star = '★';
}else if(wins >= 10 || (noms_sig >= 1 && noms >= 5)){
star = '★';
}else if(wins >= 5 || noms >= 10 || noms_sig >= 1){
star = '★';
}else if(wins + noms >= 1){
star = '☆';
}
var el = '' + movie_db[stor_title].imdbRating + star + '';
//$('a', dl_element).first().attr('title', movie_db[stor_title].Title + ' (' + movie_db[stor_title].Year + ') - ' + movie_db[stor_title].Plot);
//$('a', dl_element).first().after(' ('+movie_db[stor_title].Genre + ')');
$('a', dl_element).first().on('mouseover', function(e){
poster_img.find('img').attr('src', "");
poster_img.find('img').attr('src', movie_db[stor_title].Poster);
poster_img.find('#imdb_a').attr('href', 'http://www.imdb.com/title/' + movie_db[stor_title].imdbID + '');
poster_img.find('#imdb_a').attr('title', movie_db[stor_title].Title + ' (' + movie_db[stor_title].Year + ')');
poster_img.find('#imdb_title').html(movie_db[stor_title].Title);
poster_img.find('#imdb_year').html(movie_db[stor_title].Year);
poster_img.find('#imdb_rating').html(movie_db[stor_title].imdbRating);
poster_img.find('#imdb_votes').html(movie_db[stor_title].imdbVotes);
poster_img.find('#imdb_rated').html(movie_db[stor_title].Rated);
poster_img.find('#imdb_runtime').html(movie_db[stor_title].Runtime);
poster_img.find('#imdb_awards').html(movie_db[stor_title].Awards.replace('Another ', '
Another '));
poster_img.find('#imdb_genre').html(movie_db[stor_title].Genre);
poster_img.find('#imdb_actors').html(movie_db[stor_title].Actors);
poster_img.find('#imdb_director').html(movie_db[stor_title].Director);
poster_img.find('#imdb_writer').html(movie_db[stor_title].Writer);
poster_img.find('#imdb_plot').html(movie_db[stor_title].Plot);
poster_img.css({
left: $(window).width()*2/3 - poster_img.width()/2, //e.pageX + 100,
top: $(window).height()/2 - poster_img.height()/2
});
//poster_img.attr('stor_title','Actors: ' + movie_db[stor_title].Actors + ' - Director: ' + movie_db[stor_title].Director)
poster_img.stop(true, true).show();
});
$('a', dl_element).first().on('mouseout', function(e){
poster_img.stop(true, true).fadeOut(2000);
});
//$('b', this).attr('style','font-size:65%;')
var rating = parseFloat(movie_db[stor_title].imdbRating);//alert(rating);
var votes = parseFloat(movie_db[stor_title].imdbVotes.replace(',',''));
if (rating >= 7.5) { el = ''+el+''; }
$('dt', dl_element).prepend(el+ ' ');
if(rating <= 5.0 || votes <= 1000){
$('dt', dl_element).css({opacity: Math.max(0.15, Math.min(rating/10, votes/1000/2))});
}else if(movie_db[stor_title].imdbRating == "N/A" || movie_db[stor_title].imdbVotes == "N/A"){
$('dt', dl_element).css({opacity: 0.15});
}
};
var getImdbInfo = function(title, year, dl_element) {
var url = 'http://www.omdbapi.com/?t=' + encodeURIComponent(title) + '&y=' + encodeURIComponent(year) + '&plot=full&r=json';
var stor_title = ( title + '_' + year );
//alert("\""+title + "\""+year);
//alert(url);
if ( stor_title in movie_db && movie_db[stor_title]!==false) {
updateElement_dl(stor_title, dl_element);
return true;
}else{
GM_xmlhttpRequest({
method: 'GET',
url: url,
onload: function(response) {
var data = JSON.parse(response.responseText);
if (data.Response === 'False') {
if((title+" ").indexOf("s ") > -1){
//alert('aaaaaa');
return getImdbInfo((title+" ").replace("s ", "'s "), year, dl_element);
}else{
movie_db[stor_title] = false;
count++;
}
} else {
movie_db[stor_title] = data;
updateElement_dl(stor_title, dl_element);
}
//alert(title);
localStorage.setItem('movie_db', JSON.stringify(movie_db));
},
onerror: function(){
console.warn('request failed: http://www.omdbapi.com/?t=' + title);
}
});
return false;
}
};
$(document).ready(function() {});
start_button.click(function() {
$(this).hide();
poster_img = $('