UNPKG

source-scraper-dom-runner

Version:

Provides the DomRunner class for scrapping.

56 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const DomRunner_1 = require("./DomRunner"); const source_scraper_core_1 = require("source-scraper-core"); const jsdom_1 = require("jsdom"); class SimpleDomScraper extends source_scraper_core_1.SourceRunnerScraper { constructor() { super(...arguments); this.name = 'dom'; this.domains = []; this.urlPattern = /.*/i; this.runner = new DomRunner_1.DomRunner(); this.defaultOptions = {}; } async scrapFromHtml(url, html, jsdomOptions, options) { const jsdom = new jsdom_1.JSDOM(html, jsdomOptions); return this.scrapFromArgs({ url, jsdom, window: jsdom.window, document: jsdom.window.document }, options); } async execWithArgs({ document }) { const data = { sources: [] }; const videos = document.getElementsByTagName('video'); for (const video of videos) { const vsrc = video.src; if (vsrc) data.sources.push(new source_scraper_core_1.Source({ url: vsrc, type: video.getAttribute('type') || undefined })); const poster = video.poster; if (poster) data.poster = poster; const sources = video.getElementsByTagName('source'); for (const source of sources) { const ssrc = source.src; if (ssrc) data.sources.push(new source_scraper_core_1.Source({ url: ssrc, type: video.getAttribute('type') || undefined })); } } const titles = document.getElementsByTagName('title'); if (titles.length >= 1) data.title = titles[0].innerText; return Promise.resolve(data); } } exports.SimpleDomScraper = SimpleDomScraper; //# sourceMappingURL=SimpleDomScraper.js.map