source-scraper-puppeteer-runner
Version:
Provides the PuppeteerRunner class for scrapping.
56 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const PuppeteerRunner_1 = require("./PuppeteerRunner");
const source_scraper_core_1 = require("source-scraper-core");
class SimplePuppeteerScraper extends source_scraper_core_1.SourceRunnerScraper {
constructor() {
super(...arguments);
this.name = 'puppeteer';
this.domains = [];
this.urlPattern = /.*/i;
this.runner = new PuppeteerRunner_1.PuppeteerRunner();
this.defaultOptions = {};
}
async execWithArgs({ page }) {
const raw = await page.evaluate(async () => {
const sdata = {
sources: []
};
const videos = document.getElementsByTagName('video');
for (const video of videos) {
const source_attr = video.src;
if (source_attr)
sdata.sources.push({
url: source_attr,
type: video.getAttribute('type')
});
const poster = video.poster;
if (poster)
sdata.poster = poster;
const source_tags = video.getElementsByTagName('source');
for (const source of source_tags) {
const ssrc = source.src;
if (ssrc)
sdata.sources.push({
url: ssrc,
type: source.getAttribute('type')
});
}
}
const titles = document.getElementsByTagName('title');
if (titles.length >= 1)
sdata.title = titles[0].innerText;
return Promise.resolve(sdata);
});
return {
poster: raw.poster,
title: raw.title,
sources: raw.sources.map(e => new source_scraper_core_1.Source({
url: e.url,
type: e.type || undefined
}))
};
}
}
exports.SimplePuppeteerScraper = SimplePuppeteerScraper;
//# sourceMappingURL=SimplePuppeteerScraper.js.map