async function searchContent(keyword, page=0) { const results = []; try { const response = await fetch("https://mangapub.com/api/book/search?q=" + encodeURIComponent(keyword)); const html = await response.text(); const regex = /]*href="([^"]*)"[^>]*>[\s\S]*?]*src="([^"]*)"[\s\S]*?]*>[\s\S]*?]*>([\s\S]*?)<\/a>[\s\S]*?<\/h3>/g; let match; while ((match = regex.exec(html)) !== null) { results.push({ id: "https://mangapub.com" + match[1].trim(), imageURL: match[2].trim(), 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 [^\s<]+)<\/strong>/g; let match; while ((match = regex.exec(chapHtml)) !== null) { const chapterUrl = "https://mangapub.com" + match[1]; const chapterTitle = match[2]; const chapterNum = chapterTitle.replace('Chapter ', ''); results.push([ chapterNum, [{ id: chapterUrl, title: chapterTitle, chapter: parseFloat(chapterNum), scanlation_group: chapterTitle }] ]); } 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 = /indicators = "([^"]*)"/; const match = regex.exec(html); if (match) { const images = match[1].split(','); const processedImages = images.map(img => img.trim()).filter(img => img.length > 0); results.push(...processedImages); } return results; } catch (err) { return []; } }