Update anime/hianime/source.js

This commit is contained in:
2025-12-24 16:02:59 +01:00
parent dfced2ff0b
commit 8826f2b8fe

View File

@@ -53,7 +53,7 @@ class HiAnime {
fetchAjax(url, extraHeaders) { fetchAjax(url, extraHeaders) {
console.log("[HiAnime] fetchAjax url=", url); console.log("[HiAnime] fetchAjax url=", url);
const headers = Object.assign( const headers = Object.assign(
{ "X-Requested-With": "XMLHttpRequest" }, { "X-Requested-With": "XMLHttpRequest", "Referer": this.baseUrl + "/" },
extraHeaders || {} extraHeaders || {}
); );
return fetch(url, { headers }); return fetch(url, { headers });
@@ -83,17 +83,16 @@ class HiAnime {
const year = startDate.year || null; const year = startDate.year || null;
const month = startDate.month || null; const month = startDate.month || null;
let url = `${this.baseUrl}/search?keyword=${encodeURIComponent( let url = `${this.baseUrl}/search?keyword=${encodeURIComponent(queryText)}&sort=default`;
queryText
)}&sort=default`;
if (year) url += `&sy=${year}`; if (year) url += `&sy=${year}`;
if (month) url += `&sm=${month}`; if (month) url += `&sm=${month}`;
console.log("[HiAnime] search() url=", url); console.log("[HiAnime] search() url=", url);
const response = fetch(url); const response = fetch(url);
const html = response.text(); console.log("[HiAnime] search() status=", response.status, "ok=", response.ok);
const html = response.text();
console.log("[HiAnime] search() htmlLen=", (html || "").length); console.log("[HiAnime] search() htmlLen=", (html || "").length);
const regex = const regex =
@@ -111,9 +110,7 @@ class HiAnime {
const idNum = m[3]; const idNum = m[3];
const imgRe = new RegExp( const imgRe = new RegExp(
`<a[^>]+href="\\/watch\\/${watchSlug `<a[^>]+href="\\/watch\\/${watchSlug.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}"[\\s\\S]*?<img[^>]+(?:data-src|src)="([^"]+)"`,
.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
}"[\\s\\S]*?<img[^>]+(?:data-src|src)="([^"]+)"`,
"i" "i"
); );
const imgM = html.match(imgRe); const imgM = html.match(imgRe);
@@ -186,6 +183,8 @@ class HiAnime {
console.log("[HiAnime] findEpisodes() url=", url); console.log("[HiAnime] findEpisodes() url=", url);
const response = this.fetchAjax(url); const response = this.fetchAjax(url);
console.log("[HiAnime] findEpisodes() status=", response.status, "ok=", response.ok);
const json = response.json(); const json = response.json();
const html = this.safeString(json.html); const html = this.safeString(json.html);
@@ -258,8 +257,7 @@ class HiAnime {
subOrDub = "sub"; subOrDub = "sub";
} }
if (episodeId && episodeId.includes("/")) if (episodeId && episodeId.includes("/")) [episodeId, subOrDub] = episodeId.split("/");
[episodeId, subOrDub] = episodeId.split("/");
let serverName = _server && _server !== "default" ? _server : "HD-1"; let serverName = _server && _server !== "default" ? _server : "HD-1";
@@ -269,6 +267,8 @@ class HiAnime {
console.log("[HiAnime] findEpisodeServer() serversUrl=", serversUrl); console.log("[HiAnime] findEpisodeServer() serversUrl=", serversUrl);
const serverResponse = this.fetchAjax(serversUrl); const serverResponse = this.fetchAjax(serversUrl);
console.log("[HiAnime] servers status=", serverResponse.status, "ok=", serverResponse.ok);
const serverJson = serverResponse.json(); const serverJson = serverResponse.json();
const serverHtml = this.safeString(serverJson.html); const serverHtml = this.safeString(serverJson.html);
@@ -303,6 +303,8 @@ class HiAnime {
console.log("[HiAnime] findEpisodeServer() sourcesUrl=", sourcesUrl); console.log("[HiAnime] findEpisodeServer() sourcesUrl=", sourcesUrl);
const sourcesResponse = this.fetchAjax(sourcesUrl); const sourcesResponse = this.fetchAjax(sourcesUrl);
console.log("[HiAnime] sources status=", sourcesResponse.status, "ok=", sourcesResponse.ok);
const sourcesJson = sourcesResponse.json(); const sourcesJson = sourcesResponse.json();
console.log("[HiAnime] findEpisodeServer() sourcesJson has link=", !!sourcesJson.link); console.log("[HiAnime] findEpisodeServer() sourcesJson has link=", !!sourcesJson.link);
@@ -321,12 +323,12 @@ class HiAnime {
} }
if (!decryptData) { if (!decryptData) {
const fallbackUrl = `https://ac-api.ofchaos.com/api/anime/embed/convert/v2?embedUrl=${encodeURIComponent( const fallbackUrl = `https://ac-api.ofchaos.com/api/anime/embed/convert/v2?embedUrl=${encodeURIComponent(sourcesJson.link)}`;
sourcesJson.link
)}`;
console.log("[HiAnime] fallbackUrl=", fallbackUrl); console.log("[HiAnime] fallbackUrl=", fallbackUrl);
const fallbackResponse = fetch(fallbackUrl); const fallbackResponse = fetch(fallbackUrl);
console.log("[HiAnime] fallback status=", fallbackResponse.status, "ok=", fallbackResponse.ok);
decryptData = fallbackResponse.json(); decryptData = fallbackResponse.json();
requiredHeaders = { requiredHeaders = {
@@ -395,8 +397,9 @@ class HiAnime {
}; };
const response = fetch(embedUrl, { headers }); const response = fetch(embedUrl, { headers });
const html = response.text(); console.log("[HiAnime] embed status=", response.status, "ok=", response.ok);
const html = response.text();
console.log("[HiAnime] extractMegaCloud() embed htmlLen=", (html || "").length); console.log("[HiAnime] extractMegaCloud() embed htmlLen=", (html || "").length);
const fileIdMatch = html.match(/<title>\s*File\s+#([a-zA-Z0-9]+)\s*-/i); const fileIdMatch = html.match(/<title>\s*File\s+#([a-zA-Z0-9]+)\s*-/i);
@@ -424,8 +427,9 @@ class HiAnime {
console.log("[HiAnime] extractMegaCloud() sourcesUrl=", sourcesUrl); console.log("[HiAnime] extractMegaCloud() sourcesUrl=", sourcesUrl);
const sourcesResponse = fetch(sourcesUrl, { headers }); const sourcesResponse = fetch(sourcesUrl, { headers });
const sourcesJson = sourcesResponse.json(); console.log("[HiAnime] sources status=", sourcesResponse.status, "ok=", sourcesResponse.ok);
const sourcesJson = sourcesResponse.json();
console.log("[HiAnime] extractMegaCloud() sources=", (sourcesJson.sources ? sourcesJson.sources.length : 0), "tracks=", (sourcesJson.tracks ? sourcesJson.tracks.length : 0)); console.log("[HiAnime] extractMegaCloud() sources=", (sourcesJson.sources ? sourcesJson.sources.length : 0), "tracks=", (sourcesJson.tracks ? sourcesJson.tracks.length : 0));
return { return {