117 lines
2.9 KiB
JavaScript
117 lines
2.9 KiB
JavaScript
var request = require('request');
|
|
var Promise = require('promise');
|
|
var google = require('googleapis');
|
|
var apikey = 'AIzaSyBCLnmbmjjHvfScHNj8PBqINjoyLTAXEjg';
|
|
|
|
var youtube = google.youtube('v3');
|
|
|
|
var requestPromise = function (url, urlArgs) {
|
|
var promise = new Promise(function(resolve, reject) {
|
|
request({
|
|
url: url,
|
|
qs: urlArgs,
|
|
json: false
|
|
}, function(error, response, body) {
|
|
if(!error && response.statusCode == 200) {
|
|
resolve(JSON.parse(body));
|
|
} else {
|
|
reject(error);
|
|
}
|
|
});
|
|
});
|
|
return promise;
|
|
};
|
|
|
|
module.exports = function(config) {
|
|
'use strict';
|
|
return {
|
|
getYoutubeVideoById: function(videoId) {
|
|
var promise = new Promise(function(resolve, reject) {
|
|
var videosParams = {
|
|
part: 'snippet,contentDetails,statistics',
|
|
id: videoId,
|
|
key: apikey
|
|
};
|
|
|
|
youtube.videos.list(videosParams, function(err, resp) {
|
|
console.log('respo', resp);
|
|
if(resp.items.length <= 0) {
|
|
reject('No results');
|
|
return;
|
|
}
|
|
|
|
var duration = resp.items[0].contentDetails.duration;
|
|
var formattedTime = duration.replace("PT","").replace("H","t ").replace("M","m ").replace("S","s");
|
|
var data = {
|
|
videoId: videoId,
|
|
url: 'https://youtu.be/'+videoId,
|
|
title: resp.items[0].snippet.title,
|
|
channelTitle: resp.items[0].snippet.channelTitle,
|
|
statistics: resp.items[0].statistics,
|
|
duration: formattedTime
|
|
};
|
|
resolve(data);
|
|
});
|
|
});
|
|
return promise;
|
|
},
|
|
getYoutubeVideo: function(query) {
|
|
|
|
var params = {
|
|
part: 'snippet',
|
|
q: query,
|
|
type: 'video',
|
|
order: 'viewCount',
|
|
key: apikey
|
|
};
|
|
|
|
var promise = new Promise(function(resolve, reject) {
|
|
youtube.search.list(params, function(err, resp) {
|
|
if (err) {
|
|
console.log('An error occured', err);
|
|
reject(err);
|
|
}
|
|
|
|
//console.log(resp.items[0].snippet.title);
|
|
//console.log(resp.items[0].snippet.channelTitle);
|
|
|
|
console.log(resp, videoId);
|
|
if(resp.items.length <= 0) {
|
|
reject('No results');
|
|
return;
|
|
}
|
|
|
|
var videoId = resp.items[0].id.videoId;
|
|
var data = {
|
|
videoId: videoId,
|
|
url: 'https://youtu.be/'+videoId,
|
|
title: resp.items[0].snippet.title,
|
|
channelTitle: resp.items[0].snippet.channelTitle
|
|
};
|
|
|
|
|
|
var videosParams = {
|
|
part: 'snippet,contentDetails,statistics',
|
|
id: videoId,
|
|
key: apikey
|
|
};
|
|
youtube.videos.list(videosParams, function(err2, resp2) {
|
|
console.log('respo', resp2);
|
|
if(resp2.items.length <= 0) {
|
|
reject('No results');
|
|
return;
|
|
}
|
|
data.statistics = resp2.items[0].statistics;
|
|
var duration = resp2.items[0].contentDetails.duration;
|
|
var formattedTime = duration.replace("PT","").replace("H","t ").replace("M","m ").replace("S","s");
|
|
data.duration = formattedTime;
|
|
resolve(data);
|
|
});
|
|
});
|
|
});
|
|
|
|
return promise;
|
|
}
|
|
};
|
|
};
|