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": "^4.8.5",
|
||||||
"metascraper-logo-favicon": "^4.8.5",
|
"metascraper-logo-favicon": "^4.8.5",
|
||||||
"metascraper-publisher": "^4.8.5",
|
"metascraper-publisher": "^4.8.5",
|
||||||
|
"metascraper-soundcloud": "^4.8.5",
|
||||||
"metascraper-title": "^4.8.5",
|
"metascraper-title": "^4.8.5",
|
||||||
"metascraper-url": "^4.8.5",
|
"metascraper-url": "^4.8.5",
|
||||||
"metascraper-video": "^4.8.5",
|
"metascraper-video": "^4.8.5",
|
||||||
|
|||||||
@ -11,11 +11,15 @@ const metascraper = require('metascraper')([
|
|||||||
require('metascraper-publisher')(),
|
require('metascraper-publisher')(),
|
||||||
require('metascraper-title')(),
|
require('metascraper-title')(),
|
||||||
require('metascraper-url')(),
|
require('metascraper-url')(),
|
||||||
|
require('metascraper-audio')(),
|
||||||
|
require('metascraper-soundcloud')(),
|
||||||
require('metascraper-video')(),
|
require('metascraper-video')(),
|
||||||
require('metascraper-youtube')()
|
require('metascraper-youtube')()
|
||||||
|
|
||||||
// require('./rules/metascraper-embed')()
|
// require('./rules/metascraper-embed')()
|
||||||
])
|
])
|
||||||
|
const { ApolloError } = require('apollo-server')
|
||||||
|
|
||||||
const got = require('got')
|
const got = require('got')
|
||||||
const request = require('request-promise-native')
|
const request = require('request-promise-native')
|
||||||
const find = require('lodash/find')
|
const find = require('lodash/find')
|
||||||
@ -69,31 +73,46 @@ const scraper = {
|
|||||||
new Promise(async (resolve, reject) => {
|
new Promise(async (resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
embed = await scraper.fetchEmbed(targetUrl)
|
embed = await scraper.fetchEmbed(targetUrl)
|
||||||
|
console.log(embed)
|
||||||
resolve()
|
resolve()
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
|
console.error(err)
|
||||||
resolve()
|
resolve()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
])
|
])
|
||||||
return {
|
|
||||||
|
const output = {
|
||||||
...(removeEmptyAttrs(meta)),
|
...(removeEmptyAttrs(meta)),
|
||||||
...(removeEmptyAttrs(embed))
|
...(removeEmptyAttrs(embed))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isEmpty(output)) {
|
||||||
|
throw new ApolloError('Not found', 404)
|
||||||
|
}
|
||||||
|
|
||||||
|
return output
|
||||||
},
|
},
|
||||||
async fetchEmbed(targetUrl) {
|
async fetchEmbed(targetUrl) {
|
||||||
const url = urlParser.parse(targetUrl)
|
const url = urlParser.parse(targetUrl)
|
||||||
const embedMeta = find(oEmbedProviders, provider => {
|
const embedMeta = find(oEmbedProviders, provider => {
|
||||||
return provider.provider_url.indexOf(url.hostname) >= 0
|
return provider.provider_url.indexOf(url.hostname) >= 0
|
||||||
})
|
})
|
||||||
|
console.log('embedMeta', embedMeta)
|
||||||
if (!embedMeta) {
|
if (!embedMeta) {
|
||||||
return {}
|
return {}
|
||||||
}
|
}
|
||||||
const embedUrl = embedMeta.endpoints[0].url.replace('{format}', 'json')
|
const embedUrl = embedMeta.endpoints[0].url.replace('{format}', 'json')
|
||||||
|
|
||||||
let data = await request(`${embedUrl}?url=${targetUrl}`)
|
let data
|
||||||
if (data) {
|
try {
|
||||||
|
data = await request(`${embedUrl}?url=${targetUrl}`)
|
||||||
data = JSON.parse(data)
|
data = JSON.parse(data)
|
||||||
|
} catch (err) {
|
||||||
|
data = await request(`${embedUrl}?url=${targetUrl}&format=json`)
|
||||||
|
data = JSON.parse(data)
|
||||||
|
}
|
||||||
|
if (data) {
|
||||||
let output = {
|
let output = {
|
||||||
type: data.type,
|
type: data.type,
|
||||||
embed: data.html,
|
embed: data.html,
|
||||||
|
|||||||
@ -2275,6 +2275,13 @@ metascraper-publisher@^4.8.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@metascraper/helpers" "^4.8.5"
|
"@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:
|
metascraper-title@^4.8.5:
|
||||||
version "4.8.5"
|
version "4.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-4.8.5.tgz#406de3b443442b34cfffba207d4b53de9343ad98"
|
resolved "https://registry.yarnpkg.com/metascraper-title/-/metascraper-title-4.8.5.tgz#406de3b443442b34cfffba207d4b53de9343ad98"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user