nautiljon-total-time

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.


Install this script?
  1. // ==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]) ;}}})();