ripunzel/src/methods/imgurAlbum.js

50 lines
1.5 KiB
JavaScript

'use strict';
const config = require('config');
const fetch = require('node-fetch');
const logger = require('../logger')(__filename);
async function imgurAlbumApi(host, post) {
const res = await fetch(`https://api.imgur.com/3/album/${host.id}`, {
headers: {
Authorization: `Client-ID ${config.methods.imgur.clientId}`,
},
});
const { data } = await res.json();
if (res.status !== 200) {
throw new Error(`Could not fetch info for imgur album '${host.id}': ${res.data.error}`);
}
const extract = config.library.extractSingleAlbumItem && data.images.length === 1;
if (extract) {
logger.verbose(`Extracting single item from album '${data.link}' (${post ? post.url : 'no post'})`);
}
return {
album: extract ? null : {
id: data.id,
url: data.link,
title: data.title,
description: data.description,
datetime: new Date(data.datetime * 1000),
original: data,
},
items: data.images.map(item => ({
extracted: extract,
id: item.id,
url: item.animated ? item.mp4 : item.link,
title: item.title || data.title || null,
description: item.description || data.description || null,
type: item.animated ? 'video/mp4' : item.type,
datetime: item.datetime * 1000,
original: item,
})),
};
}
module.exports = imgurAlbumApi;