Torrent9++

Make Torrent9 Better

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name        Torrent9++
// @namespace   https://greasyfork.org/fr/users/11667-aymeric-maitre
// @description Make Torrent9 Better
// @include     http*://*torrents9.*/*
// @include     http*://*torrent9.*/*
// @include     http*://*lemonlemag.*/*
// @include     http*://*guitare-luthier.*/*
// @include     http*://*agence-webside.*/*
// @include     http*://*.t9.*/*
// @include     http*://t9.*/*
// @version     9.0.0
// @grant       none
// @icon        data:image/x-icon;base64,AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAnHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+oi0n/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//b0Ln///////v59//Mu5f/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/pIZB/5x6J/+skVP/7efc/9bJrP+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/6+VWP/8+/r/o4Q6/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//Nvpv//Pv6///////s5tz//f38/7afaf+ceif/nHon/5x6J/+ceif/qo5K/8Kuf/++qHf/nHon/5x6J/+0nGT//Pv6/7ega/+ceif/sJZa//j28//Crn//nHon/5x6J/+ceif/nHon/8Kuf///////9PHr/5x6J/+ceif/ybeL/+zn3f+ceif/nHon/5x6J//49vP/uaNu/5x6J/+ceif/nHon/5x6J//Crn////////Tx6/+ceif/nHon/7ukcf/49vL/oYE2/5x6J/+6pHH/+/n3/6SGPv+ceif/nHon/5x6J/+ceif/wq5////////08ev/nHon/5x6J/+dfC3/4NbA//Pw6v/g18T/+/n4/8aziv+ceif/nHon/5x6J/+ceif/nHon/8Kuf///////9PHr/5x6J/+ceif/nHon/5x6J/+2nmj/v6p6/6yRU/+ceif/nHon/5x6J/+ceif/nHon/5x6J//Crn////////Tx6/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/wq5////////08ev/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//08ev/////////////////////////////////wq5//5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/39bE/+jh1f/o4dX/6OHV/+jh1f/o4dX/6OHV/7mibf+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAnHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+4onT/sZhl/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+4onT//////////////////////+/q4v++qoP/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/7iidP/////////////////////////////////XzLb/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/qo9T/7GYZf+ceif/nHon/6qPU//RxKv////////////v6uL/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+4onT////////////RxKv/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//d1ML///////Tx7P+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/6qPU////////////7iidP+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/xbOR//Tx7P/////////////////v6uL/xbOR//r49v//////0cSr/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/9fMtv/////////////////////////////////////////////////RxKv/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/++qoP////////////v6uL/sZhl/5x6J/+ceif/sZhl/9fMtv/6+Pb//////+nj2P+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/18y2/+nj2P/p49j/6ePY/9fMtv+ceif/nHon/5x6J/+ceif/nHon/93Uwv//////9PHs/6OFP/+ceif/nHon/5x6J/+ceif/nHon/+nj2P//////6ePY/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//p49j/////////////////6ePY/5x6J/+ceif/nHon/5x6J/+ceif/7+ri///////j283/nHon/5x6J/+ceif/nHon/5x6J/+ceif/6ePY///////d1ML/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/+nj2P/////////////////p49j/nHon/5x6J/+ceif/nHon/5x6J////////////9HEq/+ceif/nHon/5x6J/+ceif/nHon/5x6J//6+Pb//////9HEq/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/6ePY/////////////////+nj2P+ceif/nHon/5x6J/+ceif/nHon/+nj2P//////49vN/5x6J/+ceif/nHon/5x6J/+ceif/uKJ0////////////vqqD/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//p49j/////////////////6ePY/5x6J/+ceif/nHon/5x6J/+ceif/y7ye////////////sZhl/5x6J/+ceif/nHon/6OFP//08ez//////+/q4v+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/+nj2P/////////////////p49j/nHon/5x6J/+ceif/nHon/5x6J/+jhT//7+ri///////6+Pb/18y2/7iidP/LvJ7/9PHs////////////uKJ0/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/6ePY/////////////////+nj2P+ceif/nHon/5x6J/+ceif/nHon/5x6J/+jhT//7+ri////////////////////////////+vj2/8Wzkf+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//p49j/////////////////6ePY/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/xbOR/93Uwv/p49j/3dTC/9HEq/+qj1P/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/+nj2P/////////////////p49j/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/6ePY/////////////////+nj2P+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//p49j/////////////////6ePY/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/+nj2P/////////////////p49j/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/6ePY/////////////////+nj2P+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/6ePY///////////////////////////////////////////////////////////////////////p49j/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J//p49j//////////////////////////////////////////////////////////////////////+nj2P+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/+nj2P//////////////////////////////////////////////////////////////////////6ePY/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/xbOR/9HEq//RxKv/0cSr/9HEq//RxKv/0cSr/9HEq//RxKv/0cSr/9HEq//RxKv/0cSr/9HEq//Fs5H/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/5x6J/+ceif/nHon/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
// @require     https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
// ==/UserScript==
(async function () {
	if (
            location.host.search(/torrents?9\./) < 0 
            && location.host.search(/t9\.pe/) < 0
            && location.host.search(/lemonlemag\.fr/) < 0
            && location.host.search(/agence-webside\.fr/) < 0
            && location.host.search(/guitare-luthier\.fr/) < 0
        ) {
		return;
	}
  if(typeof jQuery === "undefined") {
    var script = document.createElement('script');
    script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);
    await new Promise(resolve => {
      let inter = setInterval(_ => {
        if (typeof jQuery !== "undefined") {
          clearInterval(inter)
          resolve()
        }
      }, 500)
    })
  }
  var script = document.createElement('script');
  script.src = '/themes/default/js/bootstrap.min.js';
  script.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(script);
  await new Promise(resolve => setTimeout(resolve , 2000))
	function refresh_modal_body(bool) {
		if (debug) console.log('Torrent9++: refresh_modal_body');
		if (bool === undefined)
			modal_save_change = 1;

		var modal = '';
		modal += '<table class="table">';
		modal += '<thead>';
		modal += '<tr>';
		modal += '<th>Words</th>';
		modal += '<th>Color</th>';
		modal += '<th></th>';
		modal += '</tr>';
		modal += '</thead>';
		modal += '<tbody>';

		for (var i = 0; i < colors_data.length; i++) {
			var color = colors_data[i];
			modal += '<tr>';
			modal += '<td><u>' + ((color.word != "__AD_OTHERWORD__") ? ((color.word != "__AD_ALREADYDOWNLOADED__") ? color.word : 'Already downladed') : 'No match (white to disable)') + '</u></td>';
			modal += '<td><input type="color" data-id="'+i+'" value="' + color.color + '"></td>';
			if (color.word != "__AD_OTHERWORD__" && color.word != "__AD_ALREADYDOWNLOADED__")
				modal += '<td><button type="button" data-id="'+i+'" class="AD_remove_color btn btn-danger">Remove</button></td>';
			else if (color.word === "__AD_ALREADYDOWNLOADED__")
				modal += '<td><button type="button" id="AD_EMPTY_LIST" class="btn btn-danger">Empty saved list</button></td>';
			modal += '</tr>';
		}

		modal += '<tr>';
		modal += '<td><input id="AD_new_color_word" type="text"></td>';
		modal += '<td><input id="AD_new_color_color" data-id="new" value="#F89585" type="color"></td>';
		modal += '<td><button type="button" class="AD_add_color btn btn-success">Add</button></td>';
		modal += '</tr>';

		modal += '</tbody>';
		modal += '</table>';

		modal += '<table class="table">';
		modal += '<thead>';
		modal += '<tr>';
		modal += '<th>Option</th>';
		modal += '<th>Status</th>';
		modal += '</tr>';
		modal += '</thead>';
		modal += '<tbody>';

		modal += '<tr>';
		modal += '<td>Color mode</td>';
		modal += '<td><input id="AD_check_enable_color_mode" type="checkbox" value="1" '+((option.enable_color_mode) ? 'checked' : '')+'></td>';
		modal += '</tr>';

		modal += '<tr>';
		modal += '<td>Show images</td>';
		modal += '<td><input id="AD_check_enable_pics" type="checkbox" value="1" '+((option.enable_pics) ? 'checked' : '')+'></td>';
		modal += '</tr>';

		modal += '<tr>';
		modal += '<td>Direct download</td>';
		if (enableQuery === false) {
			modal += '<td style="width: 220px !important;">not compatible with your version</td>';
		} else {
			modal += '<td><input id="AD_check_enable_direct_download" type="checkbox" value="1" '+((option.enable_direct_download) ? 'checked' : '')+'></td>';
		}
		modal += '</tr>';

		modal += '<tr>';
		modal += '<td>Show [SAISON] link</td>';
		modal += '<td><input id="AD_check_enable_show_season" type="checkbox" value="1" '+((option.enable_show_season) ? 'checked' : '')+'></td>';
		modal += '</tr>';

		modal += '<tr>';
		modal += '<td>Short name (length: 54)</td>';
		modal += '<td><input id="AD_check_enable_short_name" type="checkbox" value="1" '+((option.enable_short_name) ? 'checked' : '')+'></td>';
		modal += '</tr>';

		modal += '<tr>';
		modal += '<td>Preview width (in pixel)</td>';
		modal += '<td><input id="AD_change_preview_size" type="number" value="'+((option.preview_size) ? option.preview_size : 150)+'"></td>';
		modal += '</tr>';

		modal += '<tr>';
		modal += '<td>Show description on mouse over</td>';
		if (enableQuery === false) {
			modal += '<td style="width: 220px !important;">not compatible with your version</td>';
		} else {
			modal += '<td><input id="AD_check_enable_description" type="checkbox" value="1" '+((option.enable_description) ? 'checked' : '')+'></td>';
		}
		modal += '</tr>';

		modal += '</tbody>';
		modal += '</table>';
		$('body').find('div#myADColorModal').find('.modal-body').html(modal);
	}

	function gen_modal() {
		if (debug) console.log('Torrent9++: gen_modal');
		var modal = '<div class="modal fade" id="myADColorModal" role="dialog">';
		modal += '<div class="modal-dialog">';
		modal += '<div class="modal-content">';
		modal += '<div class="modal-header">';
		modal += '<button type="button" class="close" data-dismiss="modal">&times;</button>';
		modal += '<h4 class="modal-title">Torrent9++ parameters</h4>';
		modal += '</div>';
		modal += '<div class="modal-body">';
		modal += '</div>';
		modal += '<div class="modal-footer">';
		modal += '<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>';
		modal += '</div>';
		modal += '</div></div></div>';
		$("body").prepend(modal);
		refresh_modal_body(1);
	}

	function getTorrentName(url) {
		if (debug) console.log('Torrent9++: getTorrentName');
		var name = url.replace(base_link, "");
		var index = name.indexOf("-proper-");
		if (index != -1) {
			name = name.substring(0, index);
		} else if ((index = name.indexOf("-truefrench-")) != -1) {
			name = name.substring(0, index);
		} else if ((index = name.indexOf("-french-")) != -1) {
			name = name.substring(0, index);
		} else if ((index = name.indexOf("-vostfr-")) != -1) {
			name = name.substring(0, index);
		}
		return name;
	}

	function set_param() {
		if (debug) console.log('Torrent9++: set_param');
		colorblue = 'rgb(133, 183, 248)';

		index = 0;
		modal_save_change = 0;
		allTorrentLink = [];

		base_link = '/get_torrent/';
		base_img = '/_pictures/';


		added_style = "";
		img_link = "";
		lien = "";

		colors_data = JSON.parse(localStorage.getItem("AD_colors_data"));
		option = JSON.parse(localStorage.getItem("AD_OPTION"));
		alreadyDownloaded = JSON.parse(localStorage.getItem("AD_ALREADY_DOWNLOADED") || "[]");

		if (option === null)
		{
			option = {
				enable_pics: true,
				enable_direct_download: true,
				enable_color_mode: true,
				enable_short_name: true,
				enable_description: true,
				preview_size: 100,
				enable_show_season: true
			};
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
		}

		if (option.enable_show_season === undefined)
			option.enable_show_season = true;

		if (option.preview_size === undefined)
			option.preview_size = 150;

		if (option.enable_short_name === undefined)
			option.enable_short_name = true;

		if (option.enable_description === undefined)
			option.enable_description = true;

		if (colors_data === null)
		{
			colors_data = [
				{word: "__AD_OTHERWORD__", color: "#FFFFFF"}, // #4AE77E
				{word: "__AD_ALREADYDOWNLOADED__", color: "#f4b942"},
				{word: "DVDSCR", color: "#F89585"},
				{word: "VOSTFR", color: "#F89585"},
				{word: " VO ", color: "#F89585"},
				{word: " TS ", color: "#F89585"}
			];
			localStorage.setItem("AD_colors_data", JSON.stringify(colors_data));
		}

		if (enableQuery === false) {
			option.enable_direct_download = false;
			option.enable_description = false;
		}
	}

	function main() {
		if (debug) console.log('Torrent9++: main');
		set_param();
		if (option.enable_pics) {
			$("<style type='text/css'>.table-bordered.cust-table > tbody > tr > td:nth-child(3) {color: #000;}.table-bordered.cust-table > tbody > tr > td:nth-child(4) {color: #008f0d;}.table-bordered.cust-table > tbody > tr > td:nth-child(5) {color: #b94309;}.table-bordered.cust-table > tbody > tr > td:nth-child(2) { text-align: left;}</style>").appendTo("head");
		}
		if ($("thead").length === 0) {
			$('tbody').each(function (){
				var thead = '<thead><tr>';
				if(option.enable_pics)
					thead +='<th class="col-md-1">Image</th>';
				thead +='<th class="">Nom du torrent</th>';
				thead +='<th style="width:90px">Taille</th>';
				thead +='<th style="width:100px">Seed</th>';
				thead +='<th style="width:100px">Leech</th>';
				if(option.enable_direct_download)
					thead +='<th class="col-md-1" style="white-space: nowrap;"><a href="#" id="AD_download_all_link" style="/*! font-size: 12px; */">Download All</a></th>';
				thead +='</tr></thead>';
				$(this).parent().prepend(thead);
			});
		}
		else
		{
			$('thead > tr').each(function (){
				var trow = $(this);
				if(option.enable_direct_download)
					trow.append('<th class="col-md-1" style="white-space: nowrap;"><a href="#" id="AD_download_all_link" style="/*! font-size: 12px; */">Download All</a></th>');
				if(option.enable_pics)
					trow.prepend('<th class="col-md-1">Image</th>');
			});
		}
		$('tbody > tr').each(function (){
			var trow = $(this);
			var Current_Link = trow.find('td').first().find('a');
			trow.find('td').each(function (){
				$(this).css('white-space', 'nowrap');
				if(option.enable_pics)
					$(this).css('height', option.preview_size/2.5*3+'px').css('line-height', option.preview_size/2.5*3+'px');
			});
			if (Current_Link.length > 0) {
				if (option.enable_color_mode)
				{
					var edited = 0;
					for (var i = 0; i < colors_data.length; i++)
					{
						if (colors_data[i].word == "__AD_OTHERWORD__")
							colorother = colors_data[i].color;
						else if (colors_data[i].word == "__AD_ALREADYDOWNLOADED__")
							colorAlreadyDownloaded = colors_data[i].color;
						else
						{
							var keyword = Current_Link.text().search(colors_data[i].word);
							if (keyword != - 1)
							{
								trow.css('background-color', colors_data[i].color);
								edited = 1;
							}
						}
					}
					if (!colorAlreadyDownloaded) {
						colors_data.push({word: "__AD_ALREADYDOWNLOADED__", color: "#f4b942"});
						colorAlreadyDownloaded = "#f4b942";
					}

					if (alreadyDownloaded.indexOf(getTorrentName(Current_Link.attr('href').split("/").slice(3).join("/"))) != -1) {
						trow.css('background-color', colorAlreadyDownloaded);
						edited = 1;
					}

					if (edited === 0 && colorother != "#FFFFFF" && colorother != "#ffffff" && colorother != "rgb(255, 255, 255)")
						trow.css('background-color', colorother);
				}
				if (option.enable_show_season) {
					var serie_data = Current_Link.text().match(/(.+)\sS(\d{2})E\d{2}.*(FRENCH|VOSTFR)/);
					if (serie_data !== null && serie_data.length == 4) {
                        var quality = "";
                        if (Current_Link.text().indexOf("720p") >= 0){
                            quality = "-720p";
                        } else if (Current_Link.text().indexOf("1080p") >= 0){
                            quality = "-1080p";
                        }
						var tmp_link = '/search_torrent/series-'+serie_data[3]+'/'+serie_data[1].replace(/[\W_]+/g,"-").trim()+'-s'+serie_data[2]+quality+'.html';
                        tmp_link = tmp_link.replace(/series-FRENCH/, 'series-francaise').toLowerCase().replace(/ /g, '-');
						trow.find('td').first().append(' <a href="' + BASE_URL+tmp_link + '">[S'+serie_data[2]+']</a>');
					}
				}
				var lien_split = Current_Link.attr('href').split("/");
				var LINK_title = lien_split[lien_split.length - 1];
				var LINK_id = lien_split[lien_split.length - 2];
				img_link = base_img + LINK_title + ".jpg";
				var $tmpIng;

				if(option.enable_pics)
				{
                    trow.prepend(
                        $('<tr>').append(
                            $('<a>')
                            .attr('href', Current_Link.attr('href'))
                            .attr('target','_blank')
                                .append(
                                    $tmpIng = $('<img>')
                                    .attr('title','Download')
                                    .attr('src', BASE_URL +img_link)
                                    .attr('style','width: '+option.preview_size+'px;')
                                )
                        )
                    );
					added_style = "height: 50px; line-height: 50px; ";
				}
				if (option.enable_direct_download || option.enable_description) {
					$.get(Current_Link.attr('href'), function(data) {
						var html = $.parseHTML( data );
						if(option.enable_direct_download) {
							var liens = $('a.btn.btn-danger.download', html);
                            liens.each(function( index ) {
                                lien = $( this ).attr("href");
                                if (lien.indexOf("/register/") < 0 && (lien.indexOf(location.host) >= 0 || (lien.indexOf("http://") < 0 && lien.indexOf("https://") < 0))){
                                    return false;
                                }
                                lien = undefined;
                            });
                            /*
                            if (lien.indexOf("/register/") >= 0){
                                var links = $('.movie-detail a', html);
                                for(i = 2; i < links.length; i++){
                                    lien = $(links[i]).attr('href');
                                    if (lien.indexOf("/register/") < 0){
                                        break;
                                    }
                                    lien = undefined;
                                }
                            }
                            */
                            if (lien) {
							    allTorrentLink.push({ download : lien, url: Current_Link.attr('href') });
							    trow.append('<td style="white-space: nowrap;'+ added_style +'"><a id="AD_download_link" title="Download" href="'+BASE_URL+lien+'" target="_blank" style="color:#000; font-size:12px; font-weight:bold;">Download</a></td>');
						    }
						}
						if(option.enable_description) {
							$('div.movie-information ul', html).remove();
              var description = $("div.movie-information", html).text().trim();
							if(!description){
								console.error("Torrent9++: Fail load description for", Current_Link.attr('href'));
                
            $('html').html(data)
								trow.attr('title', "Description non trouvé");
							} else {
								trow.attr('title', description);
							}
						}
						if(option.enable_pics) {
							$tmpIng.attr('src', $('div.movie-img img', html).attr('src'));
						}
					}).fail(function (r){console.error('Torrent9++: request error');});
				}
				if (option.enable_short_name && Current_Link.text().length > 51) {
					Current_Link.text(
						Current_Link.text()
							.replace('FRENCH','')
							.replace('VOSTFR','')
							.replace('DVDRIP','')
							.replace('BluRay','')
							.slice(0,54) + "..."
					);
				}
			} else {
				console.error('Torrent9++: No current link');
			}


			index++;
		});

		$('tr').mouseover(function () {
			if ($(this).parent().first()[0].localName != "thead") {
				colorstat = $(this).css('background-color');
				$(this).css('background-color', colorblue);
			}
		});

		$('tr').mouseout(function () {
			if ($(this).parent().first()[0].localName != "thead") {
				if (colorstat != "rgb(194, 226, 231)")
					$(this).css('background-color', colorstat);
				else
					$(this).css('background-color', '');
			}
		});

		$("body").on("click", "div.movie-detail div.row div.col-sm-6 div.download-btn a",function (event) {
			var name = getTorrentName(location.href.split("/")[5]);
			if (alreadyDownloaded.indexOf(name) == -1) {
				alreadyDownloaded.push(name);
				localStorage.setItem("AD_ALREADY_DOWNLOADED", JSON.stringify(alreadyDownloaded));
			}
		});

		$("body").on('click', '#AD_download_link', function(event) {
			$(this).parent().parent().css('background-color', colorAlreadyDownloaded);
			colorstat = colorAlreadyDownloaded;
			var name = getTorrentName($(this).parent().parent().find('td a').first().attr("href").split("/")[3]);
			if (alreadyDownloaded.indexOf(name) == -1) {
				alreadyDownloaded.push(name);
				localStorage.setItem("AD_ALREADY_DOWNLOADED", JSON.stringify(alreadyDownloaded));
			}
		});

		$("body").on('click', '#AD_download_all_link', function(event) {
			event.preventDefault();
			var myVar = setInterval(function(){ myTimer(); }, 1000);
			var allTorrentLink_i = allTorrentLink.length - 1;
			function myTimer() {
				if (allTorrentLink_i < 0) {
					clearInterval(myVar);
					return;
				}
				open(window.location.origin+allTorrentLink[allTorrentLink_i].download, "_blank");

				var name = getTorrentName(allTorrentLink[allTorrentLink_i].url.split("/")[3]);

				if (alreadyDownloaded.indexOf(name) == -1) {
					alreadyDownloaded.push(name);
					localStorage.setItem("AD_ALREADY_DOWNLOADED", JSON.stringify(alreadyDownloaded));
				}

				allTorrentLink_i--;
			}
		});

		$("body").on('change', '#AD_check_enable_pics', function(event) {
			option.enable_pics = !option.enable_pics;
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('change', '#AD_change_preview_size', function(event) {
			option.preview_size = $(this).val();
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('click', '#AD_EMPTY_LIST', function(event) {
			localStorage.setItem("AD_ALREADY_DOWNLOADED", "[]");
			var names = "";
			for(var k = 0; k < alreadyDownloaded.length; k++){
				names += alreadyDownloaded[k].url.replace(/-/g, " ") + "\n";
			}
			alert("List emptied:\n"+names);
			location.reload();
		});

		$("body").on('change', '#AD_check_enable_direct_download', function(event) {
			option.enable_direct_download = !option.enable_direct_download;
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('change', '#AD_check_enable_show_season', function(event) {
			option.enable_show_season = !option.enable_show_season;
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('change', '#AD_check_enable_short_name', function(event) {
			option.enable_short_name = !option.enable_short_name;
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('change', '#AD_check_enable_description', function(event) {
			option.enable_description = !option.enable_description;
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('change', '#AD_check_enable_color_mode', function(event) {
			option.enable_color_mode = !option.enable_color_mode;
			localStorage.setItem("AD_OPTION", JSON.stringify(option));
			refresh_modal_body();
		});

		$("body").on('click', '.AD_remove_color', function(event) {
			event.preventDefault();
			if (confirm("Sur ?")) {
				colors_data.splice($(this).data('id'), 1);
				localStorage.setItem("AD_colors_data", JSON.stringify(colors_data));
				refresh_modal_body();
			}
		});
		$("body").on('click', '.AD_add_color', function(event) {
			event.preventDefault();
			var $tr = $(this).parent().parent();
			var new_color = {
				word: $tr.find('#AD_new_color_word').val(),
				color: $tr.find('#AD_new_color_color').val()
			};
			if (new_color.word.trim() !== "" && new_color.color.trim() !== "") {
				colors_data.push(new_color);
				localStorage.setItem("AD_colors_data", JSON.stringify(colors_data));
				refresh_modal_body();
			}
		});
		$("body").on('change', 'input[type="color"]', function(event) {
			if ($(this).data('id') != "new") {
				if ($(this).val().trim() !== "") {
					colors_data[$(this).data('id')].color = $(this).val();
					localStorage.setItem("AD_colors_data", JSON.stringify(colors_data));
					refresh_modal_body();
				}
			}
		});
		$("body").on('click', '*[data-dismiss="modal"]', function(event) {
			if (modal_save_change)
				location.reload();
		});
		gen_modal();
		$("ul.nav.navbar-nav").append($('<li><a href="#">Torrent9++</a></li>').click(e => {
      e.preventDefault();
      $("#myADColorModal").modal('show')
    }));
	}

	// declaration des variable
    var BASE_URL;

	var debug = true;
	var colorblue;

	var index;
	var modal_save_change;
	var colorstat;
	var allTorrentLink;

	var base_link;
	var base_img;


	var added_style;
	var img_link;
	var lien;

	var colors_data ;
	var option;
	var alreadyDownloaded;

	var colorother;
	var colorAlreadyDownloaded;

	// jquery
	var $ = jQuery.noConflict(true);

	if ($("div.header-top a.link_logo").length < 1 && $("div.header-top .logo").length < 1) {
		return;
	}
    BASE_URL = location.origin.replace('ww1', 'www')+'/';
	if (document.querySelector("div#myADColorModal"))
	{
		if (debug) console.log('Torrent9++:Already executed');
		return 1;
	}
	if (debug) console.log('Torrent9++: Execution in progress...');

	// test de compatibilite
	var enableQuery = false;

	var test_link= $('a[href*="/torrent/"]');
	if ($('a[href*="/torrent/"]')) {
		if (debug) console.log('Torrent9++: compatibility testing..');
		$.get($('a[href*="/torrent/"]').first().attr('href'), function () {
			enableQuery = true;
			main();
		}).fail(function (){
			main();
		});
	} else {
		main();
	}

	if (debug) console.log('Torrent9++: Loaded');

})();