Files
rm-KSALDIS-DT/_hist/descargar-curso/download_faltantes.mjs
T

65 lines
4.0 KiB
JavaScript

import { chromium } from "playwright";
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const SESSION_FILE = path.join(__dirname, "session.json");
const FALTANTES = [
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50320/show?me=140219", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50320.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/46541/show?me=140221", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_46541.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50142/show?me=140224", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50142.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50145/show?me=140225", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50145.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50144/show?me=140226", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50144.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50139/show?me=140234", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50139.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50140/show?me=140236", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50140.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50143/show?me=140237", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50143.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50141/show?me=140238", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50141.pdf" },
];
(async () => {
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ storageState: fs.existsSync(SESSION_FILE) ? SESSION_FILE : undefined, acceptDownloads: true });
const page = await context.newPage();
console.log("Chequeando sesión...");
await page.goto("https://voley.onlineeducation.center/es/campus/student/training/e/14197");
if (page.url().includes("login")) {
console.log("Sesion expirada, iniciando login...");
await page.waitForSelector("#login-email", { timeout: 15000 });
await page.fill("#login-email", "saldis_karina@hotmail.com");
await page.fill("#login-password", "Martes13#");
await page.click("#btn-login");
await page.waitForURL("**/es/campus/**", { timeout: 30000 });
console.log("Login exitoso, guardando sesión...");
await context.storageState({ path: SESSION_FILE });
}
for (const f of FALTANTES) {
const fullDest = path.join(__dirname, f.dest);
if (fs.existsSync(fullDest)) {
console.log("Ya existe:", f.dest);
continue;
}
console.log("Navegando a", f.url);
try {
const [download] = await Promise.all([
page.waitForEvent('download', { timeout: 10000 }),
page.goto(f.url).catch(e => {}) // catch the 'download is starting' navigation error
]);
await download.saveAs(fullDest);
console.log("Guardado como descarga:", fullDest);
} catch (e) {
// No disparó descarga, debe ser una página
try {
await page.goto(f.url, { waitUntil: 'networkidle', timeout: 10000 });
} catch (e2) {}
await page.pdf({ path: fullDest, format: 'A4' });
console.log("Guardado como PDF renderizado:", fullDest);
}
}
await browser.close();
})();