async function searchContent(keyword, page=0) { const results = []; try { const response = await fetch("https://mangabuddy.com/api/manga/search?q=" + encodeURIComponent(keyword)); const html = await response.text(); const regex = /href="([^"]*)"[^>]*>[\s\S]*?]*>([\s\S]*?)<\/a><\/h3>/g; let match; while ((match = regex.exec(html)) !== null) { results.push({ id: "https://mangabuddy.com" + match[1].trim(), imageURL: "https://passthrough-worker.simplepostrequest.workers.dev/?simple=" + match[2].trim() + "?referrer=https://mangabuddy.com", title: match[3].replace(/<[^>]+>/g, '').trim() }); } return results; } catch (err) { return []; } } async function getContentData(url) { try { const response = await fetch(url); const html = await response.text(); const descRegex = /\s*]*>\s*
\s*Chapter (\d+)<\/strong>/g; let match; while ((match = regex.exec(chapHtml)) !== null) { const chapterUrl = "https://mangabuddy.com" + match[1]; const chapterNum = match[2]; results.push([ String(chapterNum), [{ id: chapterUrl, chapter: parseInt(chapterNum), scanlation_group: `Chapter ${chapterNum}` }] ]); } results.reverse(); return { en: results }; } catch (err) { return { en: [] }; } } async function getChapterImages(url) { const results = []; try { const response = await fetch(url); const html = await response.text(); const regex = /var chapImages = '([^']*)'/; const match = regex.exec(html); if (match) { const images = match[1].split(','); const processedImages = images.map(img => "https://passthrough-worker.simplepostrequest.workers.dev/?simple=" + img.trim() + "?referrer=https://mangabuddy.com"); results.push(...processedImages); } return results; } catch (err) { return []; } }