Dans le bloc-notes, calcule la durée totale de la liste des animes et dramas sélectionnés ainsi que la durée totale par série. Calcule également la durée totale des séries sur leur fiche.
- // ==UserScript==// @name nautiljon-total-time// @namespace http://tampermonkey.net/// @version 0.5.2// @description Dans le bloc-notes, calcule la durée totale de la liste des animes et dramas sélectionnés ainsi que la durée totale par série. Calcule également la durée totale des séries sur leur fiche.// @author Ed38// @license MIT// @match https://www.nautiljon.com/membre/a-voir,*,anime.html*// @match https://www.nautiljon.com/membre/a-voir,*,drama.html*// @match https://www.nautiljon.com/animes/*// @match https://www.nautiljon.com/dramas/*// @icon https://www.google.com/s2/favicons?sz=64&domain=nautiljon.com// @grant GM_addStyle// @noframes// ==/UserScript==(function() {'use strict';const testListURL = /^https:\/\/www.nautiljon.com\/membre\/a-voir,.*/ ;if (testListURL.test(document.location)) {document.querySelector("input[data-id='listingListe']").addEventListener("keyup", totalTimeCounter,false);totalTimeCounter();}else {let numberOfEpisodesSpan = document.querySelector('span[itemprop = "numberOfEpisodes"]')let numberOfEpisodes = numberOfEpisodesSpan.textContent ;if(~~numberOfEpisodes > 1){let episodeDuration = numberOfEpisodesSpan.nextSibling.textContent.replace(/\s+/g, '').replace(/^.*[x×]/,'');let hours = 0;let minutes = 0;// hours & minutesif (episodeDuration.match(/^(\d+)h.*/)) {hours = episodeDuration.replace(/^(\d+)h.*/,"$1") ;minutes = episodeDuration.replace(/^\d+h/,"") ;}else{hours = 0;if (episodeDuration.match(/^(\d+)min.*/)) {minutes = episodeDuration.replace(/^(\d+)min.*/,"$1") ;}else{minutes = 0;}}let totalDuration = ~~numberOfEpisodes * (~~hours * 60 + ~~minutes) ;let itemHours = Math.trunc(totalDuration / 60) ;let itemMinutes = totalDuration % 60 ;numberOfEpisodesSpan.parentNode.insertAdjacentHTML('beforeend', '<span class="infos_small"> (' + itemHours + ' h ' + itemMinutes.toString().padStart(2,"0") + ' min)</span>') ;}}function totalTimeCounter() {GM_addStyle('@media (min-width:1025px) {.total-time::before {content:"\\A"; white-space: pre;}}');let durationLabel = "Temps total : " ;let episodesLabel = "Épisodes à voir : " ;let counter = 0 ;let episodesCounter = 0 ;let durationNode ;let durationText ;let itemTotal = 0 ;let itemHours = 0 ;let itemMinutes = 0 ;let durationsNode = document.getElementsByClassName("t_progression") ;for (var i = 0 ; i < durationsNode.length; i++) {let numberOfEpisodes = 0 ;let hours = 0 ;let minutes = 0 ;if (durationsNode[i].checkVisibility()) {durationText = durationsNode[i].textContent;durationText = durationText.replace(/\s+/g, ''); // remove whitespaces// Number of episodesif (durationText.match(/^(\d+)x.*/)) {numberOfEpisodes = durationText.replace(/^(\d+)x.*/,"$1");durationText = durationText.replace(/^\d+x/,"");}else {numberOfEpisodes = 1;}// hours & minutesif (durationText.match(/^(\d+)h.*/)) {hours = durationText.replace(/^(\d+)h.*/,"$1") ;minutes = durationText.replace(/^\d+h/,"") ;}else {hours = 0;if (durationText.match(/^(\d+)min.*/)) {minutes = durationText.replace(/^(\d+)min.*/,"$1") ;}else {minutes = 0;}}}itemTotal = ~~numberOfEpisodes * (~~hours * 60 + ~~minutes) ;counter=counter+itemTotal ;if (numberOfEpisodes > 1){itemHours = Math.trunc(itemTotal / 60) ;itemMinutes = itemTotal % 60 ;let itemTotalText = '(' + itemHours + ' h ' + itemMinutes.toString().padStart(2,"0") + ' min)' ;let itemTotalDisplay = durationsNode[i].querySelector('[data-id="itemTotalDuration"]') ;if (itemTotalDisplay) {itemTotalDisplay.innerHTML=itemTotalText;}else {durationsNode[i].insertAdjacentHTML('beforeend', ' <span class="infos_small total-time" data-id="itemTotalDuration">' + itemTotalText + '</span>') ;}}episodesCounter = ~~episodesCounter + ~~numberOfEpisodes ;}let counterHours = Math.trunc(counter / 60);let counterMinutes = counter % 60 ;let totalDurationText = episodesLabel + "<strong>" + episodesCounter.toLocaleString() + "</strong>. " + durationLabel + "<strong>" + counterHours.toLocaleString() + " h " + counterMinutes.toString().padStart(2,"0") + " min</strong>";let totalDisplay = document.querySelector('[data-id="totalDuration"]');if (totalDisplay) {totalDisplay.innerHTML = totalDurationText ;}else {let statsStatut = document.getElementsByClassName("stats_statut") ;let counterDiv = document.createElement("div") ;counterDiv.setAttribute("class","stats_prix") ;counterDiv.dataset.id="totalDuration";counterDiv.innerHTML = totalDurationText ;statsStatut[0].parentNode.insertBefore(counterDiv,statsStatut[0]) ;}}})();