UNPKG

html-metadata-parser

Version:

Html Metadata scraper and parser for Node.js

1 lines 1.33 kB
(()=>{"use strict";var e={376:e=>{e.exports=require("axios")},514:e=>{e.exports=require("node-html-parser")}},t={};function r(o){var s=t[o];if(void 0!==s)return s.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}var o={};(()=>{var e=o;Object.defineProperty(e,"__esModule",{value:!0}),e.parser=e.parse=e.Metadata=void 0;const t=r(376),s=r(514);e.Metadata=class{};const a=(e,t)=>(e.getAttribute("name")||e.getAttribute("property"))==t?e.getAttribute("content"):null,i=async(e,r)=>{if(!/(^http(s?):\/\/[^\s$.?#].[^\s]*)/i.test(e))return null;const{data:o}=await t.default(e,r),i=s.parse(o),l={},n={},c=[],u=i.querySelector("title");u&&(n.title=u.text);const p=i.querySelector("link[rel=canonical]");p&&(n.url=p.getAttribute("href"));const g=i.querySelectorAll("meta");for(let e=0;e<g.length;e++){const t=g[e];["title","description","image"].forEach((e=>{const r=a(t,e);r&&(n[e]=r)})),["og:title","og:description","og:image","og:url","og:site_name","og:type"].forEach((e=>{const r=a(t,e);r&&(l[e.split(":")[1]]=r)}))}return i.querySelectorAll("img").forEach((t=>{let r=t.getAttribute("src");r&&(r=new URL(r,e).href,c.push({src:r}))})),{meta:n,og:l,images:c}};e.parse=i;const l=i;e.parser=l,e.default=l})();var s=exports;for(var a in o)s[a]=o[a];o.__esModule&&Object.defineProperty(s,"__esModule",{value:!0})})();