async function searchResults(keyword) { const results = []; const response = await fetchv2(`https://www.animetoast.cc/?s=${keyword}`); const html = await response.text(); const regex = /]*title="([^"]+)"[^>]*>[\s\S]*?]*src="([^"]+)"[^>]*>[\s\S]*?<\/a>/g; let match; while ((match = regex.exec(html)) !== null) { results.push({ title: match[2].trim(), image: match[3].trim(), href: match[1].trim() }); } return JSON.stringify(results); } async function extractDetails(url) { const results = []; const response = await fetchv2(url); const html = await response.text(); let description = ''; const descriptionRegex = /

(?:]*>)?(.*?)<\/p>/s; const descriptionMatch = html.match(descriptionRegex); if (descriptionMatch && descriptionMatch[1]) { description = descriptionMatch[1].trim(); } results.push({ description: description, aliases: 'N/A', airdate: 'N/A' }); return JSON.stringify(results); } async function extractEpisodes(url) { const results = []; const response = await fetchv2(url); const html = await response.text(); const tabRegex = /]*>\s*]*href=["']([^"']+)["'][^>]*>Voe<\/a>\s*<\/li>/g; const tabMatches = [...html.matchAll(tabRegex)]; if (tabMatches.length > 0) { const tabHref = tabMatches[0][1].trim(); const tabId = tabHref.startsWith('#') ? tabHref.substring(1) : tabHref; console.error(tabHref); const divRegex = new RegExp(`

]*>(.*?)<\/div>`, 's'); const divMatch = html.match(divRegex); if (divMatch) { const epRegex = /]*href=["']([^"']+)["'][^>]*>[\s\S]*?Ep\.\s*(\d+)\s*<\/a>/g; const epMatches = [...divMatch[1].matchAll(epRegex)]; results.push(...epMatches.map(match => ({ href: match[1], number: parseInt(match[2], 10) }))); } } console.error(JSON.stringify(results)); return JSON.stringify(results); } async function extractStreamUrl(url) { const response = await fetchv2(url); const html = await response.text(); const voeRegex = /]*>/; const match = html.match(voeRegex); if (match && match[1]) { const videoId = match[1]; const streamUrl = `https://kristiesoundsimply.com/e/${videoId}`; const streamResponse = await fetchv2(streamUrl); const streamHtml = await streamResponse.text(); const mp4Regex = /'mp4': '([^']+)'/; const mp4Match = streamHtml.match(mp4Regex); if (mp4Match && mp4Match[1]) { const decodedUrl = atob(mp4Match[1]); return decodedUrl; } } return null; }