mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
added 404 error, better error correction for oEmbed, audio and soundcloud
This commit is contained in:
parent
3b49e9fa84
commit
18bfc85dca
@ -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",
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user