UNPKG

gogoanime-scraper

Version:
57 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const source_scraper_core_1 = require("source-scraper-core"); const source_scraper_dom_runner_1 = require("source-scraper-dom-runner"); class GogoanimeScraper extends source_scraper_core_1.HosterRunnerScraper { constructor() { super(...arguments); this.name = 'gogoanime'; this.domains = ['gogoanime.se', 'gogoanime.sh']; this.urlPattern = /(?:(?:https?:)?\/\/)?(?:[^.]+\.)?gogoanime.(?:sh|se)\/(\w+(?:-\w+)*)/i; this.runner = new source_scraper_dom_runner_1.DomRunner(); this.defaultOptions = {}; } async execWithArgs({ document }) { const bodies = document.getElementsByTagName('body'); if (!(bodies.length >= 1)) return Promise.reject(new Error('Unable to find body element')); const body = bodies[0]; const containers = body.getElementsByClassName('anime_muti_link'); if (!(containers.length >= 1)) return Promise.reject(new Error('Unable to find container element')); const container = containers[0]; const items = container.getElementsByTagName('li'); const hosters = []; for (const item of items) { const links = item.getElementsByTagName('a'); if (!(links.length >= 1)) continue; const link = links[0]; const url = link.getAttribute('data-video'); if (!url) continue; let name = link.textContent; if (!name) continue; const spans = link.getElementsByTagName('span'); if (spans.length >= 1) { const span = spans[0]; if (span.textContent) name = name.replace(span.textContent, ''); } name = name.trim(); hosters.push(new source_scraper_core_1.Hoster({ url, name })); } const titles = document.getElementsByTagName('title'); const title = titles.length >= 1 ? titles[0].textContent || undefined : undefined; return { hosters, title }; } } exports.GogoanimeScraper = GogoanimeScraper; //# sourceMappingURL=GogoanimeScraper.js.map