fix: refactor episode retrieval to support pagination and sort episodes by title

This commit is contained in:
himanshu8443
2025-07-09 15:23:24 +05:30
parent 73d248a662
commit 0ab8e300fb
4 changed files with 68 additions and 38 deletions

View File

@@ -36,7 +36,6 @@ const getEpisodes = function (_a) {
}, },
}); });
const data = res.data; const data = res.data;
console.log("nfEpisodes", data);
(_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => { (_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => {
episodeList.push({ episodeList.push({
title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")), title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")),
@@ -50,7 +49,11 @@ const getEpisodes = function (_a) {
hasMorePages = false; hasMorePages = false;
} }
} }
return episodeList; return episodeList.sort((a, b) => {
const aNum = parseInt(a.title.replace("Episode ", ""));
const bNum = parseInt(b.title.replace("Episode ", ""));
return aNum - bNum;
});
} }
catch (err) { catch (err) {
console.error("nfGetEpisodes error", err); console.error("nfGetEpisodes error", err);

View File

@@ -14,7 +14,7 @@ const getEpisodes = function (_a) {
return __awaiter(this, arguments, void 0, function* ({ url: link, providerContext, }) { return __awaiter(this, arguments, void 0, function* ({ url: link, providerContext, }) {
var _b; var _b;
const { getBaseUrl, axios } = providerContext; const { getBaseUrl, axios } = providerContext;
let providerValue = "primeMirror"; let providerValue = "netflixMirror";
try { try {
const baseUrl = yield getBaseUrl("nfMirror"); const baseUrl = yield getBaseUrl("nfMirror");
const url = `${baseUrl}${providerValue === "netflixMirror" const url = `${baseUrl}${providerValue === "netflixMirror"
@@ -24,7 +24,11 @@ const getEpisodes = function (_a) {
"&t=" + "&t=" +
Math.round(new Date().getTime() / 1000); Math.round(new Date().getTime() / 1000);
console.log("nfEpisodesUrl", url); console.log("nfEpisodesUrl", url);
const res = yield axios.get(url, { let page = 1;
let hasMorePages = true;
const episodeList = [];
while (hasMorePages) {
const res = yield axios.get(url + `&page=${page}`, {
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
@@ -32,15 +36,24 @@ const getEpisodes = function (_a) {
}, },
}); });
const data = res.data; const data = res.data;
console.log("nfEpisodes", data);
const episodeList = [];
(_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => { (_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => {
episodeList.push({ episodeList.push({
title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")), title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")),
link: episode === null || episode === void 0 ? void 0 : episode.id, link: episode === null || episode === void 0 ? void 0 : episode.id,
}); });
}); });
return episodeList; if (data === null || data === void 0 ? void 0 : data.nextPageShow) {
page++;
}
else {
hasMorePages = false;
}
}
return episodeList.sort((a, b) => {
const aNum = parseInt(a.title.replace("Episode ", ""));
const bNum = parseInt(b.title.replace("Episode ", ""));
return aNum - bNum;
});
} }
catch (err) { catch (err) {
console.error("nfGetEpisodes error", err); console.error("nfGetEpisodes error", err);

View File

@@ -34,7 +34,6 @@ export const getEpisodes = async function ({
}, },
}); });
const data = res.data; const data = res.data;
console.log("nfEpisodes", data);
data?.episodes?.map((episode: any) => { data?.episodes?.map((episode: any) => {
episodeList.push({ episodeList.push({
@@ -49,7 +48,11 @@ export const getEpisodes = async function ({
} }
} }
return episodeList; return episodeList.sort((a, b) => {
const aNum = parseInt(a.title.replace("Episode ", ""));
const bNum = parseInt(b.title.replace("Episode ", ""));
return aNum - bNum;
});
} catch (err) { } catch (err) {
console.error("nfGetEpisodes error", err); console.error("nfGetEpisodes error", err);
return []; return [];

View File

@@ -8,7 +8,7 @@ export const getEpisodes = async function ({
providerContext: ProviderContext; providerContext: ProviderContext;
}): Promise<EpisodeLink[]> { }): Promise<EpisodeLink[]> {
const { getBaseUrl, axios } = providerContext; const { getBaseUrl, axios } = providerContext;
let providerValue = "primeMirror"; let providerValue = "netflixMirror";
try { try {
const baseUrl = await getBaseUrl("nfMirror"); const baseUrl = await getBaseUrl("nfMirror");
const url = const url =
@@ -21,7 +21,11 @@ export const getEpisodes = async function ({
"&t=" + "&t=" +
Math.round(new Date().getTime() / 1000); Math.round(new Date().getTime() / 1000);
console.log("nfEpisodesUrl", url); console.log("nfEpisodesUrl", url);
const res = await axios.get(url, { let page = 1;
let hasMorePages = true;
const episodeList: EpisodeLink[] = [];
while (hasMorePages) {
const res = await axios.get(url + `&page=${page}`, {
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
"User-Agent": "User-Agent":
@@ -30,9 +34,6 @@ export const getEpisodes = async function ({
}, },
}); });
const data = res.data; const data = res.data;
console.log("nfEpisodes", data);
const episodeList: EpisodeLink[] = [];
data?.episodes?.map((episode: any) => { data?.episodes?.map((episode: any) => {
episodeList.push({ episodeList.push({
@@ -40,8 +41,18 @@ export const getEpisodes = async function ({
link: episode?.id, link: episode?.id,
}); });
}); });
if (data?.nextPageShow) {
page++;
} else {
hasMorePages = false;
}
}
return episodeList; return episodeList.sort((a, b) => {
const aNum = parseInt(a.title.replace("Episode ", ""));
const bNum = parseInt(b.title.replace("Episode ", ""));
return aNum - bNum;
});
} catch (err) { } catch (err) {
console.error("nfGetEpisodes error", err); console.error("nfGetEpisodes error", err);
return []; return [];