UNPKG

source-scraper-puppeteer-runner

Version:

Provides the PuppeteerRunner class for scrapping.

56 lines 2.19 kB
"use strict"; 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