diff --git a/animekai/hardsub/animekai.js b/animekai/hardsub/animekai.js index e70ce82..6d4f077 100644 --- a/animekai/hardsub/animekai.js +++ b/animekai/hardsub/animekai.js @@ -127,20 +127,44 @@ async function extractStreamUrl(url) { const fetchUrl = `${url}`; const response = await fetchv2("https://deno-proxies-sznvnpnxwhbv.deno.dev/?url=" + encodeURIComponent(fetchUrl)); const text = await response.text(); + + let ajaxResultHtml = ""; + try { + const parsedAjax = JSON.parse(text); + ajaxResultHtml = parsedAjax?.result || ""; + } catch {} + const cleanedHtml = cleanJsonHtml(text); + const cleanedAjaxResultHtml = cleanJsonHtml(ajaxResultHtml); + const serverHtmlSource = cleanedAjaxResultHtml || cleanedHtml; + const subRegex = /
]*>([\s\S]*?)<\/div>/; const softsubRegex = /
]*>([\s\S]*?)<\/div>/; const dubRegex = /
]*>([\s\S]*?)<\/div>/; - const subMatch = subRegex.exec(cleanedHtml); - const softsubMatch = softsubRegex.exec(cleanedHtml); - const dubMatch = dubRegex.exec(cleanedHtml); + const subMatch = subRegex.exec(serverHtmlSource); + const softsubMatch = softsubRegex.exec(serverHtmlSource); + const dubMatch = dubRegex.exec(serverHtmlSource); const subContent = subMatch ? subMatch[1].trim() : ""; const softsubContent = softsubMatch ? softsubMatch[1].trim() : ""; const dubContent = dubMatch ? dubMatch[1].trim() : ""; - const serverSpanRegex = /]*data-lid="([^"]+)"[^>]*>Server 1<\/span>/; - const serverIdDub = serverSpanRegex.exec(dubContent)?.[1]; - const serverIdSoftsub = serverSpanRegex.exec(softsubContent)?.[1]; - const serverIdSub = serverSpanRegex.exec(subContent)?.[1]; + + const extractServerId = (content) => { + if (!content) { + return null; + } + + const preferred = /]*data-lid="([^"]+)"[^>]*>\s*Server\s*1\s*<\/span>/i.exec(content); + if (preferred?.[1]) { + return preferred[1]; + } + + const fallback = /]*data-lid="([^"]+)"/i.exec(content); + return fallback?.[1] || null; + }; + + const serverIdDub = extractServerId(dubContent); + const serverIdSoftsub = extractServerId(softsubContent); + const serverIdSub = extractServerId(subContent); const tokenRequestData = [ { name: "Dub", data: serverIdDub },