From 10c642c94ffaed2bd4a97d2a2af73f9ab8c57d30 Mon Sep 17 00:00:00 2001 From: Scritches Date: Thu, 22 Mar 2018 03:04:14 -0400 Subject: [PATCH] fixed tabs/spaces and added spotify uri for desktop app linkability --- modules/spotify/spotify.js | 141 ++++++++++++++++++----------------- modules/spotify/strings.json | 10 +-- 2 files changed, 76 insertions(+), 75 deletions(-) diff --git a/modules/spotify/spotify.js b/modules/spotify/spotify.js index d143a6c..72e6743 100644 --- a/modules/spotify/spotify.js +++ b/modules/spotify/spotify.js @@ -19,81 +19,81 @@ var spotify = function(dbot) { this.spotifySearch = 'https://api.spotify.com/v1/search'; this.youtubeRegex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; this.spotifyText = '\u00039spotify\u000f'; - this.spotifyAuthUrl = 'https://accounts.spotify.com/api/token'; - - // ClientID and ClientSecret come from the spotify developer center; you will need to supply your own. - this.spotifyClientID = 'e2491c50879a4d7f900dcefcc74b7c90'; - this.spotifyClientSecret = 'b29da299612e4e659099ab3367ffa3f4'; - this.spotifyAuth = new Buffer(this.spotifyClientID + ":" + this.spotifyClientSecret).toString("base64"); + this.spotifyAuthUrl = 'https://accounts.spotify.com/api/token'; + + // ClientID and ClientSecret come from the spotify developer center; you will need to supply your own. + this.spotifyClientID = 'e2491c50879a4d7f900dcefcc74b7c90'; + this.spotifyClientSecret = 'b29da299612e4e659099ab3367ffa3f4'; + this.spotifyAuth = new Buffer(this.spotifyClientID + ":" + this.spotifyClientSecret).toString("base64"); - this.authenticate = function(callback) { - request({ - url: this.spotifyAuthUrl, - method: "POST", - headers: { Authorization: "Basic " + this.spotifyAuth }, - form: { grant_type: "client_credentials" } - }, function(error, response, body) { - if (!error && response.statusCode == 200) { - body = JSON.parse(body); - var token = body.access_token; - callback(token); - } - }); - }; + this.authenticate = function(callback) { + request({ + url: this.spotifyAuthUrl, + method: "POST", + headers: { Authorization: "Basic " + this.spotifyAuth }, + form: { grant_type: "client_credentials" } + }, function(error, response, body) { + if (!error && response.statusCode == 200) { + body = JSON.parse(body); + var token = body.access_token; + callback(token); + } + }); + }; this.lookup = function(link, callback) { - this.authenticate(function(token) { - request({ - 'url': this.spotifyLookup, - 'qs': { 'uri': link }, - 'json': true, - 'headers': { 'Authorization': "Bearer " + token } - }, function(error, response, body) { - if(!error && response.statusCode == 200) { - if(_.has(body, 'track')) { - callback(dbot.t('track', { - 'artist': _.map(body.track.artists, - function(a) { return a.name }).join(', '), - 'album': body.track.album.name, - 'track': body.track.name - })); - } else if(_.has(body, 'album')) { - callback(dbot.t('album', { - 'artist': body.album.artist, - 'album': body.album.name - })); - } else if(_.has(body, 'artist')) { - callback(dbot.t('artist', { - 'artist': body.artist.name - })); - } - } - }); - }.bind(this)); + this.authenticate(function(token) { + request({ + 'url': this.spotifyLookup, + 'qs': { 'uri': link }, + 'json': true, + 'headers': { 'Authorization': "Bearer " + token } + }, function(error, response, body) { + if(!error && response.statusCode == 200) { + if(_.has(body, 'track')) { + callback(dbot.t('track', { + 'artist': _.map(body.track.artists, + function(a) { return a.name }).join(', '), + 'album': body.track.album.name, + 'track': body.track.name + })); + } else if(_.has(body, 'album')) { + callback(dbot.t('album', { + 'artist': body.album.artist, + 'album': body.album.name + })); + } else if(_.has(body, 'artist')) { + callback(dbot.t('artist', { + 'artist': body.artist.name + })); + } + } + }); + }.bind(this)); }; this.api = { 'spotifySearch': function(query, callback) { this.authenticate(function(token) { - request({ - 'url': this.spotifySearch, - 'qs': { 'q': query, 'type': 'track' }, - 'json': true, - 'headers': { 'Authorization': "Bearer " + token } - }, function(error, response, body) { - if(!error && response.statusCode == 200) { - if(_.has(body, 'tracks') && body.tracks.items[0] && _.has(body.tracks.items[0], 'href')) { - var t = body.tracks.items[0].href; - ///*t = t.replace(/:/g, '/'); - t = t.replace(/api.spotify.com\/v1\/tracks/, - 'open.spotify.com/track'); - callback(body, t); - } else { - callback(false); - } - } - }); - }.bind(this)); + request({ + 'url': this.spotifySearch, + 'qs': { 'q': query, 'type': 'track' }, + 'json': true, + 'headers': { 'Authorization': "Bearer " + token } + }, function(error, response, body) { + if(!error && response.statusCode == 200) { + if(_.has(body, 'tracks') && body.tracks.items[0] && _.has(body.tracks.items[0], 'href')) { + var t = body.tracks.items[0].href; + ///*t = t.replace(/:/g, '/'); + t = t.replace(/api.spotify.com\/v1\/tracks/, + 'open.spotify.com/track'); + callback(body, t); + } else { + callback(false); + } + } + }); + }.bind(this)); } }; @@ -107,7 +107,8 @@ var spotify = function(dbot) { return a.name }).join(', '), 'album': body.tracks.items[0].album.name, 'track': body.tracks.items[0].name, - 'url': t + 'url': t, + 'uri': body.tracks.items[0].uri })); } else { event.reply(dbot.t('not-found')); @@ -125,8 +126,8 @@ var spotify = function(dbot) { dbot.api.link.getTitle(lastLink, function(title) { name = title.replace(' - YouTube', ''); this.api.spotifySearch(name, function(body, t) { - if(body) { - event.reply(dbot.t('found', { + if(body) { + event.reply(dbot.t('found', { 'artist': _.map(body.tracks.items[0].artists, function(a) { return a.name }).join(', '), 'album': body.tracks.items[0].album.name, diff --git a/modules/spotify/strings.json b/modules/spotify/strings.json index fd77444..7fad28e 100644 --- a/modules/spotify/strings.json +++ b/modules/spotify/strings.json @@ -21,11 +21,11 @@ "it": "[Track] {artist} – {track} (dall' album {album})" }, "found": { - "en": "[{url}] {artist} – {track} (from {album})", - "cy": "[{url}] {artist} – {track} (o'r albwm: {album})", - "de": "[{url}] {artist} – {track} (aus dem Album {album})", - "fr": "[{url}] {artist} – {track} (tiré de {album})", - "it": "[{url}] {artist} – {track} (dall' album {album})" + "en": "[{url} - {uri}] {artist} – {track} (from {album})", + "cy": "[{url} - {uri}] {artist} – {track} (o'r albwm: {album})", + "de": "[{url} - {uri}] {artist} – {track} (aus dem Album {album})", + "fr": "[{url} - {uri}] {artist} – {track} (tiré de {album})", + "it": "[{url} - {uri}] {artist} – {track} (dall' album {album})" }, "not-found": { "en": "No results.",