added 404 error, better error correction for oEmbed, audio and soundcloud

This commit is contained in:
Grzegorz Leoniec 2018-12-28 12:55:42 +01:00
parent 3b49e9fa84
commit 18bfc85dca
No known key found for this signature in database
GPG Key ID: 3AA43686D4EB1377
3 changed files with 31 additions and 4 deletions

View File

@ -40,6 +40,7 @@
"metascraper-logo": "^4.8.5",
"metascraper-logo-favicon": "^4.8.5",
"metascraper-publisher": "^4.8.5",
"metascraper-soundcloud": "^4.8.5",
"metascraper-title": "^4.8.5",
"metascraper-url": "^4.8.5",
"metascraper-video": "^4.8.5",

View File

@ -11,11 +11,15 @@ const metascraper = require('metascraper')([
require('metascraper-publisher')(),
require('metascraper-title')(),
require('metascraper-url')(),
require('metascraper-audio')(),
require('metascraper-soundcloud')(),
require('metascraper-video')(),
require('metascraper-youtube')()
// require('./rules/metascraper-embed')()
])
const { ApolloError } = require('apollo-server')
const got = require('got')
const request = require('request-promise-native')
const find = require('lodash/find')
@ -69,31 +73,46 @@ const scraper = {
new Promise(async (resolve, reject) => {
try {
embed = await scraper.fetchEmbed(targetUrl)
console.log(embed)
resolve()
} catch(err) {
console.error(err)
resolve()
}
})
])
return {
const output = {
...(removeEmptyAttrs(meta)),
...(removeEmptyAttrs(embed))
}
if (isEmpty(output)) {
throw new ApolloError('Not found', 404)
}
return output
},
async fetchEmbed(targetUrl) {
const url = urlParser.parse(targetUrl)
const embedMeta = find(oEmbedProviders, provider => {
return provider.provider_url.indexOf(url.hostname) >= 0
})
console.log('embedMeta', embedMeta)
if (!embedMeta) {
return {}
}
const embedUrl = embedMeta.endpoints[0].url.replace('{format}', 'json')
let data = await request(`${embedUrl}?url=${targetUrl}`)
if (data) {
let data
try {
data = await request(`${embedUrl}?url=${targetUrl}`)
data = JSON.parse(data)
} catch (err) {
data = await request(`${embedUrl}?url=${targetUrl}&format=json`)
data = JSON.parse(data)
}
if (data) {
let output = {
type: data.type,
embed: data.html,

View File

@ -2275,6 +2275,13 @@ metascraper-publisher@^4.8.5:
dependencies:
"@metascraper/helpers" "^4.8.5"
metascraper-soundcloud@^4.8.5:
version "4.8.5"
resolved "https://registry.yarnpkg.com/metascraper-soundcloud/-/metascraper-soundcloud-4.8.5.tgz#6593ba8a26fedbb4a3bebc6d2803e22b38278621"
integrity sha512-fChxmwqCLyans9RKKg1jaL7dh/6twIBgaQm/NjvlKcp4+V39J85wQlZPHBgoXl+K/uMwy94wMftKWWQ1Hxxgkw==
dependencies:
"@metascraper/helpers" "^4.8.5"
metascraper-title@^4.8.5:
version "4.8.5"
resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-4.8.5.tgz#406de3b443442b34cfffba207d4b53de9343ad98"