ripunzel/src/methods/gfycat.js

43 lines
1.2 KiB
JavaScript

'use strict';
const bhttp = require('bhttp');
const redgifs = require('./redgifs');
async function gfycat(host) {
const res = await bhttp.get(`https://api.gfycat.com/v1/gfycats/${host.id}`);
const data = await res.body;
if (data.errorMessage) {
const redirectRes = await bhttp.head(host.url, {
followRedirects: false,
});
if (redirectRes.statusCode === 301) {
// Gfycat redirects all NSFW gifs to RedGifs, likely the case
return redgifs({
...host,
url: `https://www.redgifs.com/watch/${host.id}`,
method: 'redgifs',
label: 'redgifs',
});
}
throw new Error(`Gfycat API returned error for source '${host.url}' (${res.status}): ${data.errorMessage}`);
}
return {
album: null,
items: [{
id: data.gfyItem.gfyName,
url: data.gfyItem.webmUrl,
title: data.gfyItem.title,
description: data.gfyItem.description,
type: 'video/webm',
datetime: new Date(data.gfyItem.createDate * 1000),
original: data.gfyItem,
}],
};
}
module.exports = gfycat;