Added support for reddit preview fallback.

This commit is contained in:
2024-09-11 05:16:54 +02:00
parent 1ae51b18f8
commit 7f00e5b6b2
8 changed files with 69 additions and 17 deletions

View File

@@ -11,7 +11,7 @@ function imgurAlbum(post) {
}
}).then(res => res.json()).then(res => {
if(res.status !== 200) {
throw new Error(`Could not fetch info for imgur album '${post.host.id}': ${res.data.error}`);
throw new Error(`Could not fetch info for imgur album '${post.host.id}': '${res.data.error}'`);
}
const extract = config.library.album.extractSingleItem && res.data.images.length === 1;

View File

@@ -11,7 +11,7 @@ function imgurImage(post) {
}
}).then(res => res.json()).then(res => {
if(res.status !== 200) {
throw new Error(`Could not fetch info for imgur image '${post.host.id}': ${res.data.error}`);
throw new Error(`Could not fetch info for imgur image '${post.host.id}': '${res.data.error}'`);
}
return {

View File

@@ -3,6 +3,7 @@
const self = require('./self.js');
const redditImage = require('./redditImage.js');
const redditVideo = require('./redditVideo.js');
const redditPreview = require('./redditPreview.js');
const imgurImage = require('./imgurImage.js');
const imgurAlbum = require('./imgurAlbum.js');
const gfycat = require('./gfycat.js');
@@ -12,6 +13,7 @@ module.exports = {
self,
redditImage,
redditVideo,
redditPreview,
imgurImage,
imgurAlbum,
gfycat,

View File

@@ -0,0 +1,40 @@
'use strict';
const util = require('util');
const config = require('config');
const path = require('path');
const fetch = require('node-fetch');
const urlPattern = require('url-pattern');
const extensions = require('../extensions.json');
function reverseLookup(extension) {
return Object.keys(extensions).find(mime => extensions[mime] === extension);
};
function redditPreview(post) {
return Promise.resolve({
album: post.preview.length > 1 ? {
id: post.host.id || post.id,
url: post.url,
title: post.title,
datetime: post.datetime,
original: post
} : null,
items: post.preview.map(image => {
const urlComponents = new urlPattern('http(s)\\://i.redditmedia.com/:id(.:ext)(?*)').match(image.url);
return {
id: post.host.id || post.id,
url: image.url,
title: post.title,
datetime: post.datetime,
type: reverseLookup(`.${urlComponents.ext}`),
preview: true,
original: post
};
})
});
};
module.exports = redditPreview;