discord-dynamic-music-bot-addon
Version:
Music bot addon for bot
72 lines • 3.5 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// @ts-ignore Declaration files does not exist.
const simple_youtube_api_1 = __importDefault(require("simple-youtube-api"));
class Youtube {
constructor(key) {
this.simpleYoutubeApi = new simple_youtube_api_1.default(key);
}
async getVideoInfo(url) {
const video = await this.simpleYoutubeApi.getVideo(url, { 'part': ['statistics', 'id', 'snippet', 'contentDetails'] });
return await this.formatVideo(video);
}
async searchOnLuck(searchQuery) {
const videos = await this.simpleYoutubeApi.searchVideos(searchQuery, 1);
if (videos.length === 0)
throw new Error('Nothing found');
const video = await this.simpleYoutubeApi.getVideoByID(videos[0].id, { 'part': ['statistics', 'id', 'snippet', 'contentDetails'] });
return await this.formatVideo(video);
}
async formatVideo(video) {
const channel = await this.simpleYoutubeApi.getChannelByID(video.channel.id).catch(() => console.error);
const length = ((parseInt(video.duration.hours) * 60 * 60) + (parseInt(video.duration.minutes) * 60) + parseInt(video.duration.seconds)) * 1000;
let videoThumbnail = '';
if (video.thumbnails.high)
videoThumbnail = video.thumbnails.high.url;
else if (video.thumbnails.medium)
videoThumbnail = video.thumbnails.medium.url;
else if (video.thumbnails.default)
videoThumbnail = video.thumbnails.default.url;
else if (video.thumbnails.standard)
videoThumbnail = video.thumbnails.standard.url;
let channelThumbnail = '';
if (channel.thumbnails.medium)
channelThumbnail = channel.thumbnails.default.url;
else if (channel.thumbnails.default)
channelThumbnail = channel.thumbnails.standard.url;
else if (channel.thumbnails.standard)
channelThumbnail = channel.thumbnails.medium.url;
const videoData = {
// eslint-disable-next-line @typescript-eslint/camelcase
video_id: video.id,
// eslint-disable-next-line @typescript-eslint/camelcase
video_url: `https://youtu.be/${video.id}`,
// eslint-disable-next-line @typescript-eslint/camelcase
thumbnail_url: videoThumbnail,
title: video.title,
// eslint-disable-next-line @typescript-eslint/camelcase
length_seconds: length / 60 / 60,
published: video.publishedAt,
statistics: {
commentCount: parseInt(video.raw.statistics.commentCount),
dislikeCount: parseInt(video.raw.statistics.dislikeCount),
favoriteCount: parseInt(video.raw.statistics.favoriteCount),
likeCount: parseInt(video.raw.statistics.likeCount),
viewCount: parseInt(video.raw.statistics.viewCount),
},
author: {
id: channel.id,
name: channel.title,
avatar: channelThumbnail,
// eslint-disable-next-line @typescript-eslint/camelcase
channel_url: `https://www.youtube.com/channel/${channel.id}`,
},
};
return videoData;
}
}
exports.Youtube = Youtube;
//# sourceMappingURL=Youtube.js.map