2014-12-05 16:26:01 +00:00
|
|
|
"use strict";
|
|
|
|
var parse = require('url').parse;
|
2014-12-13 00:00:49 +00:00
|
|
|
var Promise = require('bluebird');
|
2014-12-05 16:26:01 +00:00
|
|
|
var request = require('superagent');
|
2014-12-13 00:00:49 +00:00
|
|
|
require('superagent-bluebird-promise');
|
2014-12-05 16:26:01 +00:00
|
|
|
|
|
|
|
module.exports.id = "youtube";
|
|
|
|
|
|
|
|
if (!process.env.YOUTUBE_KEY) {
|
|
|
|
console.warn("YOUTUBE_KEY environment variable not found, deactivating Youtube.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var credentials = {
|
|
|
|
key: process.env.YOUTUBE_KEY,
|
|
|
|
};
|
|
|
|
|
|
|
|
var apiRoot = "https://www.googleapis.com/youtube/v3";
|
|
|
|
|
2014-12-11 19:53:12 +00:00
|
|
|
module.exports.match = require('./url').match;
|
2014-12-05 16:26:01 +00:00
|
|
|
|
|
|
|
module.exports.search = function(data) {
|
|
|
|
var query, album;
|
|
|
|
var type = data.type;
|
|
|
|
|
|
|
|
if (type == "album") {
|
|
|
|
query = data.artist.name + " " + data.name;
|
|
|
|
album = data.name;
|
|
|
|
} else if (type == "track") {
|
2014-12-05 23:47:27 +00:00
|
|
|
query = data.artist.name + " " + data.name;
|
2014-12-05 16:26:01 +00:00
|
|
|
album = data.album.name
|
|
|
|
}
|
|
|
|
|
2014-12-11 19:53:12 +00:00
|
|
|
var path = "/search?part=snippet&q=" + encodeURIComponent(query) + "&type=video&videoCaption=any&videoCategoryId=10&key=" + credentials.key;
|
2014-12-05 23:47:27 +00:00
|
|
|
|
2014-12-13 00:00:49 +00:00
|
|
|
return request.get(apiRoot + path).promise().then(function(res) {
|
2014-12-05 16:26:01 +00:00
|
|
|
var result = res.body.items[0];
|
2014-12-05 23:47:27 +00:00
|
|
|
|
|
|
|
if (!result) {
|
2014-12-13 00:00:49 +00:00
|
|
|
return {service:"youtube", type: "video"};
|
2014-12-05 23:47:27 +00:00
|
|
|
} else {
|
2014-12-13 00:00:49 +00:00
|
|
|
return {
|
2014-12-05 23:47:27 +00:00
|
|
|
service: "youtube",
|
|
|
|
type: "video",
|
|
|
|
id: result.id.videoId,
|
|
|
|
name: result.snippet.title,
|
|
|
|
streamUrl: "https://www.youtube.com/watch?v=" + result.id.videoId,
|
|
|
|
purchaseUrl: null,
|
|
|
|
artwork: result.snippet.thumbnails.medium.url,
|
2014-12-13 00:00:49 +00:00
|
|
|
};
|
2014-12-05 23:47:27 +00:00
|
|
|
}
|
2014-12-05 16:26:01 +00:00
|
|
|
});
|
|
|
|
};
|