Simple •TvTime➡️(Télécharger🔛Regarder)

Objectif Simple TROUVER SERIES (Complete) sur tvtime.com vous pourrez avoir cliquer sur 🔍 pour trouver votre serie est rapidement la regarder ou la télécharger.Sur TV Time pour vérifie si une saison est completement clicker sur " ⟳ " ). Ajout d'un lien (🔍)et simplification d'utilisation. ET ajout d'un boutton pour [TOUT DL] (vérifier bien que vous autoriser l'ouverture de "Fenêtres contextuelles et redirections" sur le site). Et autre filtre(type best quality)...)

当前为 2023-06-10 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Simple •TvTime➡️(Télécharger🔛Regarder)
// @namespace    http://tampermonkey.net/
// @version      1.2.01
// @description  Objectif Simple TROUVER SERIES (Complete) sur tvtime.com vous pourrez avoir cliquer sur 🔍 pour trouver votre serie est rapidement la regarder ou la télécharger.Sur TV Time pour vérifie si une saison est completement clicker sur " ⟳ " ). Ajout d'un lien (🔍)et simplification d'utilisation. ET ajout d'un boutton pour [TOUT DL] (vérifier bien que vous autoriser l'ouverture de "Fenêtres contextuelles et redirections" sur le site).   Et autre filtre(type best quality)...)
// @license      MIT
// @author       DEV314R
// @match        https://www.tvtime.com/fr
// @match        https://www.tvtime.com/fr/*
// @match        https://www.tvtime.com/*/to-watch
// @match        https://dl-protect.link/*
// @match        https://www.zone-telechargement.cyou/?p=serie*
// @match        https://www.zone-telechargement.cyou/?p=manga*
// @match        https://www.zone-telechargement.cyou/?p=autres-videos&search*
// @match        https://www.zone-telechargement.cyou/?search=*
// @icon         https://external-content.duckduckgo.com/ip3/www.tvtime.com.ico
// @run-at       document-start
// @grant        GM_addStyle
// @grant        window.close
// ==/UserScript==

const juste=1//1=seulement les complètes | 0=toutes avec indications
const jour=0//jour en plus après la sortie de la serie avant vérification
let ConfirmerRecherche=0// 1=oui (expérimental) | 0=non
const Temp=1000//Temp en ms (1000ms=1seconde) entre chaque ouverture des liens de [TOUT DL]


if(location.href.search(/www.tvtime.com/gi)>-1){csstime()}
document.addEventListener('DOMContentLoaded',()=>{
 if(location.href.search(/www.tvtime.com/gi)>-1){


const site="www.zone-telechargement.cyou/?p=series&search="


  const a = document.querySelectorAll(".episode-details.poster-details > a[href],#all-shows > section > ul> li > div > div > h2 >a");
  let k = 0;

  const cl=document.querySelectorAll('.episode-details.poster-details > a');
  for(let g=0;g<cl.length;g++) {
   const s=cl[g];
   const ed=s.innerText.replace(/ 🔍|\(.+\)/gi, '+')//.replace(/[,:].*[^.,:]+/g, "").replace(/[,:!]/g, "")
   s.parentNode.parentNode.querySelector(":not(.show-all)").innerHTML+=`<a style="border: 0.2em ridge #ffd700; border-radius: 20%; z-index:99999;" target="_blank" href="https://${site}${ed}">🔍</a>`;
  }

  function re() {
   const i = document.querySelector("#rech");
   const cl = a.length;
   if (k < cl) {
    setTimeout(async()=>{
     await recherche(k);
     k++;
     re();
    }, 10);
    i.value = "⌛";
    i.style.background = "#000";
   } else if (k === cl) {
    i.value = "👌";
    i.removeAttribute("id");
   }}

  if(location.href.search(/www.tvtime.com\/.+\/show\//gi)>-1){
   const d1 = new Date().valueOf();
   const d2 = new Date(document.querySelector(".season-content.active > ul > li:last-child > div > div > a>.episode-air-date").textContent.match(/\d\d\d\d-\d\d-\d\d/gi)[0]).valueOf();
   if (d1 >= d2) {
    document.title = "✅" + document.title.replace(/TV Time - /gi, "");
   } else {
    document.title = "❌" + document.title.replace(/TV Time - /gi, "");
    document.querySelector('.col-sm-2.actions > .row > .active.watched-btn.col-sm-offset-4.col-sm-6 > .icon-tvst-watch').scrollIntoView();
   }
   if(location.href.search(/www.tvtime.com\/.+\/show\/\d+/gi) > -1) {
    const dn=document.querySelector("#top-banner > div > div.info-zone > div > div > h1");
    dn.innerHTML += ('<a style="outline:0.1em ridge #ffd700;outline-radius:20%;" href="https://'+site+dn.innerText.replace(/ 🔍|\(.+\)/gi, "")+'" target="_blank">🔍</a>');
   }
  }else{
   document.querySelector("#home-link").insertAdjacentHTML('beforebegin', '<input id="rech" type="button" value="⟳" style="color:#000;background:#ffd700;border: 0.1em solid #ffd700; border-radius:50%;width:2.3em;height:2.3em;"></input><br>');
  }

  ////
  const OnEvent=(doc)=>{
   return{
    on:(type,selector,callback)=>{
     doc.addEventListener(type,(event)=>{
      if(!event.target.matches(selector))return;
      callback.call(event.target,event);
     },false);
    }}};
  OnEvent(document).on('click','#rech',()=>{
   re()

  })

  async function recherche(num) {
   var s = a[num];
   var url = s.href;
   var dd = s;
   var da = new Date().valueOf();
   var xhr = new XMLHttpRequest();
   xhr.open("GET", url, true);
   xhr.responseType = "document";
   xhr.onload = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
     var response = xhr.responseXML.querySelector('.season-content.active > ul > li:last-child > div > div > a > .episode-air-date');
     var db = new Date(response.textContent.match(/\d\d\d\d-\d\d-\d\d/gi)[0]).valueOf();
     if (da >= (db + (jour * 86400000))) {
      dd.innerText += '✅';
     } else {
      if (juste == 1) {
       dd.parentNode.parentNode.parentNode.removeChild(dd.parentNode.parentNode);
      }
      dd.innerText+='❌';
      dd.innerHTML+=('<br> '+((db-da)/86400000).toFixed(0)+' jours restants avant sortie complète');
     }
     dd.innerText+=response.innerText;
     var EpisodeMax=xhr.responseXML.querySelectorAll('[itemprop="season"].season-content.active > ul > li').length;
     dd.innerHTML+=('<br>nombre d\'épisode: ' + EpisodeMax);
    }
   }
   xhr.send();
  }





 }else if(location.href.search(/dl-protect.+\//gi)>-1){

  GM_addStyle(`body,.urls{color:#ddd;background:#000!important;}
#subButton{color:#000;transform: scale(1.5);}
.navbar,.amigo,footer{display:none!important;}`)
 document.title="⏳"+document.title
 setTimeout(()=>{document.querySelector("#subButton").click()
                 document.title="🖱️"+document.title
                },3000)
 setTimeout(()=>{document.querySelector('[rel="external nofollow"]').click()},100)
 let a=document.addEventListener("mouseenter", fcliq);
 function fcliq(){
  document.title="🤖"+document.title
  setTimeout(()=>{document.querySelector("#subButton").click()},100)}
 var erreur=document.querySelector("#protected-container > div:nth-child(2) > div > ul > li > a")
 if(erreur.innerText.search(/invalide/gi)>-1){
  erreur.click()
 }

}

 if(location.href.search(/(serie|manga)&id/gi)>-1){
  var t= document.querySelector("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(3)")
  var d1=document.querySelector("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(4)").textContent.match(/\d+(?=\sEpisode)/gi)[0]
  var dm=document.querySelector("center > .postinfo").innerText.match(/\d+/gi)
  let match= dm.includes(d1)
  t.textContent=(match?"✅":"❌")+t.textContent;
  if (t.textContent.startsWith("✅")){ajouterBoutonTelechargement();}
 }

function ajouterBoutonTelechargement() {
  var elements = document.querySelectorAll('div[style*="font-weight:bold;color:#c442b5"],div[style*="font-weight:bold;color:#000000"],div[style*="font-weight:bold;color:#fbaf4e"],div[style*="font-weight:bold;color:#f47445"],div[style*="font-weight:bold;color:#5390a8"],div[style*="font-weight:bold;color:#333ba8"],div[style*="font-weight:bold;color:#43a047"]');
  for (var i = 0; i < elements.length; i++) {
    var element = elements[i];
    var nom = element.innerText.trim();
    element.insertAdjacentHTML('afterbegin', '<a id="tdl" style="border: 0.2em ridge #ffd700;padding:0.2em;margin:0.2em;cursor:pointer;"> TOUT DL ' + nom + '</a>');
  }

  var result = document.querySelector("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(4)").textContent.match(/\d+(?=\sEpisode)/gi);
  var finalResult = result ? parseInt(result[0]) : 0;

  const links = document.querySelectorAll(".postinfo > b > a[href]");

  var index = 0;

  function openLink() {
    links[index].click();
    index++;
    setTimeout(() => {
      if (finalResult > index) {
        openLink();
      }
    }, Temp);
  }

  const OnEvent = (doc) => {
    return {
      on: (type, selector, callback) => {
        doc.addEventListener(type, (event) => {
          if (!event.target.matches(selector)) return;
          callback.call(event.target, event);
        }, false);
      }
    };
  };

  OnEvent(document).on('click', '#tdl', () => {
    openLink();
  });
}



 if(location.href.search(/(serie|manga)&id/gi)>-1){
  var siteT="https://www.tvtime.com/fr/"
  var nom=document.querySelector("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(3)").innerText
  document.querySelector("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(3)").insertAdjacentHTML('beforeend', '<a style="border: 0.2em ridge #ffd700; color:ffd700; background:#000; margin-left:0.6em;" target="_blank" href="'+siteT+'##'+nom.replace(/✅|❌/gi,'')+'">TV Time</a><br>')
 }else if (location.href.match(/www.tvtime.com\/fr\/##.+/gi)>-1){
  var recherche=document.querySelector("#global-search-input")
  if (location.href.match(/##.+/gi)){
   var decodedText = decodeURIComponent(location.href.split("##")[1]);
   recherche.value = decodedText;
  }
  //recherche en cours...
 }


 if(location.href.search(/((serie|manga)(s)?)(&(id|s))?/gi)>-1){extractContent();}

function extractContent() {
  // Référence pour les URL
  var urlElements = document.querySelectorAll("#dle-content > div:nth-child(n+4) > div:nth-child(4) div div a[href]");
  // Référence pour le contenu à afficher
  var targetElements = document.querySelectorAll("#dle-content > div:nth-child(n+4) > div:nth-child(4) div div a[href]");

  // Conversion de la référence NodeList en un tableau
  urlElements = Array.from(urlElements);
  targetElements = Array.from(targetElements);

  // Génération d'un tableau de promesses qui exécutent la récupération du contenu à partir de l'URL
  var promises = urlElements.map(function(urlElement, i) {
   var url = urlElement.href;

   return fetch(url)
    .then(function(response) {
    return response.text();
   })
    .then(function(html) {
    // Extraction du contenu
    var parser = new DOMParser();
    var doc = parser.parseFromString(html, "text/html");
    var sourceElement = doc.querySelector("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(4)");
    // Extraction du numéro de l'épisode le plus récent
    var dernierepisodeP2 = Math.max(...(doc.querySelector("center > .postinfo").innerText.match(/\d+/gi)));
    // Renvoi du contenu extrait
    var innerText = sourceElement.innerText.match(/\d+ Episodes/gi);
    if (innerText !== null && parseInt(innerText[0].match(/\d+/gi)[0]) === parseInt(dernierepisodeP2)) {
     // L'épisode est le plus récent, on ajoute un message de mise à jour
     innerText = "✅Complet " + innerText;
    }else if(innerText == null){innerText = "❗␀ " + innerText;}
    else {
     // L'épisode est incomplet, on retire l'élément parent de targetElements
     targetElements[i].parentElement.parentElement.parentElement.parentElement.remove();

    }
    return {
     targetElement: targetElements[i],
     innerText: innerText
    };
   });
  });

  // Attente de la résolution de toutes les promesses avant de mettre à jour les éléments cibles
  Promise.all(promises).then(function(results) {
   results.forEach(function(result) {
    result.targetElement.innerHTML += "<br>" + result.innerText;
   });
  });
 }


function site(href){return location.href.search(href)>-1}

if (ConfirmerRecherche===1){
if(location.href.search(/zone-telechargement.+(&search|search=)/gi)>-1){retirerNonConformes("#story",".cover_infos_title",3).then(function2);

setTimeout(()=>{
   document.title="⏳"+document.title
   if((document.querySelector("#dle-content > div:nth-child(4)").innerText.match(/Aucune fiches trouvées/gi)/*||!document.querySelector("#dle-content > div:nth-child(5) > div:nth-child(4) > div > div > a")*/) && location.href.search(/mangas/gi)>-1){
    window.open(location.href.replace(/series&search/gi,"mangas&search"), "_self");
   }else if((document.querySelector("#dle-content > div:nth-child(4)").innerText.match(/Aucune fiches trouvé/gi)/*||!document.querySelector("#dle-content > div:nth-child(5) > div:nth-child(4) > div > div > a")*/) && location.href.search(/mangas/gi)>-1){
    window.open(location.href.replace(/mangas&search/gi,"autres-videos&search"), "_self");
   }else if((document.querySelector("#dle-content > div:nth-child(4)").innerText.match(/Aucune fiches trouvé/gi)/*||!document.querySelector("#dle-content > div:nth-child(5) > div:nth-child(4) > div > div > a")*/) && location.href.search(/autres-videos/gi)>-1){
  /*  document.title="🙅"+document.title
document.querySelector("body").innerText="Pas trouver fermeture dans 5 Seconde"
setTimeout(function f(){window.close(document.URL)},5000)*/

   }},3000)
}

function retirerNonConformes(element,tableau,profondeur) {
return new Promise(resolve=>{
var ele =document.querySelector(element)
var text=ele.value
var eleconvertiregex=new RegExp(text,"gi");
var tableaux=document.querySelectorAll(tableau)
for(var j=0;j<tableaux.length;j++){
if((tableaux[j].innerText.search(eleconvertiregex))>-1){
}else{
var s=tableaux[j];
for(var i=0;i<profondeur;i++){
s=s.parentNode;
}
s.parentNode.removeChild(s);
}}
resolve();
});
}

function function2(){
var elem4=document.querySelectorAll("#dle-content > div.cover_global:nth-child(n+5)")
if(elem4.length===1){document.querySelector("#dle-content > div.cover_global:nth-child(5) a").click()
}
}

if(location.href.search(/zone-telechargement.+(series&search|(serie|manga)&id=|search=)/gi)>-1){removeLessImportant("#dle-content > div:nth-child(n+5) > div:nth-child(4) > div > div > span > span > b");}
function removeLessImportant(arre) {
  var arr = document.querySelectorAll(arre);
  let best;
  for (let i = 0; i < arr.length; i++) {
   if (arr[i].textContent.includes("4K")) {
    best = arr[i];
    break;
   } else if (arr[i].textContent.includes("(VF HD)")) {
    if (!best || best.textContent.includes("(VF)")) {
     best = arr[i];
    }
   } else if (arr[i].textContent.includes("(VF)")) {
    if (!best) {
     best = arr[i];
    }
   }
  }
  for (let i = 0; i < arr.length; i++) {
   if (arr[i] !== best) {
    var s=arr[i].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode
    s.parentNode.removeChild(s);
   }}}

if(location.href.search(/(serie|film)&id/gi)>-1){clickOnElement2("#dle-content > div.base > div > div.corps > div:nth-child(1) > div:nth-child(4)",/vf|720p|HDRIP|BDRIP/gi,"#dle-content > div.base > div > div.corps > div:nth-child(1) > div.otherversions > a > span > span > b",/\(VF HD\)|1080p/gi)}
function clickOnElement2(element1,txt1, element2,txt2) {
if(document.querySelector(element1).innerText.search(txt1)>-1 && document.querySelector(element2).innerText.search(txt2)>-1) {
document.querySelector(element2).click();}
}

}
if(site(/&search|\?search=|mangas&(page|genre)/gi)){retirer(4,/ VOSTFR |\(VOSTFR HD\)|\(VOSTFR\)|\(Coréen\)|\(Polonais\)|\(Espagnol\)|\(Anglais\)|\(Japonais\)|HDCAM|\(VO\)|^(HDRiP MD|TS( MD)?)$/gi,"span,a,b");}
function retirer(profondeur,filtre,cible){
var ref=filtre;
var cl=document.querySelectorAll(cible);
for(var k=0;k<cl.length;k++){
var match=false;
if(Array.isArray(ref)){
for(var u=0;u<ref.length;u++){
if(cl[k].innerText.match(ref[u])){
match=true;
break;
}}
}else{
match=cl[k].innerText.match(ref);
}
if(match){
var s=cl[k];
for(var i=0;i<profondeur;i++){
s=s.parentNode;}
s.parentNode.removeChild(s);
}}}


})


function csstime(){
 GM_addStyle(`
section{padding:0;margin:0}
html,.alt-block,#content,section,.row,.body-inner,ul.dropdown-menu,.scrollable,.right{color:#ddd!important;background:#000!important;}
.credits > p,.social,#get-the-app{display:none;}
#home {color:#ddd;background:#fbd737;}
h3,.label,.expand-icon{color:#fbd737!important;}
.label :hover,[data-toggle] :hover{color:#000!important;background:#fbd737;}
.rank-sticker{color:#000!important;}
span,h2{color:#fff!important;}
#profile,#to-watch,.main-block{color:#ddd;background:#222;}
h1,h2 a{color:#ddd!important;}
.posters-list>li .poster-details .secondary-link{color:#888}
.dropdown{background:#1a1a1a!important;}
#episode-details.episode.episode-header.banner.change-episode-link{
	width: 43%;
border: 0.1vw solid #fbd737!important;}
#actor-discussion .filters, #profile-discussion .filters, #profile-shows #favorite-shows .progress, #profile-shows #favorite-shows h3, #profile-shows .labels h4, #profile-shows .posters-list>li .poster-details h3 {
display: block;color: #7cdb62!important;}
`)}