diff --git a/kaliscan/kaliscan.js b/kaliscan/kaliscan.js new file mode 100644 index 0000000..a490090 --- /dev/null +++ b/kaliscan/kaliscan.js @@ -0,0 +1,98 @@ +async function searchContent(keyword, page=0) { + const results = []; + try { + const response = await fetch("https://kaliscan.io/service/backend/search/?q=" + encodeURIComponent(keyword)); + const html = await response.text(); + + const regex = /href="([^"]*manga[^"]*)"[^>]*>[\s\S]*?]*>([\s\S]*?)<\/a><\/h3>/g; + + let match; + while ((match = regex.exec(html)) !== null) { + results.push({ + id: "https://kaliscan.io" + 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*
Chapter \2<\/strong>/g; + + let match; + + while ((match = regex.exec(html)) !== null) { + const chapterUrl = "https://kaliscan.io" + 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 imagesString = match[1]; + const images = imagesString.split(','); + results.push(...images); + } + + return results; + } catch (err) { + return []; + } +} \ No newline at end of file