UNPKG

aniwave-scraper

Version:
92 lines (91 loc) 5.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const cheerio_1 = __importDefault(require("cheerio")); class Methods { constructor() { this.baseURL = "https://aniwave.to"; } getSubtitles(sd) { let $ = cheerio_1.default.load(sd.html()); const sub = parseInt($(".ep-status.sub > span").text().trim()); return sub || 1; } getDubtitles(sd) { let $ = cheerio_1.default.load(sd.html()); const dub = parseInt($(".ep-status.dub > span").text().trim()); return dub || 1; } getTotal(sd) { let $ = cheerio_1.default.load(sd.html()); const total = parseInt($(".ep-status.total > span").text().trim()); return total || 1; } getItems(animes, elem) { var _a; let $ = cheerio_1.default.load(elem); animes.push({ title: `${$(elem).find(".inner > .info > .b1 > a.name.d-title, .info > a.name.d-title, .inner > .info > div.name.d-title").text()}`, jptitle: `${$(elem).find(".inner > .info > .b1 > a.name.d-title, .info > a.name.d-title, .inner > .info > div.name.d-title").attr("data-jp")}` || `${$(elem).find(".inner > .info > .b1 > a.name.d-title, .info > a.name.d-title, .inner > .info > div.name.d-title").text()}`, url: `${this.baseURL}${$(elem).find(".inner > .info > .b1 > a.name.d-title, .info > a.name.d-title").attr("href") || $(elem).attr("href")}`, poster: `${(_a = $(elem).find(".ani.poster > a > img, .inner > .poster > span > img").attr("src")) === null || _a === void 0 ? void 0 : _a.replace(/@100(?=\.jpg)/gi, "")}`, // done total_episodes: (() => { const sd = $(elem).find(".ani.poster > a > .meta > .inner > .left, .inner > .info > div.meta > span.ep-wrap.dot"); // not done const sub = $(sd).find(".ep-status").hasClass("sub") ? this.getSubtitles(sd) : 0; // dubtitles LMAOOOOOO const dub = $(sd).find(".ep-status").hasClass("dub") ? this.getDubtitles(sd) : 0; // either sub or dub or 0 if no episodes const total = $(sd).find(".ep-status").hasClass("total") ? this.getTotal(sd) : sub || dub || 0; return { sub: sub, dub: dub, total: total }; })(), type: `${$(elem).find(".ani.poster > a > .meta > .inner > .right, .inner > .info > div.meta > span[class='dot']").text()}` }); } getAnimeMeta(anime, container) { const $ = cheerio_1.default.load(container.html()); // const spen = "span:not([itemprop]):not([class])" // i wanted to use this somewhere but i forgor anime.meta = { title: `${$(".info > .title.d-title").text()}`, jptitle: `${$(".info > .title.d-title").attr("data-jp")}`, names: $(".info > .names").text().split(";").map((e) => e.trim()), description: `${$(".info > .synopsis > .shorting > .content").text()}`, poster: `${$(".poster > span > img").attr("src")}`, aired: {} }; $(".info > .bmeta > .meta").each((_m, meta) => { $(meta).find("div").each((_d, div) => { const metaVar = $(div).text().split(/:(.*)/)[0].toLowerCase().trim().replace(/\s+/g, "_"); const metaVal = metaVar === "genres" || metaVar === "producers" ? $(div).text().split(/:(.*)/)[1].split(",").map((e) => e.trim()) : (metaVar === "episodes" ? parseInt($(div).text().split(/:(.*)/)[1].trim()) : $(div).text().split(/:(.*)/)[1].trim()); // translation -> • if genres + producers then make array else if episodes then make array too else dont if (["premiered", "date_aired", "broadcast", "status"].includes(metaVar)) anime.meta.aired[`${metaVar}`] = metaVal; else anime.meta[`${metaVar}`] = metaVal; }); }); } getAnimeRelated(anime, container) { const $ = cheerio_1.default.load(container.html()); anime.related = []; // i think it is very clear that im high on air at this point. this thing prolly gon break in no time container.container = [".inner > .scaff.side.items > .item", ".inner > .info"]; $("div.tab-content").each((_e, elem) => { $(elem).find(container.container[0]).each((_i, item) => { var _a, _b; anime.related.push({ relation: $(item).find(`${container.container[1]} > .relation`).text().trim(), title: $(item).find(`${container.container[1]} > .name.d-title`).text().trim(), jptitle: ((_a = $(item).find(`${container.container[1]} > .name.d-title`).attr("data-jp")) === null || _a === void 0 ? void 0 : _a.trim()) || $(item).find(`${container.container[1]} > .name.d-title`).text().trim(), poster: (_b = $(item).find(".inner > .poster > span img").attr("src")) === null || _b === void 0 ? void 0 : _b.replace(/@100(?=\.jpg)/gi, ""), url: `${this.baseURL}${$(item).attr("href")}`, type: $(item).find(`${container.container[1]} > .meta > span`).eq(0).text().trim(), plays: $(item).find(`${container.container[1]} > .meta > span`).eq(1).text().trim(), bookmarks: $(item).find(`${container.container[1]} > .meta > span`).eq(2).text().trim(), }); }); }); } } exports.default = Methods;