gogoanime-scraper
Version:
A scraper for Gogoanime
57 lines • 2.38 kB
JavaScript
;
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