better-ani-scraped 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scrapers/animesama.js +59 -49
package/package.json
CHANGED
package/scrapers/animesama.js
CHANGED
|
@@ -127,71 +127,81 @@ export async function getSeasons(animeUrl, language = "vostfr") {
|
|
|
127
127
|
export async function getEpisodeTitles(animeUrl) {
|
|
128
128
|
let browser;
|
|
129
129
|
try {
|
|
130
|
+
try {
|
|
130
131
|
console.log("🔧 [1] Lancement de Puppeteer...");
|
|
131
132
|
browser = await puppeteer.launch({
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
headless: true,
|
|
134
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox'],
|
|
134
135
|
});
|
|
136
|
+
console.log("✅ [1.1] Puppeteer lancé avec succès :", !!browser);
|
|
137
|
+
} catch (launchError) {
|
|
138
|
+
console.error("❌ [1.2] Échec du lancement de Puppeteer :", launchError);
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
135
141
|
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
console.log("🌐 [2] Création d'une nouvelle page...");
|
|
143
|
+
const page = await browser.newPage();
|
|
138
144
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
console.log("🔐 [3] Configuration des headers...");
|
|
146
|
+
await page.setExtraHTTPHeaders({
|
|
147
|
+
"User-Agent": "Mozilla/5.0",
|
|
148
|
+
"Accept-Language": "fr-FR,fr;q=0.9,en;q=0.8",
|
|
149
|
+
Referer: animeUrl,
|
|
150
|
+
});
|
|
145
151
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
152
|
+
console.log("🚫 [4] Blocage des ressources inutiles...");
|
|
153
|
+
await page.setRequestInterception(true);
|
|
154
|
+
page.on('request', (req) => {
|
|
155
|
+
const blocked = ['image', 'stylesheet', 'font', 'media'];
|
|
156
|
+
if (blocked.includes(req.resourceType())) {
|
|
157
|
+
req.abort();
|
|
158
|
+
} else {
|
|
159
|
+
req.continue();
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
console.log(`🌍 [5] Chargement de la page : ${animeUrl}`);
|
|
164
|
+
await page.goto(animeUrl, { waitUntil: 'domcontentloaded', timeout: 20000 });
|
|
165
|
+
console.log("✅ [6] Page chargée.");
|
|
156
166
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
167
|
+
console.log("⏳ [7] Attente du sélecteur #selectEpisodes...");
|
|
168
|
+
await page.waitForSelector('#selectEpisodes', { timeout: 10000 });
|
|
169
|
+
console.log("✅ [8] Sélecteur trouvé.");
|
|
160
170
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
171
|
+
const timestamp = Date.now();
|
|
172
|
+
const screenshotPath = path.resolve(`debug-${timestamp}.png`);
|
|
173
|
+
const htmlPath = path.resolve(`page-${timestamp}.html`);
|
|
164
174
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
console.log("📷 Screenshot enregistré :", screenshotPath);
|
|
175
|
+
console.log("📸 [9] Screenshot pour debug...");
|
|
176
|
+
await page.screenshot({ path: screenshotPath });
|
|
177
|
+
console.log("📷 Screenshot enregistré :", screenshotPath);
|
|
169
178
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
179
|
+
console.log("📄 [10] Sauvegarde du HTML...");
|
|
180
|
+
const html = await page.content();
|
|
181
|
+
fs.writeFileSync(htmlPath, html);
|
|
182
|
+
console.log("💾 HTML sauvegardé :", htmlPath);
|
|
173
183
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
184
|
+
console.log("🔍 [11] Vérification existence du select...");
|
|
185
|
+
const selectExists = await page.$('#selectEpisodes') !== null;
|
|
186
|
+
console.log("#selectEpisodes existe :", selectExists);
|
|
177
187
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
188
|
+
console.log("🧠 [12] Récupération des titres d'épisodes...");
|
|
189
|
+
const titres = await page.$$eval('#selectEpisodes option', options =>
|
|
190
|
+
options.map(o => o.textContent.trim())
|
|
191
|
+
);
|
|
182
192
|
|
|
183
|
-
|
|
184
|
-
|
|
193
|
+
console.log("📋 [13] Titres récupérés :", titres);
|
|
194
|
+
return titres;
|
|
185
195
|
|
|
186
196
|
} catch (error) {
|
|
187
|
-
|
|
188
|
-
|
|
197
|
+
console.error("❌ Erreur dans la récupération des titres :", error);
|
|
198
|
+
return [];
|
|
189
199
|
} finally {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
200
|
+
if (browser) {
|
|
201
|
+
console.log("🧹 [14] Fermeture du navigateur...");
|
|
202
|
+
await browser.close();
|
|
203
|
+
}
|
|
204
|
+
console.log("✅ [15] Fin de la fonction getEpisodeTitles.");
|
|
195
205
|
}
|
|
196
206
|
}
|
|
197
207
|
|