diff --git a/animepahe/animepahe.js b/animepahe/animepahe.js index c88de8d..51b0ed3 100644 --- a/animepahe/animepahe.js +++ b/animepahe/animepahe.js @@ -74,20 +74,31 @@ async function extractEpisodes(url) { const lastPage = data1.last_page; if (lastPage > 1) { + const pagePromises = []; for (let p = 2; p <= lastPage; p++) { - let pageData = null; - let retries = 0; - while (!pageData && retries < 3) { - try { - const apiUrl = `https://animepahe.si/api?m=release&id=${id}&sort=episode_asc&page=${p}`; - const response = await ddosInterceptor.fetchWithBypass(apiUrl); - const dataText = await response.text(); - pageData = JSON.parse(dataText); - } catch (pageErr) { - retries++; + pagePromises.push((async (pageNum) => { + let pageData = null; + let retries = 0; + while (!pageData && retries < 3) { + try { + const apiUrl = `https://animepahe.si/api?m=release&id=${id}&sort=episode_asc&page=${pageNum}`; + const response = await ddosInterceptor.fetchWithBypass(apiUrl); + const dataText = await response.text(); + pageData = JSON.parse(dataText); + } catch (pageErr) { + retries++; + if (retries < 3) { + await new Promise(resolve => setTimeout(resolve, 500)); + } + } } - } - if (pageData) { + return pageData; + })(p)); + } + + const allPagesData = await Promise.all(pagePromises); + for (const pageData of allPagesData) { + if (pageData && pageData.data) { for (const item of pageData.data) { results.push({ href: `https://animepahe.si/play/${id}/${item.session}`,