Script de automatización para reproducción de cursos en plataforma Zhihuishu

Para automatizar la reproducción de cursos en la versión web de Zhihuishu, se pueden utilizar scripts ejecutados desde la consola de desarrollo del navegador. A continuación se presentan dos variantes funcionales.

Funcionalidades implementadas

  • Velocidad de reproducción ajustada a 1.5x (máximo disponible)
  • Audio silanciado automáticamente
  • Avance automático al siguiente video al completar el actual
  • Cierre automático de ventanas emergentes de preguntas

Procedimiento de ejecución

Acceda a la plataforma web de Zhihuishu, presione F12 para abrir las herramientas de desarrollo, seleccione la pestaña Console (Consola), pegue el código deseado y presione Enter.

Variante 1: Enfoque basado en intervalos

// Silenciar audio
document.querySelector('.volumeIcon').click();

// Configurar velocidad máxima
document.getElementsByClassName('speedTab15')[0].click();

// Bucle de verificación cada 3 segundos
const verificador = setInterval(() => {
    const barraProgreso = document.getElementsByClassName('passTime')[0];
    
    if (barraProgreso.style.width === '100%') {
        // Transición al siguiente video tras 1 segundo
        setTimeout(() => {
            document.getElementById('nextBtn').click();
        }, 1000);
        
        // Reaplicar configuraciones tras carga del nuevo video
        setTimeout(() => {
            document.querySelector('.volumeIcon').click();
            document.getElementsByClassName('speedTab15')[0].click();
        }, 4000);
    }
    
    // Detección y cierre de pop-ups de evaluación
    const botonPlay = document.getElementsByClassName('bigPlayButton pointer')[0];
    if (botonPlay && botonPlay.style.display === 'block') {
        const opciones = document.getElementsByClassName('topic-item');
        if (opciones.length > 0) opciones[0].click();
        
        const dialogos = document.getElementsByClassName('el-dialog__footer');
        if (dialogos.length > 5) dialogos[5].click();
        
        const cerrar = document.getElementsByClassName('el-dialog__headerbtn');
        if (cerrar.length > 5) cerrar[5].click();
        
        const playBtn = document.getElementsByClassName('playButton');
        if (playBtn.length > 0) playBtn[0].click();
    }
}, 3000);

Variante 2: Enfoque basado en eventos DOM

const contenedor = $("body");
const listaVideos = $(".catalogue_ul1 li[id*=video-]");
let contadorPopups = 1;
let contadorVideos = 1;

listaVideos.css("color", "blue");
console.log(`Se detectaron ${listaVideos.length} secciones, marcadas en azul`);

// Configuración inicial tras 3 segundos
setTimeout(() => {
    $('.speedTab15').click();
    $('.volumeIcon').click();
    console.log("Configuración aplicada: silencio + 1.5x");
}, 3000);

// Escucha de cambios en el DOM
contenedor.on("DOMNodeInserted", function(evento) {
    const texto = evento.target.textContent;
    
    if (texto === "关闭") {
        console.log(`Popup detectado #${contadorPopups}`);
        setTimeout(() => {
            const iframe = document.getElementById("tmDialog_iframe");
            const opciones = iframe.contentWindow.document
                .getElementsByClassName("answerOption")[0]
                .getElementsByTagName("input")[0];
            opciones.click();
            $(".popbtn_cancel").click();
            console.log("Popup cerrado");
        }, 3000);
        contadorPopups++;
    } else if (texto.includes("100%")) {
        console.log("Video completado, cambiando al siguiente");
        $('.next_lesson_bg').find('a').trigger('click');
        
        setTimeout(() => {
            $('.volumeIcon').click();
            $('.speedTab15').click();
            console.log("Configuración reaplicada");
        }, 6000);
        
        contadorVideos++;
        console.log(`Reproduciendo video #${contadorVideos}`);
    }
});

Consideraciones importantes

  • Al refrescar la página o navegar manualmente, el script se detiene y debe ejecutarse nuevamente.
  • Se recomienda utilizar Chrome o Firefox. En navegadores basados en Chromium, activar el modo de velocidad extrema para mayor estabilidad.
  • Se sugiere procesar un capítulo por sesión, sin exceder las cuatro horas continuas para evitar bloqueos del sistema.
  • Entre capítulos puede existir un bloqueo de navegación automática por mecanismos anti-automatización de la plataforma, requiriendo avance manual.

Etiquetas: Zhihuishu JavaScript DOM automatización consola navegador

Publicado el 7-15 10:23