- trop de trucs d'un coup... je vais faire attention ensuite ^^'
This commit is contained in:
BIN
public/img/mangarr_logo.png
Normal file
BIN
public/img/mangarr_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 103 KiB |
89
public/puppeteer-script.js
Normal file
89
public/puppeteer-script.js
Normal 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
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user