ripunzel/src/methods/tube.js

44 lines
1.2 KiB
JavaScript

'use strict';
const youtubedl = require('youtube-dl');
const dateFns = require('date-fns');
const logger = require('../logger')(__filename);
async function tube(host, post) {
try {
const data = await new Promise((resolve, reject) => {
youtubedl.getInfo(host.url, null, (error, info) => {
if (error) {
reject(error);
}
resolve(info);
});
});
host.id = data.display_id; // eslint-disable-line no-param-reassign
return {
album: null,
items: [
{
id: data.id,
url: data.url,
title: data.fulltitle || data.title,
description: data.description,
type: `video/${data.ext}`,
datetime: dateFns.format(data.upload_date, 'YYYYMMDD'),
original: data,
},
],
};
} catch (error) {
logger.warn(`Ignoring possible image or profile page '${host.url}' (${post ? post.permalink : 'no post'})`);
return null;
}
}
module.exports = tube;