Skip to content

Instantly share code, notes, and snippets.

@faelp22
Last active August 20, 2025 18:52
Show Gist options
  • Save faelp22/2437b6a7bad0583555a0b427ea862523 to your computer and use it in GitHub Desktop.
Save faelp22/2437b6a7bad0583555a0b427ea862523 to your computer and use it in GitHub Desktop.
(function() {
// Função para converter "mm:ss" em minutos
function timeToMinutes(timeStr) {
if (!timeStr) return 0;
const [min, sec] = timeStr.split(':').map(Number);
return min + (sec / 60);
}
// Formata minutos para "hh:mm"
function formatMinutes(mins) {
const h = Math.floor(mins / 60);
const m = Math.round(mins % 60);
return `${h}h ${m}min`;
}
// Para cada título de capítulo
document.querySelectorAll('p.MuiTypography-root.MuiTypography-body1').forEach(titleEl => {
// Sobe até o bloco do capítulo
const chapterBlock = titleEl.closest('.MuiAccordion-root');
if (!chapterBlock) return;
// Busca todas as aulas desse capítulo
const lessons = chapterBlock.querySelectorAll('.MuiList-root .MuiButtonBase-root');
let totalMinutes = 0;
let remainingMinutes = 0;
lessons.forEach(lesson => {
const timeEl = lesson.querySelector('.contentTime');
if (!timeEl) return;
const minutes = timeToMinutes(timeEl.textContent.trim());
// Verifica se a aula está feita
const main = lesson.querySelector('.accordionIconContainer main');
const isDone = main && main.classList.contains('done');
totalMinutes += minutes;
if (!isDone) remainingMinutes += minutes;
});
// Concatena o resultado ao título do capítulo
titleEl.textContent += ` | Tempo total: ${formatMinutes(totalMinutes)} | Faltam: ${formatMinutes(remainingMinutes)}`;
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment