Torrent9++

Make Torrent9 Better

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==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');

})();