better-ani-scraped 1.2.0 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "better-ani-scraped",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Scrape anime data from different sources (only anime-sama.fr for the moment)",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -125,35 +125,74 @@ export async function getSeasons(animeUrl, language = "vostfr") {
125
125
  }
126
126
 
127
127
  export async function getEpisodeTitles(animeUrl) {
128
- let browser;
129
- try {
130
- browser = await puppeteer.launch({
131
- headless: true,
132
- args: ['--no-sandbox', '--disable-setuid-sandbox']
133
- });
134
- const page = await browser.newPage();
135
- await page.setRequestInterception(true);
136
- page.on('request', (req) => {
137
- const blocked = ['image', 'stylesheet', 'font', 'media'];
138
- if (blocked.includes(req.resourceType())) {
139
- req.abort();
140
- } else {
141
- req.continue();
142
- }
143
- });
144
- await page.goto(animeUrl, { waitUntil: 'domcontentloaded' });
145
- await page.waitForSelector('#selectEpisodes');
146
- // Récupération des titres d'épisodes
147
- const titres = await page.$$eval('#selectEpisodes option', options =>
148
- options.map(o => o.textContent.trim())
149
- );
150
- return titres;
151
- } catch (error) {
152
- console.error('Erreur dans la récupération des titres:', error);
153
- return [];
154
- } finally {
155
- if (browser) await browser.close();
156
- }
128
+ let browser;
129
+ try {
130
+ console.log("🔧 [1] Lancement de Puppeteer...");
131
+ browser = await puppeteer.launch({
132
+ headless: true,
133
+ args: ['--no-sandbox', '--disable-setuid-sandbox']
134
+ });
135
+
136
+ console.log("🌐 [2] Création d'une nouvelle page...");
137
+ const page = await browser.newPage();
138
+
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
+
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
+ });
156
+
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.");
160
+
161
+ console.log("⏳ [7] Attente du sélecteur #selectEpisodes...");
162
+ await page.waitForSelector('#selectEpisodes', { timeout: 10000 });
163
+ console.log("✅ [8] Sélecteur trouvé.");
164
+
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);
169
+
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;
185
+
186
+ } catch (error) {
187
+ console.error("❌ Erreur dans la récupération des titres :", error);
188
+ return [];
189
+ } 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.");
195
+ }
157
196
  }
158
197
 
159
198
  export async function getEmbed(animeUrl, hostPriority = ["vidmoly"]) {