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,23 +24,36 @@ 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;
headers: { let hasMorePages = true;
"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",
"Accept-Language": "en-US,en;q=0.9",
},
});
const data = res.data;
console.log("nfEpisodes", data);
const episodeList = []; const episodeList = [];
(_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => { while (hasMorePages) {
episodeList.push({ const res = yield axios.get(url + `&page=${page}`, {
title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")), headers: {
link: episode === null || episode === void 0 ? void 0 : episode.id, "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",
"Accept-Language": "en-US,en;q=0.9",
},
}); });
const data = res.data;
(_b = data === null || data === void 0 ? void 0 : data.episodes) === null || _b === void 0 ? void 0 : _b.map((episode) => {
episodeList.push({
title: "Episode " + (episode === null || episode === void 0 ? void 0 : episode.ep.replace("E", "")),
link: episode === null || episode === void 0 ? void 0 : episode.id,
});
});
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;
}); });
return episodeList;
} }
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,27 +21,38 @@ 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;
headers: { let hasMorePages = true;
"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",
"Accept-Language": "en-US,en;q=0.9",
},
});
const data = res.data;
console.log("nfEpisodes", data);
const episodeList: EpisodeLink[] = []; const episodeList: EpisodeLink[] = [];
while (hasMorePages) {
data?.episodes?.map((episode: any) => { const res = await axios.get(url + `&page=${page}`, {
episodeList.push({ headers: {
title: "Episode " + episode?.ep.replace("E", ""), "Content-Type": "application/json",
link: episode?.id, "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",
"Accept-Language": "en-US,en;q=0.9",
},
}); });
}); const data = res.data;
return episodeList; data?.episodes?.map((episode: any) => {
episodeList.push({
title: "Episode " + episode?.ep.replace("E", ""),
link: episode?.id,
});
});
if (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);
return []; return [];