Add latest Endpoint

This commit is contained in:
Unagi
2026-04-25 19:56:49 +06:30
committed by GitHub
parent 29e45bc7ca
commit e6800e16ef
+67 -1
View File
@@ -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>} 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;