From 7453e63d36e07c6337efdc043960fd7daec34620 Mon Sep 17 00:00:00 2001 From: aka paul <50n50@noreply.localhost> Date: Sun, 30 Nov 2025 19:53:22 +0000 Subject: [PATCH] Add mangacloud/mangacloud.js --- mangacloud/mangacloud.js | 92 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 mangacloud/mangacloud.js diff --git a/mangacloud/mangacloud.js b/mangacloud/mangacloud.js new file mode 100644 index 0000000..8aac3d8 --- /dev/null +++ b/mangacloud/mangacloud.js @@ -0,0 +1,92 @@ +async function searchContent(keyword,page=0){ + const results = []; + try { + const headers = { + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36", + "Origin": "https://mangacloud.org", + "Referer": "https://mangacloud.org/", + "Accept": "application/json" + }; + const postData = `{"terms":"${keyword}"}`; + + const response = await fetch(`https://api.mangacloud.org/search`, { + method: "POST", + headers: headers, + body: postData + }); + const data = await response.json(); + + for (const item of data.data) { + results.push({ + id: item.id, + imageURL: `https://pika.mangacloud.org/${item.id}/${item.cover.id}.${item.cover.f}`, + title: item.title + }); + } + + return results; + } catch (err) { + return []; + } +} + +async function getContentData(ID) { + try { + const response = await fetch(`https://api.mangacloud.org/comic/${ID}`); + const data = await response.json(); + + return { + description: data.data.description, + tags: data.data.tags.map(tag => tag.name) + }; + } catch (err) { + return { + description: "Error", + tags: [] + }; + } +} + +async function getChapters(ID) { + const results = []; + try { + const response = await fetch(`https://api.mangacloud.org/comic/${ID}`); + const data = await response.json(); + + const chapters = data.data.chapters; + for (const chap of chapters) { + results.push([ + String(chap.number), + [{ + id: ID + "/" + chap.id, + title: chap.name || `Chapter ${chap.number}`, + chapter: chap.number, + scanlation_group: chap.name || "" + }] + ]); + } + + return { en: results.reverse() }; + } catch (err) { + return { en: [] }; + } +} + +async function getChapterImages(url) { + const chapterID = url.split("/").pop(); + const ID = url.split("/").slice(-2, -1)[0]; + const results = []; + try { + const response = await fetch(`https://api.mangacloud.org/chapter/${chapterID}`); + const data = await response.json(); + + for (const img of data.data.images) { + results.push(`https://pika.mangacloud.org/${ID}/${chapterID}/${img.id}.${img.f}`); + } + + return results; + } catch (err) { + return []; + } +} \ No newline at end of file