123456789101112131415161718192021222324252627282930313233343536373839404142 |
- let cheerio = require('cheerio');
- let axios = require('axios');
- module.exports = async function getOGPreviewData (url) {
- try {
- let res = await axios.get(url);
- let $ = cheerio.load(res.data);
- let OG = {
- title: $('meta[property="og:title"]'),
- url: $('meta[property="og:url"]'),
- image: $('meta[property="og:image"]'),
- description: $('meta[property="og:description"]')
- };
- let alternative = {
- title: $('title'),
- description: $('meta[name="description"]')
- };
- let data = {};
- if(OG.title.length && OG.url.length) {
- data.title = OG.title.attr('content');
- data.url = OG.url.attr('content');
- if(OG.image) data.image = OG.image.attr('content');
- if(OG.description) data.description = OG.description.attr('content');
- return data;
- } else if(alternative.title.length && alternative.description.length) {
- data.title = alternative.title.text();
- data.description = alternative.description.attr('content');
- } else {
- return null;
- }
- return data;
- } catch (e) {
- return null;
- }
- }
|