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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-ani-scraped",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "Scrape anime data from different sources (only anime-sama.fr for the moment)",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -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
- headless: true,
133
- args: ['--no-sandbox', '--disable-setuid-sandbox']
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
- console.log("🌐 [2] Création d'une nouvelle page...");
137
- const page = await browser.newPage();
142
+ console.log("🌐 [2] Création d'une nouvelle page...");
143
+ const page = await browser.newPage();
138
144
 
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
- });
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
- 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
- });
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
- console.log(`🌍 [5] Chargement de la page : ${animeUrl}`);
158
- await page.goto(animeUrl, { waitUntil: 'domcontentloaded', timeout: 20000 });
159
- console.log("✅ [6] Page chargée.");
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
- console.log("⏳ [7] Attente du sélecteur #selectEpisodes...");
162
- await page.waitForSelector('#selectEpisodes', { timeout: 10000 });
163
- console.log("✅ [8] Sélecteur trouvé.");
171
+ const timestamp = Date.now();
172
+ const screenshotPath = path.resolve(`debug-${timestamp}.png`);
173
+ const htmlPath = path.resolve(`page-${timestamp}.html`);
164
174
 
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);
175
+ console.log("📸 [9] Screenshot pour debug...");
176
+ await page.screenshot({ path: screenshotPath });
177
+ console.log("📷 Screenshot enregistré :", screenshotPath);
169
178
 
170
- console.log("📄 [10] Sauvegarde du HTML...");
171
- const html = await page.content();
172
- fs.writeFileSync(path.resolve(`page-${Date.now()}.html`), html);
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
- console.log("🔍 [11] Vérification existence du select...");
175
- const selectExists = await page.$('#selectEpisodes') !== null;
176
- console.log("#selectEpisodes existe :", selectExists);
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
- 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
- );
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
- console.log("📋 [13] Titres récupérés :", titres);
184
- return titres;
193
+ console.log("📋 [13] Titres récupérés :", titres);
194
+ return titres;
185
195
 
186
196
  } catch (error) {
187
- console.error("❌ Erreur dans la récupération des titres :", error);
188
- return [];
197
+ console.error("❌ Erreur dans la récupération des titres :", error);
198
+ return [];
189
199
  } finally {
190
- if (browser) {
191
- console.log("🧹 [14] Fermeture du navigateur...");
192
- await browser.close();
193
- }
194
- console.log("✅ [15] Fin de la fonction getEpisodeTitles.");
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