'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;