ogp-parser
Version:
This Package is Open Graph Parser.
40 lines (34 loc) • 984 B
text/typescript
import { parseHtml } from './core/parseHtml';
import { fetchOembed, OembedData } from './core/fetchOembed';
import { getContents } from './core/getContents';
export type OgpParserOptions = {
skipOembed: boolean;
};
export type OgpParserResult = {
title: string;
ogp: Record<string, string[]>;
seo: Record<string, string[]>;
oembed?: OembedData;
};
const parser = async (url: string, options?: OgpParserOptions) => {
const skipOembed = !!options?.skipOembed;
const headers = {
'User-Agent': 'bot',
};
const html = (await getContents(url, { headers })).toString();
const data = parseHtml(html);
const result: OgpParserResult = {
title: data.title,
ogp: data.ogp,
seo: data.seo,
};
if (!skipOembed && data.oembedInfo) {
const oembed = await fetchOembed(data.oembedInfo);
if (oembed) {
result.oembed = oembed;
}
}
return result;
};
export default parser;
module.exports = parser;