From e6800e16ef4083762833596b88a167f8fab56bd1 Mon Sep 17 00:00:00 2001 From: Unagi <115041575+N-SUDY@users.noreply.github.com> Date: Sat, 25 Apr 2026 19:56:49 +0630 Subject: [PATCH] Add latest Endpoint --- lib/animepahe.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/lib/animepahe.js b/lib/animepahe.js index e383825..433d1e9 100644 --- a/lib/animepahe.js +++ b/lib/animepahe.js @@ -126,6 +126,9 @@ class AnimePahe { if (context === 'ids') { return 'Anime session not found. Use /search first to get a valid session id.'; } + if (context === 'latest') { + return 'Unable to fetch latest episodes right now.'; + } } if (statusCode === 403 && /ddos-guard|checking your browser|cloudflare/i.test(rawMessage)) { @@ -260,6 +263,70 @@ class AnimePahe { } } + /** + * Get latest airing episodes + * @param {number} page - Page number + * @returns {Promise} Array of latest airing episodes + */ + async getLatest(page = 1) { + try { + const latestUrl = `${this.base}/api?m=airing&page=${page}`; + const response = await cloudscraper.get(latestUrl, { + headers: this.getHeaders() + }); + + const data = this._parseJsonResponse(response); + const latestRows = this._extractArray(data, ['data', 'results', 'items', 'episodes', 'list']); + const results = []; + + for (const item of latestRows) { + const animeSession = + item.anime_session || + item.session || + item.slug || + item.anime?.session || + item.anime?.slug || + null; + + const episodeSession = + item.episode_session || + item.release_session || + item.episode?.session || + item.session || + null; + + const title = + item.anime_title || + item.title || + item.anime?.title || + item.anime?.name || + null; + + const urlValue = + item.url || + (animeSession ? `${this.base}/anime/${animeSession}` : null); + + results.push({ + id: item.id || item.release_id || item.episode_id || null, + title, + url: urlValue, + episode: Number(item.episode ?? item.number ?? item.ep ?? item.ep_num ?? null), + episode_title: + item.episode_title || + item.title || + `Episode ${item.episode ?? item.number ?? ''}`.trim(), + snapshot: item.snapshot || item.thumbnail || item.image || null, + anime_session: animeSession, + episode_session: episodeSession + }); + } + + return results; + } catch (error) { + throw new Error(`Failed to get latest episodes: ${this._formatUpstreamError('latest', error)}`); + } + } + /** * Get streaming sources for an episode * @param {string} animeSession - Anime session ID @@ -501,7 +568,6 @@ ${transformedScript} }); }); } - } module.exports = AnimePahe;