Prefer reachable Megaplay CDN sources
This commit is contained in:
@@ -28,6 +28,7 @@ const cheerio = require("cheerio");
|
||||
const baseUrl = "https://anikototv.to";
|
||||
const megaPlayEncKey = "i?LMTAx0Q6,:}50U";
|
||||
const megaPlayEncIv = "W0;27ToaUpl_P%'c";
|
||||
const megaPlaySourceVariants = ["bcdn", "tcdn", ""];
|
||||
|
||||
function decodeMegaPlayEnc(value) {
|
||||
if (!value || typeof value !== "string") return null;
|
||||
@@ -428,21 +429,25 @@ async function processServer(server) {
|
||||
|
||||
const domainName = new URL(iframeUrl).origin;
|
||||
const playerReferer = domainName + "/";
|
||||
const sourcesRes = await global.axios.get(
|
||||
`${domainName}/stream/getSources?id=${playerDbId}${type ? `&type=${encodeURIComponent(type)}` : ""}${cidu ? `&cidu=${encodeURIComponent(cidu)}` : ""}`,
|
||||
{
|
||||
headers: {
|
||||
"X-Requested-With": "XMLHttpRequest",
|
||||
Referer: playerReferer,
|
||||
let sourcesRes = null;
|
||||
let decodedSourcesData = null;
|
||||
for (const variant of megaPlaySourceVariants) {
|
||||
sourcesRes = await global.axios.get(
|
||||
`${domainName}/stream/getSources?id=${playerDbId}${type ? `&type=${encodeURIComponent(type)}` : ""}${cidu ? `&cidu=${encodeURIComponent(cidu)}` : ""}${variant ? `&s=${encodeURIComponent(variant)}` : ""}`,
|
||||
{
|
||||
headers: {
|
||||
"X-Requested-With": "XMLHttpRequest",
|
||||
Referer: playerReferer,
|
||||
},
|
||||
timeout: 7000,
|
||||
},
|
||||
timeout: 7000,
|
||||
},
|
||||
);
|
||||
|
||||
const decodedSourcesData =
|
||||
sourcesRes.data?.sources || sourcesRes.data?.file
|
||||
? sourcesRes.data
|
||||
: decodeMegaPlayEnc(sourcesRes.data?.enc);
|
||||
);
|
||||
decodedSourcesData =
|
||||
sourcesRes.data?.sources || sourcesRes.data?.file
|
||||
? sourcesRes.data
|
||||
: decodeMegaPlayEnc(sourcesRes.data?.enc);
|
||||
if (decodedSourcesData?.sources || decodedSourcesData?.file) break;
|
||||
}
|
||||
|
||||
if (decodedSourcesData && (decodedSourcesData.sources || decodedSourcesData.file)) {
|
||||
const rawSrc = decodedSourcesData.sources || decodedSourcesData.file;
|
||||
@@ -482,6 +487,7 @@ async function processServer(server) {
|
||||
return {
|
||||
url: sUrl,
|
||||
lang: t.label || t.language || "English",
|
||||
referer: playerReferer,
|
||||
};
|
||||
});
|
||||
|
||||
@@ -622,7 +628,7 @@ async function fetchEpisodeSources(episodeIdStr, category = null) {
|
||||
|
||||
module.exports = {
|
||||
name: "anikoto",
|
||||
version: "5.0.4",
|
||||
version: "5.0.5",
|
||||
SearchAnime,
|
||||
AnimeInfo,
|
||||
fetchEpisodeSources,
|
||||
|
||||
Reference in New Issue
Block a user