better-ani-scraped 1.2.1 → 1.2.2
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 +55 -35
package/package.json
CHANGED
package/scrapers/animesama.js
CHANGED
|
@@ -125,56 +125,76 @@ export async function getSeasons(animeUrl, language = "vostfr") {
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
export async function getEpisodeTitles(animeUrl) {
|
|
128
|
-
const puppeteer = await import('puppeteer');
|
|
129
128
|
let browser;
|
|
130
|
-
|
|
131
129
|
try {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
130
|
+
console.log("🔧 [1] Lancement de Puppeteer...");
|
|
131
|
+
browser = await puppeteer.launch({
|
|
132
|
+
headless: true,
|
|
133
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
134
|
+
});
|
|
136
135
|
|
|
137
|
-
|
|
136
|
+
console.log("🌐 [2] Création d'une nouvelle page...");
|
|
137
|
+
const page = await browser.newPage();
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
console.log("🔐 [3] Configuration des headers...");
|
|
140
|
+
await page.setExtraHTTPHeaders({
|
|
141
|
+
"User-Agent": "Mozilla/5.0",
|
|
142
|
+
"Accept-Language": "fr-FR,fr;q=0.9,en;q=0.8",
|
|
143
|
+
Referer: animeUrl,
|
|
144
|
+
});
|
|
142
145
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
console.log("🚫 [4] Blocage des ressources inutiles...");
|
|
147
|
+
await page.setRequestInterception(true);
|
|
148
|
+
page.on('request', (req) => {
|
|
149
|
+
const blocked = ['image', 'stylesheet', 'font', 'media'];
|
|
150
|
+
if (blocked.includes(req.resourceType())) {
|
|
151
|
+
req.abort();
|
|
152
|
+
} else {
|
|
153
|
+
req.continue();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
149
156
|
|
|
150
|
-
|
|
151
|
-
|
|
157
|
+
console.log(`🌍 [5] Chargement de la page : ${animeUrl}`);
|
|
158
|
+
await page.goto(animeUrl, { waitUntil: 'domcontentloaded', timeout: 20000 });
|
|
159
|
+
console.log("✅ [6] Page chargée.");
|
|
152
160
|
|
|
153
|
-
|
|
154
|
-
await page.waitForSelector('#selectEpisodes', { timeout:
|
|
155
|
-
|
|
156
|
-
console.warn("⚠️ Sélecteur #selectEpisodes introuvable :", waitError.message);
|
|
161
|
+
console.log("⏳ [7] Attente du sélecteur #selectEpisodes...");
|
|
162
|
+
await page.waitForSelector('#selectEpisodes', { timeout: 10000 });
|
|
163
|
+
console.log("✅ [8] Sélecteur trouvé.");
|
|
157
164
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
165
|
+
console.log("📸 [9] Screenshot pour debug...");
|
|
166
|
+
const screenshotPath = path.resolve(`debug-${Date.now()}.png`);
|
|
167
|
+
await page.screenshot({ path: screenshotPath });
|
|
168
|
+
console.log("📷 Screenshot enregistré :", screenshotPath);
|
|
162
169
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
170
|
+
console.log("📄 [10] Sauvegarde du HTML...");
|
|
171
|
+
const html = await page.content();
|
|
172
|
+
fs.writeFileSync(path.resolve(`page-${Date.now()}.html`), html);
|
|
173
|
+
|
|
174
|
+
console.log("🔍 [11] Vérification existence du select...");
|
|
175
|
+
const selectExists = await page.$('#selectEpisodes') !== null;
|
|
176
|
+
console.log("#selectEpisodes existe :", selectExists);
|
|
177
|
+
|
|
178
|
+
console.log("🧠 [12] Récupération des titres d'épisodes...");
|
|
179
|
+
const titres = await page.$$eval('#selectEpisodes option', options =>
|
|
180
|
+
options.map(o => o.textContent.trim())
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
console.log("📋 [13] Titres récupérés :", titres);
|
|
184
|
+
return titres;
|
|
166
185
|
|
|
167
|
-
console.log(`✅ ${titres.length} titres récupérés`);
|
|
168
|
-
return titres;
|
|
169
186
|
} catch (error) {
|
|
170
|
-
|
|
171
|
-
|
|
187
|
+
console.error("❌ Erreur dans la récupération des titres :", error);
|
|
188
|
+
return [];
|
|
172
189
|
} finally {
|
|
173
|
-
|
|
190
|
+
if (browser) {
|
|
191
|
+
console.log("🧹 [14] Fermeture du navigateur...");
|
|
192
|
+
await browser.close();
|
|
193
|
+
}
|
|
194
|
+
console.log("✅ [15] Fin de la fonction getEpisodeTitles.");
|
|
174
195
|
}
|
|
175
196
|
}
|
|
176
197
|
|
|
177
|
-
|
|
178
198
|
export async function getEmbed(animeUrl, hostPriority = ["vidmoly"]) {
|
|
179
199
|
const res = await axios.get(animeUrl, {
|
|
180
200
|
headers: getHeaders(animeUrl.split("/").slice(0, 5).join("/")),
|