- trop de trucs d'un coup... je vais faire attention ensuite ^^'

This commit is contained in:
Jérémy Guillot
2024-06-10 13:57:50 +02:00
parent 9595831aa3
commit c46e1a0a5c
69 changed files with 4004 additions and 385 deletions

BIN
public/img/mangarr_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -0,0 +1,89 @@
const puppeteer = require('puppeteer');
(async () => {
try {
// Récupérer les paramètres de la ligne de commande
const [url, imageSelector, nextButtonSelector] = process.argv.slice(2);
console.log('URL:', url);
console.log('Image Selector:', imageSelector);
console.log('Next Button Selector:', nextButtonSelector);
const browser = await puppeteer.launch({
headless: true,
executablePath: process.env.CHROME_BIN || null,
args: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage']
});
console.log('Browser launched');
const page = await browser.newPage();
console.log('New page created');
await page.goto(url, {waitUntil: 'networkidle2'});
console.log('Page loaded');
// Function to scroll to the bottom of the page
async function autoScroll(page){
await page.evaluate(async () => {
await new Promise((resolve, reject) => {
var totalHeight = 0;
var distance = 100;
var timer = setInterval(() => {
var scrollHeight = document.body.scrollHeight;
window.scrollBy(0, distance);
totalHeight += distance;
if(totalHeight >= scrollHeight){
clearInterval(timer);
resolve();
}
}, 100);
});
});
}
// Attendre que le conteneur des images soit présent pour s'assurer que la page est complètement chargée
await page.waitForSelector(imageSelector);
console.log('Image selector found');
const imageUrls = new Set(); // Utiliser un Set pour éviter les doublons
// let previousImageUrl = null;
while (true) {
console.log('Fetching images');
const pageImageUrls = await page.$$eval(imageSelector, imgs =>
imgs.map(img => img.getAttribute('src') || img.getAttribute('data-src'))
);
console.log('Page image URLs:', pageImageUrls);
pageImageUrls.forEach(url => {
if (!imageUrls.has(url)) {
imageUrls.add(url);
console.log('Image URL:', url);
}
});
// Cliquer sur le bouton suivant
const nextButton = await page.$(nextButtonSelector);
console.log('Next button');
if (!nextButton) {
console.log(page);
break; // Sortir de la boucle si le bouton suivant n'existe pas
}
console.log('Clicking next button');
await nextButton.click();
// await page.waitForTimeout(1000); // Attendre 1 seconde
await page.waitForSelector(imageSelector);
}
console.log('Image URLs:', JSON.stringify(Array.from(imageUrls)));
await browser.close();
} catch (error) {
console.error('Error:', error);
process.exit(1); // Exit with a failure code
}
})();